Крос-валідація

Machine Learning з PySpark

Andrew Collier

Data Scientist, Fathom Data

Повний набір даних

Machine Learning з PySpark

Набір даних, розбитий на тренувальну й тестову вибірки

Machine Learning з PySpark

Тренувальні дані поділено на кілька фолдів

Machine Learning з PySpark

Фолд за фолдом — перший фолд

Перший фолд

Machine Learning з PySpark

Фолд за фолдом — другий фолд

Другий фолд

Machine Learning з PySpark

Фолд за фолдом — інші фолди

Решта фолдів

Machine Learning з PySpark

Повертаємось до 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 з PySpark

Оцінювач і засіб оцінювання

Обʼєкт для побудови моделі. Це може бути конвеєр (pipeline).

regression = LinearRegression(labelCol='consumption')

Обʼєкт для оцінювання якості моделі.

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

Сітка й крос-валідація

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Сітка значень параметрів (поки порожня).

params = ParamGridBuilder().build()

Обʼєкт крос-валідації.

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

Крос-валідатори теж треба тренувати

Застосуйте крос-валідацію до тренувальних даних.

cv = cv.fit(cars_train)

Яке середнє RMSE по фолдах?

cv.avgMetrics
[0.800663722151572]
Machine Learning з PySpark

Крос-валідатори поводяться як моделі

Зробіть передбачення на початкових тестових даних.

evaluator.evaluate(cv.transform(cars_test))
# RMSE на тестових даних
0.745974203928479

Набагато менше, ніж крос-валідаційне RMSE.

# RMSE з крос-валідації
0.800663722151572

Простий поділ train-test дав би надто оптимістичну оцінку якості моделі.

Machine Learning з PySpark

Крос-валідуйте всі моделі!

Machine Learning з PySpark

Preparing Video For Download...