Amazon Machine Learning サービスの更新や、その新しいユーザーの受け入れは行っていません。このドキュメントは既存のユーザー向けに提供されていますが、更新は終了しています。詳細については、「Amazon Machine Learning とは」を参照してください。
ML モデルの評価
新しいデータと将来のデータでターゲットを予測がうまくいくかどうかを判断するために、常にモデルを評価する必要があります。将来のインスタンスには不明なターゲット値があるため、ターゲットの回答をすでに知っているデータで ML モデルの精度メトリクスを確認し、この評価を将来のデータの予測精度のプロキシとして使用する必要があります。
モデルを適切に評価するには、トレーニングデータソースのターゲット (グランドトゥルース) でラベル付けされたデータのサンプルを提出します。トレーニングに使用されたのと同じデータを持つ ML モデルの予測精度を評価することは有用ではありません。なぜなら、トレーニングデータを一般化するのではなく、トレーニングデータを「覚える」モデルに報いるからです。ML モデルのトレーニングが終了したら、ターゲット値を知っている提出された観測値をモデルに送信します。次に、ML モデルによって返された予測と既知のターゲット値を比較します。最後に、予測された値と真の値がどれくらい一致しているかを示すサマリーメトリクスを計算します。
Amazon ML では、評価を作成して、ML モデルを評価します。ML モデルの評価を作成するには、評価する ML モデルが必要であり、トレーニングに使用されなかったラベル付きデータが必要です。まず、提出されたデータを持つ Amazon ML データソースを作成して、評価用のデータソースを作成します。評価に使用するデータは、トレーニングで使用されたデータと同じスキーマを持ち、ターゲット変数の実際の値を含んでいる必要があります。
すべてのデータが単一のファイルまたはディレクトリにある場合は、Amazon ML コンソールを使用してデータを分割できます。ML モデルの作成ウィザードのデフォルトパスは入力データソースを分割して、最初の 70% をトレーニングデータソースに使用し、残りの 30% を評価データソースに使用します。ML モデルの作成ウィザードのカスタムオプションを使用して、分割比率をカスタマイズすることもできます。ウィザードでは、トレーニング用にランダムな 70% のサンプルを選択し、残りの 30% を評価に使用できます。カスタム分割比率をさらに指定するには、データソースの作成 API でデータ再配置文字列を使用します。評価データソースと ML モデルを取得したら、評価を作成して評価結果を確認することができます。
オーバーフィッティングの防止
ML モデルを作成してトレーニングする場合、目標は最良の予測を行うモデルを選択することです。これは、最適な設定 (ML モデル設定またはハイパーパラメータ) でモデルを選択することを意味します。Amazon Machine Learning には、パス数、正規化、モデルサイズ、シャッフルタイプの 4 つのハイパーパラメータを設定できます。ただし、評価データで「最良の」予測パフォーマンスを生成するモデルパラメータ設定を選択すると、モデルがオーバーフィットする可能性があります。モデルがトレーニングと評価のデータソースで発生するパターンを記憶しているが、データのパターンを一般化することができなかった場合、オーバーフィッティングが発生します。これはトレーニングデータに、評価で使用されたすべてのデータが含まれている場合によく発生します。オーバーフィッティングされたモデルは、評価中はうまくいきますが、見えないデータについて正確な予測をすることはできません。
オーバーフィッティングされたモデルを最良のモデルとして選択するのを避けるために、追加のデータを予約して ML モデルのパフォーマンスを検証することができます。たとえば、データをトレーニング用に 60%、評価用に 20%、検証用に 20% に分割することができます。評価データに適したモデルパラメータを選択した後、検証データを使用して 2 番目の評価を実行して、ML モデルが検証データに対してどれだけうまく実行するかを確認します。モデルが検証データに対する期待値を満たしていれば、モデルはデータにオーバーフィッティングしていません。
検証のために第 3 のデータセットを使用すると、適切な ML モデルパラメータを選択でき、オーバーフィッティングを防止できます。しかし、評価と検証の両方のためにトレーニングプロセスからのデータを提出すると、トレーニングのために利用可能なデータは少なくなります。トレーニングのためにはできるだけ多くのデータを使用するのが常にベストであるため、これは、小さなデータセットの場合は特に問題です。この問題を解決するには、相互検証を実行できます。相互検証の詳細については、交差検証 を参照してください。