Regolarizzazione

Machine Learning con PySpark

Andrew Collier

Data Scientist, Fathom Data

Feature: poche

Dataset con poche feature

Machine Learning con PySpark

Feature: troppe

Dataset con molte feature

Machine Learning con PySpark

Feature: selezionate

Selezione di feature da un dataset con molte feature

Machine Learning con PySpark

Funzione di loss (richiamo)

La regressione lineare minimizza la MSE.

Funzione di loss MSE

Machine Learning con PySpark

Loss con regolarizzazione

La regressione lineare minimizza la MSE.

Funzione di loss MSE con termine di regolarizzazione

Aggiungi un termine di regolarizzazione che dipende dai coefficienti.

Machine Learning con PySpark

Termine di regolarizzazione

Si aggiunge un termine di regolarizzazione alla funzione di loss.

Il termine di regolarizzazione può essere

  • Lasso — valore assoluto dei coefficienti
  • Ridge — quadrato dei coefficienti

È anche possibile un mix di Lasso e Ridge.

Intensità della regolarizzazione data da $\lambda$:

  • $\lambda = 0$ — nessuna regolarizzazione (regressione standard)
  • $\lambda = \infty$ — regolarizzazione completa (tutti i coefficienti a zero)
Machine Learning con PySpark

Ancora auto

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

Auto: Regressione lineare

Adatta un modello di Regressione Lineare (standard) ai dati di training.

regression = LinearRegression(labelCol='consumption').fit(cars_train)
# RMSE sui dati di test
0.708699086182001

Esamina i coefficienti:

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

Auto: Regressione Ridge

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

Auto: Regressione Lasso

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

Regolarizzazione → modello semplice

Machine Learning con PySpark

Preparing Video For Download...