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
Що таке переобладнання в машинному навчанні?