Validation croisée

Machine Learning avec PySpark

Andrew Collier

Data Scientist, Fathom Data

Ensemble de données complet

Machine Learning avec PySpark

Ensemble partagé en entraînement et test

Machine Learning avec PySpark

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

Machine Learning avec PySpark

Pli après pli - premier pli

Premier pli

Machine Learning avec PySpark

Pli après pli - deuxième pli

Deuxième pli

Machine Learning avec PySpark

Pli après pli - autres plis

Plis restants

Machine Learning avec PySpark

Voitures : rappel

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|
+------+---+-----------+
Machine Learning avec PySpark

Estimateur et évaluateur

Un objet pour construire le modèle. Il peut s'agir d'un pipeline.

regression = LinearRegression(labelCol='consumption')

Un objet pour évaluer la performance du modèle.

evaluator = RegressionEvaluator(labelCol='consumption')
Machine Learning avec PySpark

Grille et validateur croisé

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Une grille de valeurs de paramè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)
Machine Learning avec PySpark

Les validateurs croisés doivent aussi être entraînés

Appliquer 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]
Machine Learning avec PySpark

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

Faire 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

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

# RMSE de la validation croisée
0.800663722151572

Une simple division entraînement-test aurait donné une vision trop optimiste de la performance du modèle.

Machine Learning avec PySpark

Validez croisé tous les modèles !

Machine Learning avec PySpark

Preparing Video For Download...