モデルの評価スコアが非常に高くても、実用に役立たないことがあるのはなぜですか?
学習に使ったデータと同じデータでテストすると、モデルは非常に高いスコアを出しても、役に立たないことがあります。新しい顧客にも通用する特徴を学ぶのではなく、学習例を丸暗記しただけかもしれないためです。
架空の従業員120人のミールキット定期配送会社、Pantryboxを想像してください。アナリストのコフィは、翌月に解約しそうな契約者を予測し、継続促進チームが優先して電話できるようにするモデルを作っています。顧客部門責任者のシアンへの報告には、こうあります。'モデルA:正解率99%!!顧客ID、郵便番号、過去の全注文日など85列を使用。モデルB(シンプル、2列):訓練データで69%、テストデータで68%。先月の新規データでのモデルA:71%。毎月、顧客の約30%が解約。' シアンが知りたいのは、どちらのモデルを使うべきか、そして正解率99%のモデルが先月なぜあれほど悪い結果になったのかです。
| モデル | 学習データでの正解率 | 精度をテストする | 提案する内容 |
|---|---|---|---|
| モデルA、85列 | 99% | 71% | 過学習:学習に使った顧客を丸暗記 |
| モデルB、2列 | 69% | 68% | 学習不足:常に「継続」と予測する場合と比べて、わずかに上回る程度です |
過学習と学習不足は、どのような手順で診断しますか?
学習データでの性能と、モデルが一度も見たことのないデータでの性能を比較し、さらに両方を単純なベースラインと比較して、2つの問題を見分けます。この3つの数値の関係から、どちらの問題が起きているかが分かります。
1. データの一部を取り分けておきます
学習前に、モデルに一切見せないテスト用データを分けておきます。学習に使ったデータでモデルをテストするのは、基本的な誤りです。見た内容をそのまま繰り返すだけのモデルでも満点を取れてしまい、未知のデータに対する予測能力は確かめられないからです。
2. 比較の基準を設定します
ごく単純なルールでどの程度のスコアになるかを計算してください。パントリーボックスでは、毎月約70%の顧客が利用を継続するため、全員を'継続する'と予測するだけで約70%のスコアになります。役に立つモデルには、これを明確に上回る結果が必要です。
3. 学習時とテスト時を比較します
学習スコアが高いのにテストスコアが大幅に低い場合は、過学習の兆候です。両方のスコアが低く、ベースラインに近い場合は、学習不足の兆候です。両方のスコアが同程度で良好な場合は、妥当な適合と考えられます。
4. 安定性を確認します
交差検証では、学習データを異なる組み合わせに分割してモデルの学習とテストを複数回行い、結果の平均を取ります。分割の仕方によってスコアが大きく変動する場合、そのモデルは安定性に欠けます。
5. 問題に合った修正方法を選ぶ
過学習と学習不足では必要な対策が正反対なので、何かを変更する前に、どちらの問題かを特定します。
過学習と学習不足はどのように改善しますか?
過学習には、モデルを単純にするか、データが実際の対象をよりよく代表するようにして対処します。学習不足には、モデルにより有用な情報を与えるか、柔軟性を高めて対処します。簡単に言うと、次のとおりです。
過学習の場合
顧客IDなど、行動ではなく個人を特定する列を削除してください。実際にスコアを付ける顧客を反映した学習データを使い、より単純なモデルを優先してください。また、学習中に複雑さにペナルティーを与えて、モデルがより単純なパターンを選びやすくする正則化を適用してください。
学習不足の場合
配送のスキップ、最近の苦情、価格変更など、解約と関係がありそうな特徴量を追加してください。より柔軟なモデルを使えるようにし、どのモデルでも学習できないほどデータにノイズやラベルの誤りが多くないか確認してください。
両方の場合
テスト用データは最後まで使わないでください。テスト用データに合わせてモデルを繰り返し調整すると、その情報がモデルに漏れ込み、テストのスコアが実力を正しく見積もる指標ではなくなります。
解約予測モデルを使った判断には、不十分な例と改善した例でどのような違いがありますか?
不適切な判断では、スライドで最も大きい数字が99%だからという理由でモデルAを選びます。実際には当てずっぽうとほとんど変わらず、顧客維持を担当するチームは、もともと離れるつもりのない顧客への電話に時間を費やしてしまいます。
改善後の判断は次のとおりです。「モデルAは個々の顧客を暗記していました。顧客IDと正確な注文日が含まれていたため、解約の理由を学習するのではなく、見たことのある人を識別していたのです。モデルBは単純すぎて、基準値の70%を上回れません。次の手順:モデルCでは、先月の配送スキップ、サポートへの問い合わせ、前回のメニュー変更からの経過週数など、行動に関する6つの特徴量を使い、顧客IDと郵便番号は除きます。目標:顧客維持チームが利用を始める前に、5分割交差検証で確認し、テストのスコアが70%を明確に上回り、学習時のスコアとの差が数ポイント以内に収まることを目指します。」シアンは、99%のモデルがなぜ失敗したのか、何をもって良好とするのかを理解できるようになりました。
モデルが過学習にも学習不足にもなっていないかは、どう確認しますか?
モデルは、テストスコアが学習時のスコアに近く、ベースラインを明確に上回り、交差検証の各分割や新しい1か月分のデータでも安定していることを確認してください。また、解約理由のように、結果が出た後でなければ分からない特徴量がないかも確認します。これはデータリークに当たり、両方のスコアをモデルの実力以上によく見せてしまいます。
過学習と学習不足についてよくある間違いは何ですか?
最も多い間違いは、学習データでの精度を実環境での精度のように報告することです。ほかにも、基準となる性能を無視し、当て推量でも達成できる70%を優れた結果だと思う、スコア向上を期待して使える列をすべて追加する、調整中にテストデータをのぞく、通常は単純化が必要な過学習に対して、逆に複雑さを増すべきだと考える、といった間違いがあります。
このレッスンはTosheo.aiの中でどのように位置づけられていますか?
このレッスンは機械学習カテゴリーに属し、機械学習講座のモデル入門に続く内容です。Tosheo.aiの実習課題では、架空のモデルレポートを読み、問題点を診断します。採点基準に基づくフィードバックでは、改善策を提案する前に、学習時、テスト時、基準となる手法の結果を比較したかを確認します。データ担当チームと協働するための実務上の基礎を学ぶものです。任意のコード実習コースでは、コードによるモデルの学習と評価を扱います。
出典と対象範囲
Google機械学習集中講座:過学習(19 October 2026確認) ↗