Chuẩn hoá

Machine Learning với PySpark

Andrew Collier

Data Scientist, Fathom Data

Đặc trưng: Chỉ vài cái

Bộ dữ liệu với vài đặc trưng

Machine Learning với PySpark

Đặc trưng: Quá nhiều

Bộ dữ liệu với quá nhiều đặc trưng

Machine Learning với PySpark

Đặc trưng: Đã chọn

Chọn đặc trưng từ bộ dữ liệu có nhiều đặc trưng

Machine Learning với PySpark

Hàm mất mát (ôn lại)

Hồi quy tuyến tính nhằm tối thiểu hoá MSE.

Hàm mất mát MSE

Machine Learning với PySpark

Hàm mất mát có chuẩn hoá

Hồi quy tuyến tính nhằm tối thiểu hoá MSE.

Hàm mất mát MSE với hạng chuẩn hoá

Thêm một hạng chuẩn hoá phụ thuộc vào hệ số.

Machine Learning với PySpark

Hạng chuẩn hoá

Thêm một hạng chuẩn hoá vào hàm mất mát.

Hạng chuẩn hoá có thể là

  • Lasso — giá trị tuyệt đối của hệ số
  • Ridge — bình phương hệ số

Cũng có thể pha trộn Lasso và Ridge.

Độ mạnh chuẩn hoá do tham số $\lambda$ quyết định:

  • $\lambda = 0$ — không chuẩn hoá (hồi quy chuẩn)
  • $\lambda = \infty$ — chuẩn hoá hoàn toàn (mọi hệ số bằng 0)
Machine Learning với PySpark

Xe hơi (tiếp)

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 với PySpark

Xe: Hồi quy tuyến tính

Khớp một mô hình Hồi quy tuyến tính (chuẩn) cho dữ liệu huấn luyện.

regression = LinearRegression(labelCol='consumption').fit(cars_train)
# RMSE trên dữ liệu kiểm tra
0.708699086182001

Xem các hệ số:

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 với PySpark

Xe: Hồi quy Ridge

# alpha = 0 | lambda = 0.1 -> Ridge
ridge = LinearRegression(labelCol='consumption', elasticNetParam=0, regParam=0.1)
ridge.fit(cars_train)
# RMSE
0.724535609745491
# Hệ số Ridge
DenseVector([ 0.001, 0.137, -0.395, -0.822, -0.450, -0.582, -0.806, 0.008,  0.029, 0.001])
# Hệ số Hồi quy tuyến tính
DenseVector([-0.012, 0.174, -0.897, -1.445, -0.985, -1.071, -1.335, 0.189, -0.780, 1.160])
Machine Learning với PySpark

Xe: Hồi quy Lasso

# alpha = 1 | lambda = 0.1 -> Lasso
lasso = LinearRegression(labelCol='consumption', elasticNetParam=1, regParam=0.1)
lasso.fit(cars_train)
# RMSE
0.771988667026998
# Hệ số Lasso
DenseVector([   0.0,   0.0,    0.0, -0.056,    0.0,    0.0,    0.0, 0.026,    0.0,   0.0])
# Hệ số Ridge
DenseVector([ 0.001, 0.137, -0.395, -0.822, -0.450, -0.582, -0.806, 0.008,  0.029, 0.001])
# Hệ số Hồi quy tuyến tính
DenseVector([-0.012, 0.174, -0.897, -1.445, -0.985, -1.071, -1.335, 0.189, -0.780, 1.160])
Machine Learning với PySpark

Chuẩn hoá → mô hình đơn giản

Machine Learning với PySpark

Preparing Video For Download...