R での leave-one-out 相互検証 (例あり)
データセットに対するモデルのパフォーマンスを評価するには、モデルによって行われた予測が観察されたデータとどの程度一致するかを測定する必要があります。
これを行うために一般的に使用される方法は、Leave-One-Out Cross-Validation (LOOCV)として知られており、次のアプローチを使用します。
1. 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 が低いほど、モデルは実際の観測値をより正確に予測できます。
- R2 乗:これは、モデルによって行われた予測と実際の観測値の間の相関関係の尺度です。 R 二乗が大きいほど、モデルは実際の観測をより正確に予測できます。
- MAE:平均絶対誤差。これは、モデルによって行われた予測と実際の観測値の間の平均絶対差です。 MAE が低いほど、モデルは実際の観測をより正確に予測できます。
結果で提供される 3 つの測定値 (RMSE、R 二乗、MAE) のそれぞれから、未公開データに対するモデルのパフォーマンスのアイデアが得られます。
実際には、通常、いくつかの異なるモデルを適合させ、ここで示した結果によって提供される 3 つの指標を比較して、どのモデルが最も低いテストエラー率を生成するか、したがって使用するのに最適なモデルを決定します。