Validation croisée

Apprentissage automatique avec PySpark

Andrew Collier

Data Scientist, Fathom Data

Jeu de données complet

Apprentissage automatique avec PySpark

Jeu de données scindé en ensembles d'entraînement et de test

Apprentissage automatique avec PySpark

Données d'entraînement découpées en plusieurs plis

Apprentissage automatique avec PySpark

Pli après pli - premier pli

Premier pli

Apprentissage automatique avec PySpark

Pli après pli - deuxième pli

Deuxième pli

Apprentissage automatique avec PySpark

Pli après pli - autres plis

Plis restants

Apprentissage automatique avec PySpark

Cars : retour

cars.select('mass', 'cyl', 'consumption').show(5)
+------+---+-----------+
|  mass|cyl|consumption|
+------+---+-----------+
|1451.0|  6|       9.05|
|1129.0|  4|       6.53|
|1399.0|  4|       7.84|
|1147.0|  4|       7.84|
|1111.0|  4|       9.05|
+------+---+-----------+
Apprentissage automatique avec PySpark

Estimateur et évaluateur

Un objet pour entraîner le modèle. Peut être un pipeline.

regression = LinearRegression(labelCol='consumption')

Un objet pour évaluer les performances.

evaluator = RegressionEvaluator(labelCol='consumption')
Apprentissage automatique avec PySpark

Grille et validateur croisé

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Une grille de valeurs d'hyperparamètres (vide pour l'instant).

params = ParamGridBuilder().build()

L'objet de validation croisée.

cv = CrossValidator(estimator=regression,
                    estimatorParamMaps=params,
                    evaluator=evaluator,
                    numFolds=10, seed=13)
Apprentissage automatique avec PySpark

Les validateurs croisés s'entraînent aussi

Appliquez la validation croisée aux données d'entraînement.

cv = cv.fit(cars_train)

Quelle est la RMSE moyenne sur les plis ?

cv.avgMetrics
[0.800663722151572]
Apprentissage automatique avec PySpark

Les validateurs croisés se comportent comme des modèles

Faites des prédictions sur les données de test initiales.

evaluator.evaluate(cv.transform(cars_test))
# RMSE sur les données de test
0.745974203928479

Bien plus petite que la RMSE validée croisée.

# RMSE de la validation croisée
0.800663722151572

Un simple découpage train-test aurait donné une vision trop optimiste des performances.

Apprentissage automatique avec PySpark

Validez tous les modèles en croisé !

Apprentissage automatique avec PySpark

Preparing Video For Download...