R의 leave-one-out 교차 검증(예제 포함)
데이터 세트에 대한 모델의 성능을 평가하려면 모델의 예측이 관찰된 데이터와 얼마나 잘 일치하는지 측정해야 합니다.
이를 수행하기 위해 일반적으로 사용되는 방법은 다음 접근 방식을 사용하는 Leave-One-Out Cross-Validation(LOOCV) 이라고 합니다.
1. 훈련 세트의 일부로 하나의 관측치를 제외한 모든 관찰을 사용하여 데이터 세트를 훈련 세트와 테스트 세트로 분할합니다.
2. 훈련 세트의 데이터만 사용하여 모델을 만듭니다.
3. 모델을 이용하여 모델에서 제외된 관측값의 반응값을 예측하고 평균제곱오차(MSE)를 계산합니다.
4. 이 과정을 n 번 반복합니다. 모든 테스트 MSE의 평균으로 테스트 MSE를 계산합니다.
R에서 LOOCV를 실행하는 가장 쉬운 방법은 R의 캐럿 라이브러리에서 trainControl() 함수를 사용하는 것입니다.
이 튜토리얼에서는 이 함수를 사용하여 R의 특정 모델에 대해 LOOCV를 수행하는 방법에 대한 빠른 예를 제공합니다.
예: R의 Leave-One-Out 교차 검증
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
다음 코드는 다중 선형 회귀 모델을 R의 이 데이터 세트에 맞추고 LOOCV를 수행하여 모델 성능을 평가하는 방법을 보여줍니다.
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " LOOCV ") #fit a regression model and use LOOCV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of LOOCV print(model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Leave-One-Out Cross-Validation Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... Resampling results: RMSE Rsquared MAE 3.619456 0.6186766 3.146155 Tuning parameter 'intercept' was held constant at a value of TRUE
결과를 해석하는 방법은 다음과 같습니다.
- 10개의 서로 다른 샘플을 사용하여 10개의 모델을 구축했습니다. 각 모델은 2개의 예측 변수를 사용했습니다.
- 전처리가 수행되지 않았습니다. 즉, 모델을 피팅하기 전에 어떤 방식으로든 데이터를 확장 하지 않았습니다.
- 10개의 샘플을 생성하는 데 사용한 리샘플링 방법은 Leave-One-Out 교차 검증이었습니다.
- 각 훈련 세트의 표본 크기는 9였습니다.
- RMSE: 제곱평균제곱근 오류. 이는 모델의 예측과 실제 관찰 간의 평균 차이를 측정합니다. RMSE가 낮을수록 모델이 실제 관측치를 더 정확하게 예측할 수 있습니다.
- Rsquared: 모델에 의한 예측과 실제 관찰 간의 상관 관계를 측정한 것입니다. R-제곱이 높을수록 모델이 실제 관측치를 더 정확하게 예측할 수 있습니다.
- MAE: 평균 절대 오차입니다. 이는 모델에 의한 예측과 실제 관찰 간의 평균 절대 차이입니다. MAE가 낮을수록 모델이 실제 관측치를 더 정확하게 예측할 수 있습니다.
결과에 제공된 세 가지 측정값(RMSE, R-제곱 및 MAE) 각각은 게시되지 않은 데이터에 대한 모델 성능에 대한 아이디어를 제공합니다.
실제로 우리는 일반적으로 여러 다른 모델을 적합하고 여기에 제시된 결과에서 제공되는 세 가지 측정항목을 비교하여 어떤 모델이 가장 낮은 테스트 오류율을 생성하므로 사용하기에 가장 좋은 모델인지 결정합니다.