とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

【R言語】k分割交差検証

k分割交差検証


Rによる統計学習入門 5章リサンプリング法に出ていた
交差検証について再確認する。

データセットをk個に分割して、残りの(k-1)個を検証にする手法である。
LOOCVより計算量が減るだけでなく、テスト誤差をより高い精度で推定できる。
(バイアスと分散のトレードオフ
このへんはバイアスと分散の概念を理解する必要がある。

library(ISLR)
library(glmnet)
library(boot)
df_Auto <- Auto

set.seed(17)

#k分割交差検証を行う
#データセットを10分割して9個で訓練1個で平均二乗誤差MSEを計算する。そして10回繰り返しの平均値を計算する
cv_err_10 <- rep(0,10)
i<-1
for(i in 1:10){
 glmfit <- glm(mpg~poly(horsepower,i),data=df_Auto)#poly(x,5)で1-5次まで含む
 cv_err_10[i] <- cv.glm(df_Auto,glmfit,K=10)$delta[1]
}
cv_err_10
#cv.glmはいくつかの要素を持つリストを生成
#deltaがMSE