Как Карет генерирует модель OLS с перекрестной проверкой K-кратности? - PullRequest
0 голосов
/ 22 сентября 2018

Допустим, у меня есть некоторый общий набор данных, для которого регрессия OLS является лучшим выбором.Итак, я генерирую модель с некоторыми терминами первого порядка и решаю использовать каретку в R для моих оценок коэффициентов регрессии и оценок ошибок.

В каретке это в конечном итоге:

k10_cv = trainControl(method="cv", number=10)
ols_model = train(Y ~ X1 + X2 + X3, data = my_data, trControl = k10_cv, method = "lm")

Оттуда я могу получить информацию о регрессии, используя summary(ols_model), а также могу получить дополнительную информацию, просто позвонив ols_model.

Когда я просто смотрю на ols_model, это RMSE / R-квадрат/ MAE рассчитывается с помощью типичного CV-кратного подхода?Кроме того, когда генерируется модель, которую я вижу в summary(ols_model), обучается ли эта модель по всему набору данных или это среднее из моделей, сгенерированных по каждому из сгибов?

Если нет, в интересах торговлидисперсия для смещения, есть ли способ приобрести модель OLS в рамках Caret, которую обучают по одному разу за раз?

1 Ответ

0 голосов
/ 26 сентября 2018

Вот воспроизводимые данные для вашего примера.

library("caret")
my_data <- iris

k10_cv <- trainControl(method="cv", number=10)

set.seed(100)
ols_model <- train(Sepal.Length ~  Sepal.Width + Petal.Length + Petal.Width,
                  data = my_data, trControl = k10_cv, method = "lm")


> ols_model$results
  intercept      RMSE  Rsquared       MAE     RMSESD RsquaredSD      MAESD
1      TRUE 0.3173942 0.8610242 0.2582343 0.03881222 0.04784331 0.02960042

1) Приведенное выше значение ols_model$results основано на среднем значении каждой из приведенных ниже различных выборок:

> (ols_model$resample)
        RMSE  Rsquared       MAE Resample
1  0.3386472 0.8954600 0.2503482   Fold01
2  0.3154519 0.8831588 0.2815940   Fold02
3  0.3167943 0.8904550 0.2441537   Fold03
4  0.2644717 0.9085548 0.2145686   Fold04
5  0.3769947 0.8269794 0.3070733   Fold05
6  0.3720051 0.7792611 0.2746565   Fold06
7  0.3258501 0.8095141 0.2647466   Fold07
8  0.2962375 0.8530810 0.2731445   Fold08
9  0.3059100 0.8351535 0.2611982   Fold09
10 0.2615792 0.9286246 0.2108592   Fold10

Т.е.

> mean(ols_model$resample$RMSE)==ols_model$results$RMSE
[1] TRUE

2) Модель обучается на всем тренировочном наборе. Вы можете проверить это, используя lm или указав method = "none" для trainControl.

 coef(lm(Sepal.Length ~  Sepal.Width + Petal.Length + Petal.Width, data = my_data))
 (Intercept)  Sepal.Width Petal.Length  Petal.Width 
   1.8559975    0.6508372    0.7091320   -0.5564827 

Что совпадает с ols_model$finalModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...