1 クロスバリデーションの概要
1.1 背景と目的
機械学習モデルは、学習データに適合するだけでなく、未知データでも同程度の精度を示すことが望ましい。単一の学習・検証分割に依存すると、偶然の分割結果に左右され、推定した汎化性能が不安定になりやすい。クロスバリデーションは、データを複数の部分に分けて繰り返し検証することで、分割の揺らぎをならし、モデルの性能をより堅牢に見積もることを目的とする。加えて、複数モデルの比較や、ハイパーパラメータの選定にも広く利用される。
1.2 基本概念(分割・学習・検証)
データセットは複数の「分割(fold)」に分割される。各反復では、ある分割を検証用に取り置きし、残りを用いてモデルを学習する。学習済みモデルは、取り置きした分割に対して評価指標を計算する。この手順を分割数の回だけ繰り返すことで、各データ点が検証側に一度は含まれる構造が作られる。最終的な性能推定は、各反復で得られた評価値を集計して求めることが一般的である。
1.3 通常の評価指標との関係
クロスバリデーションは「評価の枠組み」であり、精度そのものを定義する評価指標は別途選ぶ。分類であれば正解率、適合率・再現率、F1、ROC-AUC、回帰であれば平均二乗誤差や決定係数などが用いられる。重要なのは、各反復で算出された指標が、同じ前処理条件と同じ評価手順のもとで比較可能であるようにする点である。集計する際に平均を取るだけでなく、指標の分布に応じて分散やばらつきも同時に確認すると、モデルの安定性が読み取りやすくなる。
2 手法の種類
2.1 k分割交差検証
k分割交差検証では、データをk個の分割に分け、各反復で1分割を検証、残りを学習に用いる。反復回数はkであり、kが大きいほど学習データの割合が増える一方、計算負荷は増加する傾向がある。実務では、データ量と計算資源、期待する安定性のバランスによりkを決めることが多い。
2.1.1 ストラティファイドk分割(層化)
分類問題では、クラスの出現割合が分割ごとに大きく変わると、検証結果が不自然になり得る。ストラティファイドk分割は、各分割のクラス比率が全体の比率に近づくようにデータを割り付ける手法である。これにより、少数クラスを含む分割での評価が安定しやすくなる。
2.1.1.1 クラス不均衡への対応
クラス不均衡では、単純な指標(たとえば正解率)がモデルの実力を過小評価または過大評価する場合がある。そのため、層化による分割の安定化と、評価指標の選択(例:再現率やF1など)をセットで考えることが重要になる。さらに、学習時にクラス重み付けやサンプリング調整を行う場合は、それらが分割の外側情報を参照しないように設計する必要がある。
2.2 リーブワンアウト交差検証
リーブワンアウト交差検証(LOOCV)は、各反復で1サンプルのみを検証用として取り置きし、残り全体で学習する。分割が細かいため、データの利用率が高い点が利点とされる一方、反復回数がサンプル数に等しくなるため計算コストが大きくなりやすい。モデルが学習に時間を要する場合やデータが多い場合には適用が現実的でないことがある。
2.3 ホールドアウトとの比較
ホールドアウト法は、データを1回だけ学習用と検証用に分ける方法である。実装が容易で計算も軽いが、分割が1つしかないため結果のばらつきが大きくなり得る。クロスバリデーションは複数の分割で検証を行うため、推定の安定性を高めやすい。ただし、同じ計算予算で比較する必要があり、kの選び方やモデル学習のコストによっては、ホールドアウトが合理的な場合もある。
2.4 時系列交差検証
時系列データでは、未来の情報を過去の学習に混ぜると評価が過大になる。時系列交差検証は、検証区間が学習区間よりも後になるように分割を設計する。たとえば、順方向に区間をずらしながら検証する方式や、一定期間ずつ拡張しながら学習する方式が用いられる。目的は、実運用における「過去で学び、未来を予測する」条件を評価手順に反映することにある。
2.5 グループ交差検証
同一人物、同一設備、同一ユーザセッションなど「グループ」単位でデータが関連している場合、サンプル単位でランダムに分割すると、同一グループの情報が学習と検証の両方に漏れてしまうことがある。グループ交差検証は、グループをまたいで分割しないようにし、検証におけるデータリークを抑える。これにより、一般化性能の見積もりがより現実的になる。
2.5.1 データリーク防止の観点
データリークは、評価時に本来利用できない情報が学習側へ混入することで起こる。グループ交差検証は、この問題を分割設計の段階で抑制する。たとえば、同一ユーザのログが学習と検証に分散すると、ユーザ固有の癖が学習に含まれ、実際より高い性能が出る可能性がある。グループ境界を守ることは、評価の信頼性を確保する基本要件となる。
3 運用と実装の要点
3.1 データ前処理の扱い
前処理(欠損補完、標準化、エンコード、特徴量選択など)は学習データに対してパラメータを推定する操作を含むことが多い。クロスバリデーションでは、その推定を必ず各反復の学習部分に限定する必要がある。検証側の統計量を参照すると、評価が楽観的になり、汎化性能の見積もりが歪む。
3.1.1 前処理の学習範囲を分割内に限定する
実装上は、前処理とモデル学習を一連の「分割内手続き」として扱うことが重要である。具体的には、反復ごとに学習側データで前処理のパラメータを計算し、その変換を検証側に適用する。パイプライン化により、変換手順が反復ごとに再実行され、漏れが起きにくくなる。
3.2 ハイパーパラメータ選択との区別
クロスバリデーションは、性能評価に用いる場合と、ハイパーパラメータの選択に用いる場合がある。評価のためのクロスバリデーションでハイパーパラメータを決めてしまうと、その分割の情報に適合してしまい、評価値が実際より高く見積もられることがある。したがって、選択と評価は段階的に分ける設計が望ましい。
3.2.1 ネステッド交差検証
ネステッド交差検証は、外側のループで評価し、内側のループでハイパーパラメータ探索を行う構造である。内側で得た最良設定を外側の検証に適用することで、評価段階での情報漏れを抑えられる。計算量は増えるが、選択と評価の切り分けを厳密に行いたい場合に有効となる。
3.3 評価の集計方法(平均・分散・信頼区間)
反復ごとの指標は一般にばらつきを持つため、単一の平均値だけで判断すると見落としが生じる。平均は代表値として有用であり、分散や標準偏差は安定性を示す。さらに、サンプル数が十分であれば信頼区間の推定を併用することで、性能差が統計的に意味を持つかを議論しやすくなる。集計の方法は指標の性質に依存し、分布が歪む場合は適切な統計手法の選択が必要になる。
3.4 計算コストとサンプリングの工夫
kを増やすと学習回数が増えるため計算コストが増大する。モデルが重い場合、kを下げる、反復回数を調整する、探索空間を絞る、あるいは一部の探索をサンプリングで近似するなどの工夫が考えられる。加えて、計算資源が限られるときは、評価目的(比較・選択・探索)に応じて必要最小限の厳密さを設計することが実務上の要点となる。
4 実務での注意点と活用例
4.1 データリークの典型例と回避
典型的な問題は、前処理の統計量を全データから計算してから分割するケースである。標準化の平均・分散、欠損補完の集計、ターゲットに基づくエンコードなどは特に注意が必要である。回避策は、各反復の学習部分のみで前処理を学び、検証部分には変換を適用することに尽きる。加えて、特徴量生成における外部情報の参照や、時系列での並び順を崩す操作も漏れを招くため、手順の整合性を確認する。
4.2 異なる分割結果の解釈
クロスバリデーションでは反復ごとに得られる性能が一致しないことがある。解釈においては、平均だけでなく範囲や分散を確認し、どの分割で失敗しているかを見て判断する。特定の分割で極端に低い値が出る場合、データの偏りや前処理の不整合が疑われる。逆に分散が小さい場合は、モデルがデータ変動に対して比較的頑健である可能性が高まる。
4.3 モデル比較における使い分け
同じクロスバリデーション設定でも、比較対象の扱いで結論が変わることがある。たとえば、同一の前処理手順、同一の評価指標、同一の探索条件を保つ必要がある。さらに、目的が性能評価のみか、同時に設定選択を含むかによって、ネステッド構造の要否が変わる。モデル比較では、過剰に最適化された候補だけが優位に見える状況を避け、比較の公平性を維持することが重要である。
4.4 よくある失敗パターン(過剰最適化・指標の不整合)
過剰最適化は、ハイパーパラメータ探索で得た最良条件が、その探索用の評価データに過度に適合してしまうことで起こる。ネステッド交差検証や、評価と選択を分ける運用で抑制できることがある。指標の不整合もよくある。分類タスクで回し込み用の指標が実運用の目的と食い違うと、たとえクロスバリデーション上で改善が見えても目的に合わないモデルが選ばれる可能性がある。
4.5 利用場面別の選択ガイド
まずデータが独立同分布に近いか、時間順序が必要か、同一グループの関連が強いかを整理する。ランダムに分けてもリークの懸念が薄いならk分割が扱いやすい。クラス比率の差が大きい場合は層化を検討する。時系列では未来を混ぜない設計が前提となる。ユーザ単位や設備単位の関連が強いならグループ分割が適切である。最後に、計算予算と目的(単なる比較か、確実な選択か)に応じて、ネステッド交差検証を含む設計かを判断する。