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

이제 x1x2를 예측 변수로 사용하고 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() 함수는 많은 잠재적 인수를 허용합니다. 이 기능에 대한 전체 문서는 여기에서 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 학습 모델에 대한 추가 정보를 제공합니다.

K-폴드 교차 검증 소개
Leave-One-Out 교차 검증 소개
머신러닝에서 과적합이란 무엇인가요?

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다