Regularizare

Machine Learning cu PySpark

Andrew Collier

Data Scientist, Fathom Data

Caracteristici: Doar câteva

Set de date cu câteva caracteristici

Machine Learning cu PySpark

Caracteristici: Prea multe

Set de date cu multe caracteristici

Machine Learning cu PySpark

Caracteristici: Selectate

Selectarea caracteristicilor dintr-un set de date cu multe caracteristici

Machine Learning cu PySpark

Funcția de pierdere (revizuită)

Regresia liniară urmărește minimizarea MSE.

Funcția de pierdere Mean Square Error

Machine Learning cu PySpark

Funcția de pierdere cu regularizare

Regresia liniară urmărește minimizarea MSE.

Funcția de pierdere Mean Square Error cu termen de regularizare

Adăugați un termen de regularizare care depinde de coeficienți.

Machine Learning cu PySpark

Termenul de regularizare

Un termen de regularizare suplimentar este adăugat la funcția de pierdere.

Termenul de regularizare poate fi

  • Lasso — valoarea absolută a coeficienților
  • Ridge — pătratul coeficienților

Este posibilă și o combinație între Lasso și Ridge.

Intensitatea regularizării este determinată de parametrul $\lambda$:

  • $\lambda = 0$ — fără regularizare (regresie standard)
  • $\lambda = \infty$ — regularizare completă (toți coeficienții zero)
Machine Learning cu PySpark

Mașini din nou

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 cu PySpark

Mașini: Regresie liniară

Antrenați un model de regresie liniară (standard) pe datele de antrenament.

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

Examinați coeficienții:

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 cu PySpark

Mașini: Regresie Ridge

# 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 cu PySpark

Mașini: Regresie Lasso

# 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 cu PySpark

Regularizare → model simplu

Machine Learning cu PySpark

Preparing Video For Download...