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

Машинное обучение с PySpark

Andrew Collier

Data Scientist, Fathom Data

Полный набор данных

Машинное обучение с PySpark

Набор данных, разбитый на обучающую и тестовую выборки

Машинное обучение с PySpark

Обучающие данные, разбитые на несколько фолдов

Машинное обучение с PySpark

Фолд за фолдом — первый фолд

Первый фолд

Машинное обучение с PySpark

Фолд за фолдом — второй фолд

Второй фолд

Машинное обучение с PySpark

Фолд за фолдом — остальные фолды

Оставшиеся фолды

Машинное обучение с PySpark

Снова о данных об автомобилях

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|
+------+---+-----------+
Машинное обучение с PySpark

Оценщик и метрика

Объект для построения модели — может быть конвейером.

regression = LinearRegression(labelCol='consumption')

Объект для оценки качества модели.

evaluator = RegressionEvaluator(labelCol='consumption')
Машинное обучение с PySpark

Сетка параметров и кросс-валидатор

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

Сетка значений параметров (пока пустая).

params = ParamGridBuilder().build()

Объект кросс-валидации.

cv = CrossValidator(estimator=regression,
                    estimatorParamMaps=params,
                    evaluator=evaluator,
                    numFolds=10, seed=13)
Машинное обучение с PySpark

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

Применяем кросс-валидацию к обучающим данным.

cv = cv.fit(cars_train)

Какое среднее значение RMSE по фолдам?

cv.avgMetrics
[0.800663722151572]
Машинное обучение с PySpark

Кросс-валидатор работает как модель

Получаем предсказания на исходных тестовых данных.

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

Значительно меньше, чем RMSE при кросс-валидации.

# RMSE from cross-validation
0.800663722151572

Простая разбивка на обучение и тест дала бы излишне оптимистичную оценку качества модели.

Машинное обучение с PySpark

Кросс-валидация для всех моделей!

Машинное обучение с PySpark

Preparing Video For Download...