더북(TheBook)

5.5.5 LOOCV 교차 검증

교차 검증을 극단적으로 사용하면, 사례 개수만큼 많은 버킷으로 교차 검증을 할 수 있다고 이야기했습니다. 사례가 20개라면 훈련-테스트 분리를 20번 하고, 모델을 20번 적합하고, 20번 테스트하며, 20개의 평가 결과를 얻습니다. 이러한 방식의 교차 검증을 Leave-One-Out CV(LOOCV)라고 합니다. 이 방식을 이용하면 우리가 만드는 모델들이 거의 비슷한 학습 데이터를 사용하여 학습하게 됩니다. 흥미롭지요? 20개의 사례로 LOOCV를 실행하면 두 개의 모델이 사용하는 학습 데이터의 90%가 겹칩니다. 궁금하면 그림 5-7로 돌아가 보세요.

 

In [32]:

linreg = linear_model.LinearRegression()
diabetes = datasets.load_diabetes()

loo = skms.LeaveOneOut()
scores = skms.cross_val_score(linreg, diabetes.data, diabetes.target, cv=loo, scoring='neg_mean_squared_error')

scores = pd.Series(np.sqrt(-scores))
df = pd.DataFrame({'RMSE':scores})
df.index.name = 'Repeat'

display(df.describe().T)

ax = sns.swarmplot(y='RMSE', data=df)
ax.set_xlabel('Over LOO\nTrain-Test Splits');

count

mean

std

min

25%

50%

75%

max

RMSE

442.000

44.356

32.197

0.208

18.482

39.547

63.973

158.236

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.