Walidacja krzyżowa

Uczenie maszynowe z PySpark

Andrew Collier

Data Scientist, Fathom Data

Pełny zbiór danych

Uczenie maszynowe z PySpark

Zbiór danych podzielony na treningowy i testowy

Uczenie maszynowe z PySpark

Dane treningowe podzielone na wiele foldów

Uczenie maszynowe z PySpark

Fold po foldzie – pierwszy fold

Pierwszy fold

Uczenie maszynowe z PySpark

Fold po foldzie – drugi fold

Drugi fold

Uczenie maszynowe z PySpark

Fold po foldzie – pozostałe foldy

Pozostałe foldy

Uczenie maszynowe z PySpark

Powrót do zbioru 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|
+------+---+-----------+
Uczenie maszynowe z PySpark

Estymator i ewaluator

Obiekt do budowania modelu. Może to być pipeline.

regression = LinearRegression(labelCol='consumption')

Obiekt do oceny wydajności modelu.

evaluator = RegressionEvaluator(labelCol='consumption')
Uczenie maszynowe z PySpark

Siatka i walidator krzyżowy

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Siatka wartości parametrów (na razie pusta).

params = ParamGridBuilder().build()

Obiekt walidacji krzyżowej.

cv = CrossValidator(estimator=regression,
                    estimatorParamMaps=params,
                    evaluator=evaluator,
                    numFolds=10, seed=13)
Uczenie maszynowe z PySpark

Walidator krzyżowy wymaga trenowania

Zastosowanie walidacji krzyżowej do danych treningowych.

cv = cv.fit(cars_train)

Średni RMSE dla wszystkich foldów?

cv.avgMetrics
[0.800663722151572]
Uczenie maszynowe z PySpark

Walidatory krzyżowe działają jak modele

Prognozowanie na oryginalnych danych testowych.

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

Znacznie mniejszy niż RMSE z walidacji krzyżowej.

# RMSE from cross-validation
0.800663722151572

Proste podziały na zbiór treningowy i testowy dają zbyt optymistyczną ocenę wydajności modelu.

Uczenie maszynowe z PySpark

Walidacja krzyżowa dla wszystkich modeli!

Uczenie maszynowe z PySpark

Preparing Video For Download...