Regularization

Machine Learning with PySpark

Andrew Collier

Data Scientist, Fathom Data

ฟีเจอร์: มีเพียงไม่กี่ตัว

ชุดข้อมูลที่มีฟีเจอร์ไม่กี่ตัว

Machine Learning with PySpark

ฟีเจอร์: มากเกินไป

ชุดข้อมูลที่มีฟีเจอร์จำนวนมาก

Machine Learning with PySpark

ฟีเจอร์: ที่คัดเลือกแล้ว

การเลือกฟีเจอร์จากชุดข้อมูลที่มีฟีเจอร์จำนวนมาก

Machine Learning with PySpark

ฟังก์ชัน Loss (ทบทวน)

Linear regression มีเป้าหมายเพื่อลดค่า MSE ให้น้อยที่สุด

ฟังก์ชัน loss แบบ Mean Square Error

Machine Learning with PySpark

ฟังก์ชัน Loss พร้อม Regularization

Linear regression มีเป้าหมายเพื่อลดค่า MSE ให้น้อยที่สุด

ฟังก์ชัน loss แบบ Mean Square Error พร้อม regularization term

เพิ่ม regularization term ที่ขึ้นอยู่กับค่าสัมประสิทธิ์

Machine Learning with PySpark

Regularization Term

เพิ่ม regularization term เข้าไปในฟังก์ชัน loss

รูปแบบของ regularization term มีดังนี้

  • Lasso — ค่าสัมบูรณ์ของสัมประสิทธิ์
  • Ridge — กำลังสองของสัมประสิทธิ์

สามารถผสม Lasso และ Ridge เข้าด้วยกันได้เช่นกัน

ความเข้มของ regularization กำหนดด้วยพารามิเตอร์ $\lambda$:

  • $\lambda = 0$ — ไม่มี regularization (regression แบบปกติ)
  • $\lambda = \infty$ — regularization เต็มรูปแบบ (ทุกสัมประสิทธิ์เป็นศูนย์)
Machine Learning with PySpark

ข้อมูลรถยนต์อีกครั้ง

assembler = VectorAssembler(inputCols=[
    'mass', 'cyl', 'type_dummy', 'density_line', 'density_quad', 'density_cube'
], outputCol='features')
cars = assembler.transform(cars)
+-----------------------------------------------------------------------------+-----------+
|features                                                                     |consumption|
+-----------------------------------------------------------------------------+-----------+
|[1451.0,6.0,1.0,0.0,0.0,0.0,0.0,303.8743455497,63.63860639785,13.32745683724]|9.05       |
|[1129.0,4.0,0.0,0.0,1.0,0.0,0.0,244.2137140385,52.82580879050,11.42673778726]|6.53       |
|[1399.0,4.0,0.0,0.0,1.0,0.0,0.0,307.6753903672,67.66557958374,14.88136784335]|7.84       |
|[1147.0,4.0,0.0,1.0,0.0,0.0,0.0,264.1031545014,60.81122599620,14.00212433714]|7.84       |
+-----------------------------------------------------------------------------+-----------+
Machine Learning with PySpark

รถยนต์: Linear Regression

ฝึกโมเดล Linear Regression แบบมาตรฐานกับข้อมูลชุด training

regression = LinearRegression(labelCol='consumption').fit(cars_train)
# RMSE on testing data
0.708699086182001

ตรวจสอบค่าสัมประสิทธิ์:

regression.coefficients
DenseVector([-0.012, 0.174, -0.897, -1.445, -0.985, -1.071, -1.335, 0.189, -0.780, 1.160])
Machine Learning with PySpark

รถยนต์: Ridge Regression

# alpha = 0 | lambda = 0.1 -> Ridge
ridge = LinearRegression(labelCol='consumption', elasticNetParam=0, regParam=0.1)
ridge.fit(cars_train)
# RMSE
0.724535609745491
# Ridge coefficients
DenseVector([ 0.001, 0.137, -0.395, -0.822, -0.450, -0.582, -0.806, 0.008,  0.029, 0.001])
# Linear Regression coefficients
DenseVector([-0.012, 0.174, -0.897, -1.445, -0.985, -1.071, -1.335, 0.189, -0.780, 1.160])
Machine Learning with PySpark

รถยนต์: Lasso Regression

# alpha = 1 | lambda = 0.1 -> Lasso
lasso = LinearRegression(labelCol='consumption', elasticNetParam=1, regParam=0.1)
lasso.fit(cars_train)
# RMSE
0.771988667026998
# Lasso coefficients
DenseVector([   0.0,   0.0,    0.0, -0.056,    0.0,    0.0,    0.0, 0.026,    0.0,   0.0])
# Ridge coefficients
DenseVector([ 0.001, 0.137, -0.395, -0.822, -0.450, -0.582, -0.806, 0.008,  0.029, 0.001])
# Linear Regression coefficients
DenseVector([-0.012, 0.174, -0.897, -1.445, -0.985, -1.071, -1.335, 0.189, -0.780, 1.160])
Machine Learning with PySpark

Regularization → โมเดลที่เรียบง่ายขึ้น

Machine Learning with PySpark

Preparing Video For Download...