データセットは 2 つに分割されています (トレーニング用セットとテスト用セット)。 トレーニング セットはモデルのトレーニングに使用され、テスト セットはトレーニング後のモデルのテストとして使用され、モデルのパフォーマンスと評価が計算されます。 テスト セットは、トレーニング プロセスを通じてモデルに導入されることはなく、新しいデータでモデルがテストされることを確認します。
モデルの評価は、トレーニングが正常に完了した後に自動的にトリガーされます。 評価プロセスでは、トレーニング済みモデルを使い、テスト セット内のドキュメントのユーザー定義クラスを予測することから始まり、指定されたデータ タグ (真実のベースラインを確立するもの) との比較を行います。 モデルのパフォーマンスを確認できるように、結果が返されます。 カスタム テキスト分類の評価には、次のメトリックを使用します。
精度: モデルの精密さと正確さを測定します。 これは、正しく識別された陽性 (真陽性) と識別されたすべての陽性との比率です。 精度メトリックによって、予測クラスのうち、正しくラベル付けされている数が明らかになります。
Precision = #True_Positive / (#True_Positive + #False_Positive)リコール: 実際の陽性クラスを予測するモデルの能力を測定します。 予測された真陽性とタグ付けされた値の比率です。 リコール メトリックによって、予測クラスのうち、正しいものの数が明らかになります。
Recall = #True_Positive / (#True_Positive + #False_Negatives)F1 スコア: F1 スコアは、精度とリコールの関数です。 精度と再現率のバランスを求める場合に必要です。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
注
精度、再現率、および F1 スコアは、クラスごとに個別に計算されます (クラス レベル の評価)、モデルをまとめて計算します (モデル レベルの 評価)。
モデルレベルとクラスレベルの評価メトリック
精度、リコール、評価の定義は、クラスレベルとモデルレベルのどちらの評価でも同じです。 ただし、次の例に示すように、"真陽性"、"擬陽性"、"擬陰性" の数は異なります。
以下のセクションでは、次のデータセット例を使用します。
| ドキュメント | 実際のクラス | 予測クラス |
|---|---|---|
| 1 | アクション、コメディ | コメディ |
| 2 | アクション | アクション |
| 3 | ロマンス | ロマンス |
| 4 | ロマンス、コメディ | ロマンス |
| 5 | コメディ | アクション |
"アクション" クラスのクラスレベル評価
| 鍵 | 数える | 説明 |
|---|---|---|
| 真陽性 | 1 | ドキュメント 2 は正しく "アクション" に分類されました。 |
| 誤検知 | 1 | ドキュメント 5 は誤って "アクション" に分類されました。 |
| 偽陰性 | 1 | ドキュメント 1 は アクション として分類されませんでしたが、必要です。 |
精度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5
リコール = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5
F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
"コメディ" クラスのクラスレベル評価
| 鍵 | 数える | 説明 |
|---|---|---|
| 真陽性 | 1 | ドキュメント 1 は正しく "コメディ" に分類されました。 |
| 偽陽性 | 0 | 誤って "コメディ" に分類されたドキュメントはありませんでした。 |
| 偽陰性 | 2 | ドキュメント5と4は、本来コメディとして分類されるべきですが、されていません。 |
精度 = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1
リコール = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 2) = 0.33
F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.67) / (1 + 0.67) = 0.80
集合モデルのモデル レベルの評価
| 鍵 | 数える | 説明 |
|---|---|---|
| 真陽性 | 4 | ドキュメント 1、2、3、および 4 には、予測時に正しいクラスが与えられました。 |
| 誤検知 | 1 | ドキュメント 5 では、予測時に間違ったクラスが割り当てられます。 |
| 偽陰性 | 2 | ドキュメント 1 と 4 には、予測時にすべての正しいクラスが与えられているわけではありません。 |
精度 = #True_Positive / (#True_Positive + #False_Positive) = 4 / (4 + 1) = 0.8
リコール = #True_Positive / (#True_Positive + #False_Negatives) = 4 / (4 + 2) = 0.67
F1 スコア = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.8 * 0.67) / (0.8 + 0.67) = 0.73
注
単一ラベル分類モデルの場合、偽陰性と偽陽性の数は常に等しくなります。 カスタム単一ラベル分類モデルの場合、各ドキュメントに対して常に 1 つのクラスが予測されます。 予測が正しくない場合、予測されたクラスの数 FP 1 ずつ増加し、実際のクラスの FN が 1 つ増加すると、モデルの FP と FN の全体的な数は常に等しくなります。 ドキュメントのクラスの 1 つを予測できなかった場合は偽陰性としてカウントされるため、複数ラベル分類の場合ではありません。
クラスレベルの評価メトリックの解釈
それでは、特定のクラスに対する精度またはリコールが高いというのは、実際にはどのような意味なのでしょうか。
| 再現率 | 精度 | 解釈 |
|---|---|---|
| 高 | 高 | モデルはクラスの指定を正常に処理しました。 |
| 低 | 高 | このクラスは、このモデルによって予測されないことがありますが、実行される場合は信頼度は高くなります。 この評価は、このクラスがデータセット内で十分に表現されていないため、データの分布を均等にすることを検討する必要があります。 |
| 高 | 低 | このモデルは、このクラスを適切に予測します。しかし、信頼度は低いです。 データセット内のクラスの過剰な表現が原因である可能性があるため、データの分布の偏りを調整することを検討してください。 |
| 低 | 低 | モデルは、このクラスを高い信頼性がない状態で適切に処理できませんでした。 |
カスタム テキスト分類モデルでは、偽陰性と偽陽性の両方が発生することが予想されます。 それぞれがシステム全体に与える影響を考慮する必要があります。 モデルが正しい予測を無視し、正しくない予測を認識するシナリオを慎重に検討してください。 シナリオによっては、"精度" または "リコール" の方がモデルのパフォーマンス評価に適している可能性があります。
たとえば、テクニカル サポートのチケットの処理に関するシナリオの場合、間違ったクラスを予測すると、間違った部門やチームに転送される可能性があります。 この例では、システムを擬陽性に対する感度を高めることを検討する必要があり、評価には精度がより適したメトリックとなります。
別の例として、シナリオで電子メールを "重要" または "スパム" として分類する必要がある場合、予測が正しくないと、"スパム" というラベルが付いている場合に役立つメールが見落とされる可能性があります。ただし、スパムメールに 重要な ラベルが付いている場合は無視できます。 この例では、システムを偽陰性に対する感度を高めることを検討する必要があり、評価にはリコールがより適したメトリックとなります。
汎用的なシナリオに最適化する場合や、精度とリコールの両方が重要な場合は、F1 スコアを利用できます。 評価スコアは、シナリオや受け入れ基準に応じた主観的なものです。 すべてのシナリオに対して機能する絶対メトリックはありません。
ガイダンス
モデルをトレーニングした後、モデルを改善する方法に関するガイダンスと推奨事項を確認できます。 ガイダンス セクションのすべてのポイントをカバーするモデルを作成することをお勧めします。
トレーニング セットには十分なデータがあります。トレーニング データ内のラベル付きインスタンスが 15 個未満のクラス型は、モデルのケースに対するトレーニングが不十分であるため、精度が低下する可能性があります。
すべてのクラス型がテスト セットに存在します。テスト データにクラス型のラベル付きインスタンスがない場合、テストされていないシナリオが原因でモデルのテスト パフォーマンスが低くなる可能性があります。
クラス型はトレーニング セットとテスト セット内でバランスが取られます。サンプリング バイアスによってクラス型の頻度が不正確に表現される場合、そのクラス型が頻繁に発生するか、少なすぎることがモデルによって予測されるため、精度が低下する可能性があります。
クラス型はトレーニング セットとテスト セット間で均等に分散されます。クラス型の組み合わせがトレーニング セットとテスト セットの間で一致しない場合、モデルのトレーニング方法とテスト方法が異なるために、テストの精度が低下する可能性があります。
トレーニング セット内のクラス型が明確に区別されている: トレーニング データが複数のクラス型に似ている場合は、クラス型が頻繁に相互に誤って分類される可能性があるため、精度が低下することがあります。
混同行列
重要
混同行列は、複数ラベルの分類プロジェクトでは使用できません。 混同行列は、モデルのパフォーマンスの評価に使用される N x N 行列であり、N はクラスの数です。 この行列によって、予測されるラベルとモデルによって予測されたものが比較されます。 これにより、モデルのパフォーマンスと、発生しているエラーの種類を、全体的に把握できます。
混同行列を使用すると、互いに近すぎて、誤りが発生しやすい (あいまいな) クラスを識別できます。 この場合は、これらのクラスをまとめて結合することを検討します。 それができない場合は、モデルで両者を区別できるよう、両方のクラスを使用してより多くのドキュメントにラベル付けすることを検討します。
すべての正しい予測はテーブルの対角線に配置されるため、テーブルで予測エラーを視覚的に調べるのは簡単です。
混同行列からクラス レベルとモデル レベルの評価メトリックを計算できます。
- 斜線の付いている値は、各クラスの "真陽性" の値です。
- クラスの行の値の合計は (斜線を除く)、モデルの "擬陽性" です。
- クラスの列の値の合計は (斜線を除く)、モデルの "擬陰性" です。
同様に、
- モデルの "真陽性" は、すべてのクラスの "真陽性" の合計です。
- モデルの "擬陽性" は、すべてのクラスの "擬陽性" の合計です。
- モデルの "擬陰性" は、すべてのクラスの "擬陰性" の合計です。