n-폴드 교차 검증으로 모델링 절차 평가하기
이 연습 문제에서는 이전 문제에서 만든 3-폴드 교차 검증 계획 splitPlan을 사용해, mpg$hwy로 mpg$cty를 예측하는 모델의 예측값을 만들어 보겠습니다.
dframe이 학습 데이터라면, 다음과 같이 프레임에 교차 검증 예측 열을 추가할 수 있습니다:
# 길이에 맞는 열 초기화
dframe$pred.cv <- 0
# k는 폴드의 개수입니다
# splitPlan은 교차 검증 계획입니다
for(i in 1:k) {
# i번째 분할 가져오기
split <- splitPlan[[i]]
# 이 분할의 학습 데이터에서
# 모델을 학습합니다
# (여기서는 lm)
model <- lm(fmla, data = dframe[split$train,])
# 이 분할의 적용 데이터에 대해
# 예측을 수행합니다
dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}
교차 검증은 전체 데이터로 만든 모델이 새로운 데이터에서 얼마나 잘 작동할지 예측합니다. 테스트/학습 데이터 분할과 마찬가지로, 좋은 모델링 절차라면 교차 검증 성능과 학습 성능이 서로 비슷해야 합니다.
데이터 프레임 mpg, 교차 검증 계획 splitPlan, 그리고 rmse() 함수는 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
R로 하는 Supervised Learning: 회귀
연습 안내
splitPlan의 3-폴드 교차 검증을 실행하고 예측값을mpg$pred.cv열에 저장하세요.lm()과 공식cty ~ hwy를 사용하세요.
- 모든
mpg데이터를 사용해 선형 회귀 모델(공식cty ~ hwy)을 만들고, 예측값을mpg$pred에 할당하세요. rmse()를 사용해 전체 모델의 예측값(mpg$pred)에 대한 제곱근 평균제곱오차를 구하세요.rmse()는 예측값과 실제 결과 두 개의 인수를 받는다는 점을 기억하세요.- 교차 검증 예측의 제곱근 평균제곱오차를 구하세요. 두 값이 비슷한가요?
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# mpg is available
summary(mpg)
# splitPlan is available
str(splitPlan)
# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0
for(i in ___) {
split <- ___
model <- lm(___, data = ___)
mpg$pred.cv[___] <- predict(___, newdata = ___)
}
# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))
# Get the rmse of the full model's predictions
___(___, ___)
# Get the rmse of the cross-validation predictions
___(___, ___)