A: як використовувати traincontrol для контролю параметрів навчання


Щоб оцінити, наскільки модель здатна відповідати набору даних, нам потрібно проаналізувати її ефективність на основі спостережень, яких вона ніколи раніше не бачила.

Одним із найпоширеніших способів досягнення цього є використання k-кратної перехресної перевірки , яка використовує такий підхід:

1. Випадково розділіть набір даних на k груп, або «згорток», приблизно однакового розміру.

2. Виберіть одну зі складок як обмежувальний комплект. Відрегулюйте шаблон до решти k-1 складок. Розрахуйте випробування MSE на основі спостережень у шарі, який був натягнутий.

3. Повторіть цей процес k разів, кожного разу використовуючи інший набір як набір виключень.

4. Обчисліть загальну тестову MSE як середнє k тестових MSE.

Найпростіший спосіб виконати k-кратну перехресну перевірку в R — це використовувати функції trainControl() і train() із бібліотеки кареток у R.

Функція trainControl() використовується для визначення параметрів навчання (наприклад, тип перехресної перевірки для використання, кількість згорток для використання тощо), а функція train() використовується для фактичного підгонки моделі до даних. .

У наступному прикладі показано, як на практиці використовувати функції trainControl() і train() .

Приклад: як використовувати trainControl() у R

Припустімо, що ми маємо такий набір даних у R:

 #create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
                 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
                 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

Тепер припустімо, що ми використовуємо функцію lm() , щоб підігнати модель множинної лінійної регресії до цього набору даних, використовуючи x1 і x2 як змінні прогностики та y як змінну відповіді:

 #fit multiple linear regression model to data
fit <- lm(y ~ x1 + x2, data=df)

#view model summary
summary(fit)

Call:
lm(formula = y ~ x1 + x2, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.6650 -1.9228 -0.3684 1.2783 5.0208 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 21.2672 6.9927 3.041 0.0188 *
x1 0.7803 0.6942 1.124 0.2981  
x2 -1.1253 0.4251 -2.647 0.0331 *
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.093 on 7 degrees of freedom
Multiple R-squared: 0.801, Adjusted R-squared: 0.7441 
F-statistic: 14.09 on 2 and 7 DF, p-value: 0.003516

Використовуючи коефіцієнти у вихідних даних моделі, ми можемо записати підігнану модель регресії:

y = 21,2672 + 0,7803*(x 1 ) – 1,1253 (x 2 )

Щоб отримати уявлення про те, наскільки добре ця модель працює на невидимих спостереженнях , ми можемо використати k-кратну перехресну перевірку.

У наведеному нижче коді показано, як використовувати функцію trainControl() пакета каретки для визначення перехресної перевірки k-кратності ( method=”cv” ), яка використовує 5 згорток ( number=5 ).

Потім ми передаємо цю функцію trainControl() у функцію train() , щоб фактично виконати k-кратну перехресну перевірку:

 library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " cv ", number = 5 )

#fit a regression model and use k-fold CV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl)

#view summary of k-fold CV               
print (model)

Linear Regression 

10 samples
 2 predictors

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 8, 8, 8, 8, 8 
Resampling results:

  RMSE Rsquared MAE     
  3.612302 1 3.232153

Tuning parameter 'intercept' was held constant at a value of TRUE

З результату ми бачимо, що модель була підігнана 5 разів із використанням розміру вибірки з 8 спостережень кожного разу.

Кожного разу модель використовувалася для прогнозування значень 2 збережених спостережень, і кожного разу обчислювалися такі показники:

  • RMSE: середня квадратична помилка. Це вимірює середню різницю між прогнозами, зробленими моделлю, і фактичними спостереженнями. Чим нижче RMSE, тим точніше модель може передбачити фактичні спостереження.
  • MAE: Середня абсолютна похибка. Це середня абсолютна різниця між прогнозами, зробленими моделлю, і фактичними спостереженнями. Чим нижчий MAE, тим точніше модель може передбачити фактичні спостереження.

Середнє значення RMSE і MAE для п’яти компонентів відображається в результаті:

  • RMSE: 3,612302
  • MAE: 3,232153

Ці показники дають нам уявлення про ефективність моделі на нових даних.

На практиці ми зазвичай підбираємо кілька різних моделей і порівнюємо ці показники, щоб визначити, яка модель найкраще працює з невидимими даними.

Наприклад, ми могли б підібрати модель поліноміальної регресії та виконати K-кратну перехресну перевірку, щоб побачити порівняння показників RMSE і MAE з моделлю множинної лінійної регресії.

Примітка №1: у цьому прикладі ми вирішили використовувати k=5 згорток, але ви можете вибрати будь-яку кількість згорток. На практиці ми зазвичай обираємо від 5 до 10 шарів, оскільки це оптимальна кількість шарів, яка забезпечує надійний рівень помилок тесту.

Примітка №2 : функція trainControl() приймає багато потенційних аргументів. Ви можете знайти повну документацію для цієї функції тут .

Додаткові ресурси

Наступні посібники надають додаткову інформацію про навчальні моделі:

Вступ до перехресної перевірки K-Fold
Вступ до перехресної перевірки Leave-One-Out
Що таке переобладнання в машинному навчанні?

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *