K-fold 相互検証の簡単なガイド
データセットに対するモデルのパフォーマンスを評価するには、モデルによって行われた予測が観察されたデータとどの程度一致するかを測定する必要があります。
これを測定する最も一般的な方法は、次のように計算される平均二乗誤差 (MSE) を使用することです。
MSE = (1/n)*Σ(y i – f(x i )) 2
金:
- n:観測値の総数
- y i : i 番目の観測値の応答値
- f( xi ): i番目の観測値の予測応答値
モデルの予測が観測値に近づくほど、MSE は低くなります。
実際には、次のプロセスを使用して特定のモデルの MSE を計算します。
1.データセットをトレーニング セットとテスト セットに分割します。
2.トレーニング セットのデータのみを使用してモデルを作成します。
3.モデルを使用してテスト セットに関する予測を行い、テストの MSE を測定します。
MSE テストにより、モデルがこれまでに見たことのないデータに対してどの程度のパフォーマンスを発揮するかがわかります。ただし、単一のテスト セットを使用する場合の欠点は、MSE テストがトレーニング セットとテスト セットで使用される観測値に応じて大きく異なる可能性があることです。
この問題を回避する 1 つの方法は、毎回異なるトレーニング セットとテスト セットを使用してモデルを複数回適合させ、すべてのテスト MSE の平均としてテスト MSE を計算することです。
この一般的な方法は交差検証として知られており、その特定の形式はk 分割交差検証として知られています。
Kフォールド相互検証
K 分割相互検証では、次のアプローチを使用してモデルを評価します。
ステップ 1: データセットを、ほぼ同じサイズのk個のグループ、つまり「分割」にランダムに分割します。
ステップ 2: 保持セットとしてフォールドの 1 つを選択します。テンプレートを残りの k-1 個の折り目に合わせて調整します。張力がかかった層の観察結果に基づいて MSE テストを計算します。
ステップ 3: 毎回異なるセットを除外セットとして使用して、このプロセスをk回繰り返します。
ステップ 4: テストの全体的な MSE を、テストのk個の MSE の平均として計算します。
テスト MSE = (1/k)*ΣMSE i
金:
- k:折り数
- MSE i : i回目の反復で MSE をテストします
Kの選び方
一般に、k 分割交差検証で使用する分割数が多いほど、MSE テストのバイアスは低くなりますが、分散は高くなります。逆に、使用する折り目の数が少ないほど、バイアスは高くなりますが、分散は低くなります。これは、機械学習におけるバイアスと分散のトレードオフの典型的な例です。
実際には、通常は 5 ~ 10 層の層を使用することを選択します。 『統計学習の概要』で説明したように、この折り数はバイアスと分散の間の最適なバランスを提供し、テストの MSE の信頼できる推定値を提供することが示されています。
要約すると、k 分割相互検証における k の選択に関連するバイアス分散のトレードオフが存在します。
通常、これらの考慮事項を考慮すると、k = 5 または k = 10 を使用して k 分割交差検証を実行します。これは、これらの値により、過度に高いバイアスや非常に高い分散が発生しないテスト誤り率推定値が得られることが経験的に示されているためです。
– ページ 184、統計学習の概要
K-Fold 相互検証の利点
データセットを単一のトレーニング セットと単一のテスト セットに分割すると、テスト セット内の観測値に基づいて計算されたテスト MSE は、トレーニング セットとテスト セットで使用される観測値に応じて大きく異なる可能性があります。
k 分割交差検証を使用すると、トレーニング セットとテスト セットのいくつかの異なるバリエーションを使用して MSE テストを計算できます。これにより、テストの MSE の不偏推定値を取得できる可能性が大幅に高まります。
K 分割相互検証は、モデルをn回ではなくk回適合させるだけでよいため、Leave-One-Out 相互検証 (LOOCV)よりも計算上の利点も得られます。
フィッティングに長時間かかるモデルの場合、k 分割交差検証は LOOCV よりもはるかに速くテスト MSE を計算できます。多くの場合、十分な数の分割を使用すれば、各アプローチで計算されたテスト MSE は非常に似たものになります。
K-Fold 相互検証拡張機能
k 分割交差検証には、次のようないくつかの拡張機能があります。
k 分割交差検証の繰り返し:ここでは、k 分割交差検証が単純にn回繰り返されます。トレーニング セットとテスト セットが混合されるたびに、テスト MSE 推定値の偏りはさらに減少しますが、通常の k 分割相互検証よりも完了までに時間がかかります。
Leave-One-Out 相互検証:これは、 k = nである k 分割相互検証の特殊なケースです。この方法の詳細については、こちらをご覧ください。
層別 k 分割交差検証:これは、各分割が全体を代表するようにデータセットが再配置される k 分割交差検証のバージョンです。 Kohaviによって指摘されているように、この方法は、通常の k 分割相互検証と比較して、バイアスと分散の間のより良いトレードオフを提供する傾向があります。
ネストされた相互検証:これは、各相互検証分割で k 分割相互検証が実行される場所です。これは、モデルの評価中にハイパーパラメーター調整を実行するためによく使用されます。