A: traincontrol을 사용하여 훈련 매개변수를 제어하는 방법
모델이 데이터 세트에 얼마나 잘 맞는지 평가하려면 이전에 본 적이 없는 관찰에 대한 성능을 분석해야 합니다.
이를 달성하는 가장 일반적인 방법 중 하나는 다음 접근 방식을 사용하는 k-겹 교차 검증을 사용하는 것입니다.
1. 데이터 세트를 대략 동일한 크기의 k개 그룹, 즉 “접기”로 무작위로 나눕니다.
2. 접힌 부분 중 하나를 구속 세트로 선택합니다. 템플릿을 나머지 k-1 접기로 조정합니다. 인장된 플라이의 관찰에 대한 MSE 테스트를 계산합니다.
3. 매번 다른 세트를 제외 세트로 사용하여 이 프로세스를 k 번 반복합니다.
4. k개의 테스트 MSE의 평균으로 전체 테스트 MSE를 계산합니다.
R에서 k-겹 교차 검증을 수행하는 가장 쉬운 방법은 R의 캐럿 라이브러리에서 trainControl() 및 train() 함수를 사용하는 것입니다.
trainControl() 함수는 훈련 매개변수(예: 사용할 교차 검증 유형, 사용할 접기 수 등)를 지정하는 데 사용되며 train() 함수는 실제로 모델을 데이터에 맞추는 데 사용됩니다. .
다음 예에서는 trainControl() 및 train() 함수를 실제로 사용하는 방법을 보여줍니다.
예: R에서 trainControl()을 사용하는 방법
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
이제 x1 과 x2를 예측 변수로 사용하고 y를 응답 변수로 사용하여 다중 선형 회귀 모델을 이 데이터 세트에 맞추기 위해 lm() 함수를 사용한다고 가정합니다.
#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() 함수를 사용하여 5개 접기( number=5 )를 사용하는 k-겹 교차 검증( method=”cv” )을 지정하는 방법을 보여줍니다.
그런 다음 이 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
결과에서 우리는 모델이 매번 8개의 관측값의 표본 크기를 사용하여 5 번 적합되었음을 알 수 있습니다.
매번 모델은 유지된 2개의 관찰 값을 예측하는 데 사용되었으며 매번 다음 측정항목이 계산되었습니다.
- RMSE: 제곱평균제곱근 오류. 이는 모델의 예측과 실제 관찰 간의 평균 차이를 측정합니다. RMSE가 낮을수록 모델이 실제 관측치를 더 정확하게 예측할 수 있습니다.
- MAE: 평균 절대 오차입니다. 이는 모델에 의한 예측과 실제 관찰 간의 평균 절대 차이입니다. MAE가 낮을수록 모델이 실제 관측치를 더 정확하게 예측할 수 있습니다.
5개 구성 요소에 대한 RMSE 및 MAE 값의 평균이 결과에 표시됩니다.
- RMSE: 3.612302
- MAE: 3.232153
이러한 측정항목을 통해 새로운 데이터에 대한 모델 성능에 대한 아이디어를 얻을 수 있습니다.
실제로 우리는 일반적으로 여러 가지 다른 모델을 적합하고 이러한 측정항목을 비교하여 보이지 않는 데이터에서 어떤 모델이 가장 잘 작동하는지 결정합니다.
예를 들어 다항식 회귀 모델을 적합하고 K-겹 교차 검증을 수행하여 RMSE 및 MAE 측정항목이 다중 선형 회귀 모델과 어떻게 비교되는지 확인할 수 있습니다.
참고 #1: 이 예에서는 k=5 폴드를 사용하도록 선택했지만 원하는 만큼의 폴드 수를 선택할 수 있습니다. 실제로 우리는 일반적으로 5~10겹 사이를 선택합니다. 이는 신뢰할 수 있는 테스트 오류율을 생성하는 최적의 플라이 수임이 입증되었기 때문입니다.
참고 #2 : trainControl() 함수는 많은 잠재적 인수를 허용합니다. 이 기능에 대한 전체 문서는 여기에서 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 학습 모델에 대한 추가 정보를 제공합니다.