汎化性能とは?評価方法・過学習との関係・改善策を解説

汎化性能とは、機械学習モデルが学習に使っていない未知のデータに対しても、安定して予測できる能力のことです。訓練データの正解率が高くても、それだけで汎化性能が高いとは限りません。

モデルが訓練データの偶然のノイズまで覚えてしまうと、訓練時には良く見えても、実際の利用時には誤りが増えます。

汎化性能とは?未知データでの予測力を表す考え方

モデルの性能は、学習に使ったデータで測る訓練性能と、まだ見ていないデータで測る汎化性能に分けられます。訓練性能は、学習がどこまで進んでいるかを確認する材料です。一方で、サービスや業務で必要になるのは、将来入力されるデータへの性能です。

訓練誤差とテスト誤差の差が大きいときは、過学習、データの分割ミス、分布の違いなどを疑います。

汎化性能は、いくつかの指標を組み合わせて捉えます。分類では正解率、適合率、再現率、F1、ROC-AUC、PR-AUCなどを、回帰ではMAE、RMSE、R²などを使います。

誤りのコストがクラスごとに違う場合や、予測確率を意思決定に使う場合は、平均的な正解率だけでは不十分です。そのため、業務で起きる損失と利用場面に合う指標を先に決めておきます。

汎化性能と過学習・未学習の関係

過学習は訓練データを覚えすぎた状態

過学習は、モデルの複雑さがデータの量やノイズに対して大きすぎると起きます。その結果、訓練データの細部まで適合してしまいます。

訓練スコアは高いのに検証スコアが低い、分割を変えると係数や予測が大きく変わる、少数の外れ値に予測が引っ張られる、といった兆候が見られます。

モデルの設定では、木の深さや特徴量の数が原因になることがあります。ニューラルネットワークでは、層数や学習回数が影響することもあります。

未学習は訓練データにも十分適合できない状態

未学習は、モデルが単純すぎる、特徴量が不足している、正則化が強すぎるといった理由で起きます。そのため、訓練データの傾向さえ捉えられません。

訓練と検証の両方でスコアが低い場合は、モデルの複雑さを上げるだけでなく、目的変数の定義やラベル品質、入力特徴量、評価指標も見直します。

訓練スコアを上げることだけを目標にすると、今度は過学習に移りやすくなります。そこで、検証性能とのバランスを見ながら調整します。

ポイント

訓練スコアと検証スコアの両方を見て、過学習か未学習かを切り分けます。訓練スコアだけを上げると過学習に移りやすいため、検証性能とのバランスで判断します。

訓練・検証・テストデータの役割の分担

訓練データは、モデルのパラメータを学習するために使います。検証データは、アルゴリズムや特徴量、正則化係数、しきい値などを比べるためのデータです。

テストデータは、設計を固めたモデルを最後に一度だけ評価するために残しておきます。テストの結果を見て設計を変えると、そのデータは実質的に検証データになってしまいます。そのため、最終評価には別のデータを用意します。

データが少ない場合でも、テストデータは最初から確保しておくと、最終報告の信頼性を保ちやすくなります。また、分類では各クラスの比率を確認し、珍しいクラスが評価側に偏らないようにします。

ただし、同じ顧客や商品に関する行が複数ある場合は、行をランダムに分けるだけで、似た情報が訓練と評価の両方に入ってしまいます。まず評価の単位を決め、そのうえで分割方法を選んでください。

ポイント

テストデータは最後に一度だけ使い、結果を見て設計を変えたら別の最終評価データを用意します。行を分ける前に評価の単位を決めることも、判断の基本です。

交差検証による汎化性能の推定

K分割交差検証の流れ

K分割交差検証では、データをK個の部分に分け、1個を検証、残りを訓練に使う組み合わせをK回繰り返します。このように繰り返した各回のスコアの平均は、特定の分割だけに依存しない性能の目安になります。

平均に加えて、標準偏差や最小・最大も併記すると、分割による不確実性を把握しやすくなります。Kを大きくすると学習データは増えますが、計算時間も増えます。そのため、Kはデータ量とモデルのコストを見て決めます。

分類・時系列・グループに合う分割方法

分割方法は、実際の予測シナリオを再現するための条件です。

  • 分類:各分割のクラス比率をそろえた層化K分割
  • 時系列:時間順に訓練期間と検証期間を進め、未来の観測で過去を評価しない分割
  • グループ:顧客・患者・店舗・端末など同一グループを訓練と検証へ分けない分割

時系列データでは、たとえば1月から6月で学習して7月を評価し、次に1月から7月で学習して8月を評価します。訓練期間を少しずつ広げながら、未来を予測する方法です。

季節性やキャンペーンの影響がある場合は、各期間の事例数を確かめておきます。また、ランダムにシャッフルすると、実運用より高いスコアが出ることがあります。

ポイント

交差検証の結果は、平均だけでなく標準偏差も見て判断します。分割の方法は、時系列やグループなど予測の場面に合うものを選びます。

汎化性能を誤って高く見せるデータリーク

データリークとは、予測の時点では本来使えない情報や、評価対象の正解に近い情報が、学習の処理に混ざってしまうことです。代表例は、分割する前に全データで標準化や欠損補完を行うことです。

目的変数を集計した特徴量を同じ期間から作ることもあります。重複レコードを訓練と検証に分けたり、未来の売上や結果を過去の特徴量に含めたりするケースもあります。

リークを防ぐには、予測を実行する時点で使える情報を、時系列に洗い出します。特徴量を作るSQLや集計処理には基準時刻を持たせ、ラベルが確定した後の更新値を参照しないようにします。

前処理は学習用の分割だけで当てはめ、交差検証の内側で毎回作り直します。特徴量の由来や計算期間、更新頻度、欠損時の扱いをデータ辞書に残しておくと、レビューがしやすくなります。

ポイント

予測時点で使えない情報が混ざっていないかを、特徴量ごとに確かめます。前処理は分割後の学習データだけに当てはめると、リークを避けやすくなります。

モデルの複雑さの調整による汎化性能の向上

正則化による過度な係数や分岐の抑制

線形モデルではL1・L2正則化を、木モデルでは深さや葉の最小サンプル数を使って調整します。ニューラルネットワークでは、重み減衰やドロップアウトによって、モデルの自由度を加減します。

正則化を強くしても、汎化性能が必ず上がるわけではありません。訓練データの信号まで消してしまうこともあるため、訓練と検証の学習曲線を見て、過学習と未学習の境目を探します。

検証の推移を使った早期終了

反復学習するモデルでは、訓練損失が下がり続けても、検証損失が途中から上がることがあります。そこで、検証性能が最も良かった時点で学習を止めたり、その時点の重みを保存したりする方法が早期終了です。

検証データを何度も見て学習回数を調整する場合は、最終テストとは分けて扱います。検証指標、許容する停滞回数、復元するモデルの条件は、事前に決めておくと再現しやすくなります。

データの品質と量が汎化性能を左右する要因

モデルを複雑にする前に、まずデータそのものを確認します。見るべき点は、ラベルの一貫性、欠損、重複、外れ値、代表性です。

ラベルの付け方が担当者によって違う、学習期間に特定のキャンペーンしかない、評価データに実運用では起きない例が多い、といった問題があります。こうした問題は、アルゴリズムを変えても解決しません。

難しいサンプルを追加し、実際に観測される分布に近いデータを増やすと、汎化性能の改善につながる場合があります。

データ拡張や再サンプリングを行うときは、評価データに人工的な変換例が混ざらないよう注意します。少数クラスを増やす処理を分割前に行うと、元データと派生データが訓練と検証にまたがるおそれがあります。

まず評価用の原データを分けておき、そのあとで訓練部分だけを拡張します。生成したデータの規則や乱数、適用率も記録しておいてください。

汎化性能の評価指標と不確実性

分類の正解率は、クラスの比率が偏っていると高く見えることがあります。そのため、見逃しを避けたいなら再現率、誤警報のコストが大きいなら適合率、両方のバランスを取りたいならF1を使い分けます。

陽性の少ない検出問題では、PR-AUCを確認し、しきい値を変えたときの混同行列も示します。予測確率を使う場合は、確率の校正や信頼度曲線を評価します。

回帰では、MAEは誤差の絶対値を平均し、RMSEは大きな誤差をより強く評価します。外れ値の影響を業務上どれだけ重く見るかで、指標を選びます。

R²は、目的変数の分散や外れ値によって印象が変わるため、単独では採用しません。予測区間を提供する場合は、平均誤差に加えて、区間の被覆率や幅も検証します。

交差検証の平均スコアには、分割による不確実性があります。このため、平均だけでモデルの優劣を断定せず、分割ごとのスコアや標準偏差、サンプル数を確認します。

データが時系列やグループで互いに依存している場合は、独立したサンプルを前提とした単純な統計検定を、そのまま当てはめないようにします。そのうえで、業務上のしきい値を超える確率や、再現性のある改善幅を報告すると役立ちます。

ポイント

誤りのコストが大きい側を業務に合わせて決め、その側の指標を主に見ます。正解率だけで判断せず、R²は単独で採用しないなど、指標を組み合わせて判断します。

分布変化と運用監視|公開後も続く汎化性能の確認

テストデータが今の運用データを代表していても、時間がたつと、顧客や商品、季節、制度、入力装置は変わっていきます。

入力特徴量の分布が変わることをデータドリフト、入力と正解の関係が変わることをコンセプトドリフトと呼びます。ラベルが遅れて届く場合でも、入力分布、欠損率、予測の偏り、しきい値付近の件数を先に監視します。

実績ラベルが得られたら、期間別や顧客層別、地域別などに性能を分けて確認します。全体平均が保たれていても、重要なグループだけ再現率が落ちていることがあります。

再学習を自動化する場合は、最低性能、ドリフト量、ラベルの遅延、承認手順を条件として決めておきます。また、テストデータにアクセスできる工程は、再学習の工程とは別に分けます。

ポイント

運用後は、入力分布や欠損率、予測の偏りを監視し、ラベルが得られたら期間別・グループ別に性能を見直します。分布が変わったときに備えて、再学習の条件も事前に決めておきます。

汎化性能を確認する実務フロー

汎化性能の確認は、予測の条件を決めることから始まり、運用後の監視条件を決めるところまで一連の流れで進みます。

  1. 予測時点、対象単位、利用できる情報、業務上の誤りのコストの定義
  2. 重複・欠損・ラベル・時間範囲の確認と、最終テストデータの分離
  3. シナリオに合う分割と評価指標の決定、ベースラインの固定
  4. 前処理のパイプライン化と、分割前の集計や変換によるリークの防止
  5. 検証データによる、モデルの複雑さ、正則化、特徴量、しきい値の比較
  6. 分割ごとのばらつき、グループ別性能、推論コスト、説明可能性の記録
  7. 最終テスト後の、運用監視の指標と再評価条件の決定

この順序で進めると、性能の変化がモデルの変更によるものか、分割やデータの変更によるものかを区別しやすくなります。

実験ごとに、データの期間や抽出条件、乱数、ライブラリのバージョン、特徴量の一覧、評価スコアを記録しておきます。スコアだけを表に残すより、再現に必要な条件もあわせて残すほうが、レビューや障害対応で役立ちます。

汎化性能まとめ|評価方法と運用条件を含めた判断

汎化性能は、未知のデータや将来の運用データに安定して対応できる能力です。判断するには、訓練スコアに加えて、検証とテストの分離、適切な交差検証、データリークの防止、目的に合う指標が必要です。

過学習には正則化や早期終了、未学習には特徴量やモデルの表現の見直しで対応し、複数の条件で改善を比べます。さらに、公開後のデータ分布やグループ別の性能を監視し、汎化性能が保たれているかを確かめます。

評価方法が予測シナリオと一致しているか、改善幅が運用コストに見合うか、実験記録を再現できる形で残っているかを重視してください。モデルを選ぶときは、最も高い一つの数字で決めるのではなく、将来の利用条件で信頼できるかという観点で判断するのが実務的です。

よくある質問(FAQ)

Q. 汎化性能とは何ですか?

汎化性能とは、機械学習モデルが学習に使っていない未知データや将来の運用データに対して、安定して予測できる能力です。判断には、訓練データのスコアに加えて、未知データでの評価結果を使います。

Q. 過学習と汎化性能はどう関係しますか?

過学習は、訓練データの細部やノイズまで覚えてしまい、未知データでの誤差が増える状態です。訓練スコアと検証スコアの差や、分割ごとのばらつきを見ると検出しやすくなります。

Q. 交差検証を使えば汎化性能を正確に測れますか?

交差検証は、分割の偶然に左右されにくい推定方法です。ただし、運用時の分割条件や分布変化を自動で再現するものではありません。時系列やグループなど予測シナリオに合う分割を使い、最終テストは別に残します。

Q. 汎化性能を高く見せるデータリークとは何ですか?

データリークは、予測時点では利用できない情報や評価対象に近い情報が、学習の処理に混ざってしまうことです。分割前の前処理、未来の集計値、重複レコードの分割などが典型例で、評価スコアが実際より高く見えてしまいます。

Q. 公開後も汎化性能を確認する必要がありますか?

必要です。入力分布や欠損率、予測の偏りを監視し、正解ラベルが得られた後は、期間別・グループ別の性能を再評価します。また、分布変化や性能低下に応じた再学習の条件も、事前に決めておきます。

参考資料

本文の内容は、機械学習の技術資料で確認しました。

交差検証とモデル選択の手順は、これらの資料で確認できます。

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。