次の方法で共有


自動 ML でのオーバーフィットおよび不均衡データを防止する

機械学習モデルを構築する際に陥りやすい落とし穴が、オーバーフィットやデータの偏りです。 Azure Machine Learning の自動 ML 機能には、既定で、このようなリスクの特定に役立つグラフとメトリックが用意されています。 この記事では、一般的な問題を軽減するために自動 ML にベスト プラクティスを実装する方法について説明します。

オーバーフィットを特定する

機械学習のオーバーフィットは、モデルがトレーニング データに適合しすぎている場合に発生します。 その結果、モデルは未見のテスト データに対して正確に予測できなくなります。 モデルは、トレーニング データ内の特定のパターンやノイズを記憶しただけで、実際のデータで予測できるだけの十分な柔軟性がありません。

次のトレーニング済みモデルと、それに対応するトレーニングとテストの正確性について検討します。

モデル トレーニングの精度 テストの精度
A 99.9% 95%
B 87% 87%
C 99.9% 45%
  • モデル A: このモデルのテストでは、モデルのトレーニングよりも正確性がわずかに低くなります。 未見のデータに対するテストの正確性がトレーニングの正確性よりも低い場合、モデルがオーバーフィットしていると認識するのはよくある誤認です。 ただし、テストの正確性は常にトレーニングの正確性よりも低くなるはずです。 データのオーバーフィットと適切な適合の違いは、正確性が "どの程度" 低いかを測定することに帰着します。

  • モデル A とモデル B: テストの正確性が高いため、モデル A の方が優れたモデルです。 テストの正確性は 95% とわずかに低くなりますが、オーバーフィットの存在を示唆するほどの大きな差ではありません。 モデル B は、トレーニングとテストの正確性がほぼ同じであるため、推奨されません。

  • モデル C: このモデルは明らかにオーバーフィットの例です。 トレーニングの正確性は高く、テストの正確性は低くなっています。 この見分け方は主観的ですが、問題とデータの知識、および許容できる誤差の大きさから得られるものです。

オーバーフィットを防ぐ

最も極端なケースでは、オーバーフィットしたモデルは、トレーニング中に検出された特徴量の組み合わせが、ターゲットについても常に全く同じ出力になると仮定します。 データのオーバーフィットを回避するために、機械学習のベスト プラクティスに従うことをお勧めします。 モデルの実装で構成できる方法はいくつかあります。 自動 ML には、オーバーフィットを防ぐために役立つその他のオプションも既定で用意されています。

次の表は、一般的なベスト プラクティスをまとめたものです。

ベスト プラクティス 実装 自動化された ML
より多くのトレーニング データを使用し、統計的な偏りを排除する x
ターゲット漏えいを防ぐ x
組み込む特徴量を減らす x
正則化とハイパーパラメーターの最適化をサポートする x
モデルの複雑さの制限を適用する x
クロス検証を使用する x

ベスト プラクティスを適用してオーバーフィットを防ぐ

以下のセクションでは、機械学習モデルの実装でオーバーフィットを防ぐために使用できるベスト プラクティスについて説明します。

より多くのデータを使用する

オーバーフィットを防ぐには、より多くのデータを使用することが最も簡単かつ最善の方法であり、このアプローチにより、通常は正確性が向上します。 使用するデータが増えると、モデルが正確なパターンを記憶することが困難になります。 モデルは、より多くの条件に対応するために、より柔軟なソリューションに到達することを余儀なくされます。 また、統計的偏りを認識して、実際の予測データに存在しない分離パターンが、トレーニング データに含まれないようにすることも重要です。 このシナリオの解決は難しい場合があります。実際のテスト データと比較した際にオーバーフィットが存在する可能性があるからです。

ターゲット漏えいを防ぐ

ターゲット漏えいも同様の問題です。 トレーニングとテストのセット間にオーバーフィットが見られない場合でも、予測時に漏えいの問題が発生します。 ターゲット漏えいは、モデルが予測時には通常使用しないデータにトレーニング中にアクセスすることで、"ずる" を行うと発生します。 たとえば、月曜日に金曜日の商品価格がいくらになるかをモデルで予測する場合です。 特徴に誤って木曜日のデータが含まれている場合、モデルは未来を見通すことはできないため、予測時には使用できないデータにアクセスできます。 ターゲット漏えいは見逃しやすいミスです。 これは、問題に対して正確性が異常なほど高い場合によく見られます。 株価を予測し、95% の精度でモデルをトレーニングした場合、特徴量のどこかにターゲット漏えいがある可能性が高くなります。

組み込む特徴量を減らす

特徴を削除することが、オーバーフィットで役立つ場合もあります。これは、モデルで特定のパターンを記憶するために使用するフィールドが多くなりすぎるのを防ぎ、柔軟性を向上させます。 定量的に測定するのは難しい場合があります。 特徴を削除して同じ正確性を維持できる場合、モデルの柔軟性が高まり、オーバーフィットのリスクを軽減できます。

自動 ML 機能を確認してオーバーフィットを防ぐ

以下のセクションでは、オーバーフィットを防ぐために自動 ML に既定で用意されているベスト プラクティスについて説明します。

正則化とハイパーパラメーターの調整をサポートする

正則化は、オーバーフィットした複雑なモデルにペナルティーを科すためのコスト関数を最小化するプロセスです。 正則化関数にはさまざまな種類があります。 一般に、すべての関数はモデルの係数のサイズ、分散、複雑さにペナルティを課します。 自動 ML では、オーバーフィットを制御するさまざまなモデル ハイパーパラメーター設定と共に、L1 (Lasso)、L2 (Ridge)、ElasticNet (L1 と L2 を同時使用) がさまざまな組み合わせで使用されます。 自動 ML により、モデルをどの程度規制するかが変更され、最適な結果が選択されます。

モデルの複雑さの制限を適用する

自動 ML では、オーバーフィットを防ぐために、明示的なモデルの複雑さの制限も実装されます。 ほとんどの場合、この実装は特にデシジョン ツリーまたはフォレスト アルゴリズム向けです。 個々のツリーの最大深度は制限されており、フォレストまたはアンサンブル手法で使用されるツリーの合計数は制限されています。

クロス検証を使用する

クロス検証 (CV) は、全トレーニング データのサブセットを多く取得し、各サブセットでモデルをトレーニングするプロセスです。 これは、モデルは、"運がよい" 場合に、1 つのサブセットで高い正確性を実現できる可能性があるが、多くのサブセットを使用することで、モデルは高い正確性を毎回は達成できないという考え方です。 CV を実行する場合、検証の予約データセットを指定し、CV フォールド (サブセットの数) を指定します。自動 ML は、モデルをトレーニングし、ハイパーパラメーターを調整して検証セットのエラーを最小限に抑えます。 CV フォールドが 1 つでは、オーバーフィットとなる可能性がありますが、それらを多数使用することで、このプロセスで最終的なモデルがオーバーフィットする確率は低下します。 このトレードオフとして、CV ではトレーニング時間が長くなり、コストが高くなります。これは、モデルを一度にトレーニングするのではなく、n 個の各 CV サブセットで 1 回ずつトレーニングするためです。

Note

クロス検証は既定では有効になっていません。 この機能は、自動機械学習設定で構成する必要があります。 ただし、クロス検証を構成し、検証データ セットを用意した後は、プロセスは自動化されます。

偏ったデータを含むモデルを特定する

偏ったデータは、機械学習の分類シナリオのデータでよく見られるもので、各クラスに不適切な観測比率を含むデータを意味します。 この不均衡によって、入力データが 1 つのクラスに偏り、トレーニングされたモデルがその偏りを再現するため、モデルの精度に擬陽性の影響が生じる可能性があります。

さらに、自動 ML ジョブでは、以下のグラフが自動的に生成されます。 これらのグラフは、モデルの分類の正確性を把握し、不均衡データの影響を受ける可能性のあるモデルを特定するのに役立ちます。

グラフ 説明
混同行列 適切に分類されたラベルをデータの実際のラベルと比較して評価します。
精度/再現率 適切なラベルの比率を、検出されたデータのラベル インスタンスの比率と比較して評価します。
ROC 曲線 適切なラベルの比率を、擬陽性ラベルの比率と比較して評価します。

偏ったデータの処理

機械学習ワークフローを簡略化する目標の一環として、偏ったデータを処理する機能が自動 ML に組み込まれています。

  • 自動 ML では、重みの列が入力として作成されるため、データ内の行が重みにより調整されます。これを使用してクラスの "重要度" を調節できます。

  • 自動 ML で使用されるアルゴリズムが不均衡を検出するのは、少数派クラス内のサンプル数が、多数派クラス内のサンプル数の 20% 以下である場合です。 マイノリティ クラスとはサンプルが最も少ないクラスを指し、マジョリティ クラスとはサンプルが最も多いクラスを指します。 その後、自動機械学習では、サブサンプリングされたデータを使用して実験を実行し、クラスの重みを使用することでこの問題が解決できるか、またパフォーマンスが向上するかどうかを確認します。 この実験によってパフォーマンスの向上が確認された場合は、この解決方法が適用されます。

  • 偏ったデータをより適切に処理するパフォーマンス メトリックを使用します。 たとえば、AUC_weighted は、そのクラスを表すサンプルの相対的な数に基づいてすべてのクラスの貢献度を計算する主要なメトリックです。 このメトリックは、不均衡に対してより堅牢です。

次の手法は、自動 ML の外部で偏ったデータを処理するためのその他のオプションです。

  • クラスの不均衡を均等にするために再サンプリングします。 小さいクラスをアップサンプリングすることや、大きいクラスをダウンサンプリングすることができます。 これらの方法では、処理および分析するための専門知識が必要です。

  • 偏ったデータのパフォーマンス メトリックを確認します。 たとえば F1 スコアは、精度とリコールの調和平均です。 精度は分類子の正確さを測定するものであり、精度が高いほど擬陽性が少ないことを示します。 リコールは分類子の完全性を測定するものであり、リコールが高いほど擬陰性が少ないことを示します。

次のステップ