Regularisatie

Machine Learning met PySpark

Andrew Collier

Data Scientist, Fathom Data

Features: Slechts een paar

Dataset met weinig features

Machine Learning met PySpark

Features: Te veel

Dataset met veel features

Machine Learning met PySpark

Features: Geselecteerd

Selectie van features uit een dataset met veel features

Machine Learning met PySpark

Verliesfunctie (opnieuw)

Lineaire regressie minimaliseert de MSE.

Verliesfunctie voor Mean Square Error

Machine Learning met PySpark

Verliesfunctie met regularisatie

Lineaire regressie minimaliseert de MSE.

Verliesfunctie MSE met regularisatieterm

Voeg een regularisatieterm toe die afhangt van de coëfficiënten.

Machine Learning met PySpark

Regularisatieterm

Er wordt een extra term voor regularisatie toegevoegd aan de verliesfunctie.

De regularisatieterm kan zijn

  • Lasso — absolute waarde van de coëfficiënten
  • Ridge — kwadraat van de coëfficiënten

Een mix van Lasso en Ridge is ook mogelijk.

Sterkte van regularisatie bepaald door parameter $\lambda$:

  • $\lambda = 0$ — geen regularisatie (standaard regressie)
  • $\lambda = \infty$ — volledige regularisatie (alle coëfficiënten nul)
Machine Learning met PySpark

Weer auto’s

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

Auto’s: Lineaire regressie

Pas een (standaard) lineair regressiemodel op de trainingsdata.

regression = LinearRegression(labelCol='consumption').fit(cars_train)
# RMSE op testdata
0.708699086182001

Bekijk de coëfficiënten:

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

Auto’s: Ridge-regressie

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

Auto’s: Lasso-regressie

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

Regularisatie → eenvoudig model

Machine Learning met PySpark

Preparing Video For Download...