Правильное обучение модели

Обучение с учителем в R: регрессия

Nina Zumel and John Mount

Win-Vector, LLC

Модель может работать значительно лучше на обучающих данных, чем на новых.

  • Training $R^2$: 0.9; Test $R^2$: 0.15 -- Переобучение
Обучение с учителем в R: регрессия

Разбивка на обучающую и тестовую выборки

Рекомендуется при достаточном объёме данных

Обучение с учителем в R: регрессия

Пример: модель женской безработицы

  • Обучение: 66 строк, тест: 30 строк
Обучение с учителем в R: регрессия

Качество модели: обучающая vs. тестовая выборка

  • Обучающая выборка: RMSE 0.71, $R^2$ 0.8
  • Тестовая выборка: RMSE 0.93, $R^2$ 0.75
Обучение с учителем в R: регрессия

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

Предпочтителен, когда данных недостаточно для выделения тестовой выборки

Обучение с учителем в R: регрессия

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

Обучение с учителем в R: регрессия

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

Обучение с учителем в R: регрессия

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

Обучение с учителем в R: регрессия

Создание плана кросс-валидации

library(vtreat)
splitPlan <- kWayCrossValidation(nRows, nSplits, NULL, NULL)
  • nRows: количество строк в обучающих данных
  • nSplits: количество фолдов (разбиений) при кросс-валидации
    • например, nfolds = 3 для трёхкратной кросс-валидации
  • остальные 2 аргумента здесь не нужны
Обучение с учителем в R: регрессия

Создание плана кросс-валидации

library(vtreat)
splitPlan <- kWayCrossValidation(10, 3, NULL, NULL)

Первый фолд (A и B — обучение, C — тест)

splitPlan[[1]]
$train
1  2  4  5  7  9 10
$app
3 6 8

Обучение на A и B, тест на C и т.д...

split <- splitPlan[[1]]
model <- lm(fmla, data = df[split$train,])
df$pred.cv[split$app] <- predict(model, newdata = df[split$app,])
Обучение с учителем в R: регрессия

Итоговая модель

Обучение с учителем в R: регрессия

Пример: модель безработицы

Тип метрики RMSE $R^2$
обучающая 0.7082675 0.8029275
тестовая 0.9349416 0.7451896
кросс-валидация 0.8175714 0.7635331
Обучение с учителем в R: регрессия

Давайте потренируемся!

Обучение с учителем в R: регрессия

Preparing Video For Download...