Validare încrucișată

Machine Learning cu PySpark

Andrew Collier

Data Scientist, Fathom Data

Set de date complet

Machine Learning cu PySpark

Set de date împărțit în antrenament și testare

Machine Learning cu PySpark

Date de antrenament împărțite în mai multe folduri

Machine Learning cu PySpark

Fold după fold - primul fold

Primul fold

Machine Learning cu PySpark

Fold după fold - al doilea fold

Al doilea fold

Machine Learning cu PySpark

Fold după fold - celelalte folduri

Folduri rămase

Machine Learning cu PySpark

Revenire la setul Cars

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

Estimator și evaluator

Un obiect pentru construirea modelului. Poate fi un pipeline.

regression = LinearRegression(labelCol='consumption')

Un obiect pentru evaluarea performanței modelului.

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

Grilă și validare încrucișată

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

O grilă de valori ale parametrilor (deocamdată goală).

params = ParamGridBuilder().build()

Obiectul de validare încrucișată.

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

Validatorii încrucișați necesită antrenament

Aplicarea validării încrucișate pe datele de antrenament.

cv = cv.fit(cars_train)

Care este RMSE mediu pe folduri?

cv.avgMetrics
[0.800663722151572]
Machine Learning cu PySpark

Validatorii încrucișați acționează ca modele

Generarea predicțiilor pe datele de testare originale.

evaluator.evaluate(cv.transform(cars_test))
# RMSE on testing data
0.745974203928479

Mult mai mic decât RMSE-ul din validarea încrucișată.

# RMSE from cross-validation
0.800663722151572

O simplă împărțire antrenament-testare ar fi oferit o vedere prea optimistă asupra performanței modelului.

Machine Learning cu PySpark

Validare încrucișată pentru toate modelele!

Machine Learning cu PySpark

Preparing Video For Download...