A: как использовать traincontrol для управления параметрами обучения.
Чтобы оценить, насколько хорошо модель соответствует набору данных, нам необходимо проанализировать ее производительность на наблюдениях, которых она никогда раньше не видела.
Одним из наиболее распространенных способов добиться этого является использование k-кратной перекрестной проверки , которая использует следующий подход:
1. Случайным образом разделите набор данных на k групп или «складок» примерно одинакового размера.
2. Выберите одну из складок в качестве ограничительного набора. Подгоните шаблон под оставшиеся k-1 складок. Рассчитайте тест MSE на основе наблюдений в слое, который был натянут.
3. Повторите этот процесс k раз, каждый раз используя другой набор в качестве набора исключений.
4. Рассчитайте общую MSE теста как среднее значение MSE k теста.
Самый простой способ выполнить 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
Используя коэффициенты в выходных данных модели, мы можем написать подобранную регрессионную модель:
у = 21,2672 + 0,7803*(х 1 ) – 1,1253 (х 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 наблюдений каждый раз.
Каждый раз модель затем использовалась для прогнозирования значений двух сохраненных наблюдений, и каждый раз рассчитывались следующие показатели:
- RMSE: среднеквадратическая ошибка. Это измеряет среднюю разницу между предсказаниями модели и фактическими наблюдениями. Чем ниже RMSE, тем точнее модель может предсказать фактические наблюдения.
- МАЭ: Средняя абсолютная ошибка. Это средняя абсолютная разница между предсказаниями модели и фактическими наблюдениями. Чем ниже MAE, тем точнее модель может предсказать фактические наблюдения.
В результате отображается среднее значение RMSE и MAE для пяти компонентов:
- СКО: 3,612302
- МАЭ: 3.232153
Эти метрики дают нам представление о производительности модели на новых данных.
На практике мы обычно подбираем несколько разных моделей и сравниваем эти показатели, чтобы определить, какая модель лучше всего работает с невидимыми данными.
Например, мы могли бы подогнать модель полиномиальной регрессии и выполнить для нее K-кратную перекрестную проверку, чтобы увидеть, как метрики RMSE и MAE сравниваются с моделью множественной линейной регрессии.
Примечание № 1. В этом примере мы решили использовать k = 5 сгибов, но вы можете выбрать любое количество сгибов. На практике мы обычно выбираем от 5 до 10 слоев, поскольку это оптимальное количество слоев, обеспечивающее надежный уровень ошибок при тестировании.
Примечание №2 . Функция trainControl() принимает множество потенциальных аргументов. Полную документацию по этой функции вы можете найти здесь .
Дополнительные ресурсы
В следующих руководствах представлена дополнительная информация о моделях обучения:
Введение в перекрестную проверку K-Fold
Введение в перекрестную проверку с исключением одного
Что такое переобучение в машинном обучении?