交差検証を理解する

学習に使った問題だけで高得点でも、初めて見るデータで役に立つとは限りません。交差検証は、手元のデータの一部を順番に評価用へ回し、未知データへの性能を見積もる方法です。分割方法を誤ると成績が過大に見えるため、データ漏洩や時系列の扱いも学びます。

この単元で学ぶこと

  • k分割交差検証の学習・検証の役割を説明できる
  • モデル選択と最終テストを区別できる
  • 前処理・時系列・同一対象による漏洩を防ぐ分割を選べる

本文解説

評価したいものは汎化性能 モデルは学習データから規則を推定します。学習データの正解に合わせ過ぎて、未知データへの予測が悪くなる状態が過学習です。学習に使わなかったデータへ予測し、正解と比べて初めて汎化性能の手掛かりが得られます。ただし評価データが実際の利用状況を代表していることが必要です。

訓練・検証・テスト 訓練データはパラメータを学習するため、検証データはモデルやハイパーパラメータを選ぶために使います。テストデータは選び終えたモデルの最終評価用として取り分けます。テスト結果を見ながら何度も設定を選び直すと、そのデータが実質的に検証用になり、独立な最終評価ではなくなります。

5分割の手順 開発用データ1,000件を200件ずつA~Eの5群に分けます。1回目はB~Eの800件で学習しAの200件で評価、2回目はA・C~Eで学習しBで評価します。これを5回繰り返し、各群が一度ずつ検証用になります。各回のモデルは原則として新しく学習し、前の回で検証データを覚えた状態を引き継ぎません。

スコアをまとめる 各回の正解率が0.80、0.85、0.75、0.90、0.80なら単純平均は0.82です。この例は群のサイズが等しいため、全検証予測の正解数を合計しても同じ正解率になります。平均だけでなくばらつきも見ます。0.82は将来の正解率を保証せず、分割やデータの偏りで変わる見積値です。

前処理も分割の内側へ 標準化の平均・標準偏差、欠損値の補完値、特徴選択の判断は各回の訓練データだけから求め、検証データにはその処理を適用します。分割前に全データから統計量を求めると、検証データの情報が学習側へ混じります。学習器と前処理をパイプラインにまとめて交差検証すると、処理手順の漏れを防ぎやすくなります。

層化とグループ分割 陽性が少ない分類では各群にクラス比率をおおむね保つ層化分割が役立ちます。ただし同じ患者の複数検査や同じ顧客の履歴が別の群へ入ると、対象固有の特徴を覚えて高得点になることがあります。未知の患者へ適用したいなら患者単位で群を分け、同一患者を訓練と検証へまたがせません。

未来予測では時間を守る 過去の売上から将来を予測する場合、ランダム分割では未来のデータで過去を予測する形になり得ます。過去の期間で学習し、その後の期間で検証するように時点を順に動かします。特徴量も予測時点までに取得できる情報だけで作ります。分割だけ正しくても翌日の結果を特徴に入れれば漏洩です。

選択後の流れと演習 交差検証で設定を選び、開発用データ全体で学習し直し、最後に保持していたテストデータで評価します。候補を大量に試すほど検証結果への適合にも注意が必要で、モデル選択過程ごとの評価には入れ子の交差検証もあります。演習:患者10人から各100件の画像を得て未知患者へ適用するなら、画像のランダム分割より患者単位の分割が適切です。

図解

5分割の一回を取り出す
テストデータはこのモデル選択の外側に保持します。

重要ポイント

  • 各回で訓練用と検証用を分け、k回の成績をまとめる。
  • 前処理の学習も各訓練群だけで行う。
  • データの時間順序や対象単位に合う分割を選ぶ。
  • 選択後まで最終テストを独立に保つ。

間違えやすい点

  • 全データで標準化してから分割しない。
  • 同一患者の別画像を独立な未知対象と扱わない。
  • 検証の平均値を将来性能の保証としない。

用語解説

汎化性能
学習に用いていないデータに対する予測能力。
ハイパーパラメータ
学習率やモデルの複雑さなど、通常の学習前に設定する条件。
データ漏洩
予測時に使えない情報や検証側の情報が学習・選択へ入り込むこと。
層化分割
クラスの割合などを各群におおむね保つ分割。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。