Validazione incrociata

Machine Learning con PySpark

Andrew Collier

Data Scientist, Fathom Data

Dataset completo

Machine Learning con PySpark

Dataset diviso in training e test

Machine Learning con PySpark

Dati di training suddivisi in più pieghe

Machine Learning con PySpark

Pieghe su pieghe - prima piega

Prima piega

Machine Learning con PySpark

Pieghe su pieghe - seconda piega

Seconda piega

Machine Learning con PySpark

Pieghe su pieghe - altre pieghe

Pieghe rimanenti

Machine Learning con PySpark

Auto: ripasso

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

Stimatore e valutatore

Un oggetto per costruire il modello. Può essere una pipeline.

regression = LinearRegression(labelCol='consumption')

Un oggetto per valutare le prestazioni.

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

Griglia e cross-validator

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Una griglia di valori dei parametri (per ora vuota).

params = ParamGridBuilder().build()

L'oggetto di validazione incrociata.

cv = CrossValidator(estimator=regression,
                    estimatorParamMaps=params,
                    evaluator=evaluator,
                    numFolds=10, seed=13)
Machine Learning con PySpark

Anche i cross-validator vanno addestrati

Applica la validazione incrociata ai dati di training.

cv = cv.fit(cars_train)

Qual è la RMSE media tra le pieghe?

cv.avgMetrics
[0.800663722151572]
Machine Learning con PySpark

I cross-validator si comportano come modelli

Fai previsioni sui dati di test originali.

evaluator.evaluate(cv.transform(cars_test))
# RMSE sui dati di test
0.745974203928479

Molto più bassa della RMSE con cross-validation.

# RMSE dalla cross-validation
0.800663722151572

Un semplice train-test split avrebbe dato una visione troppo ottimistica delle prestazioni.

Machine Learning con PySpark

Valida incrociata tutti i modelli!

Machine Learning con PySpark

Preparing Video For Download...