カスタム固有表現認識モデルの評価メトリック
データセットは 2 つに分割されています (トレーニング用セットとテスト用セット)。 トレーニング セットはモデルのトレーニングに使用され、テスト セットはトレーニング後のモデルのテストとして使用され、モデルのパフォーマンスと評価が計算されます。 テスト セットは、トレーニング プロセスを通じてモデルに導入されることはなく、新しいデータでモデルがテストされることを確認します。
モデルの評価は、トレーニングが正常に完了した後に自動的にトリガーされます。 評価プロセスでは、トレーニング済みモデルを使い、テスト セット内のドキュメントのユーザー定義エンティティを予測することから始まり、指定されたデータ タグ (真実のベースラインを確立するもの) との比較を行います。 その結果が返されるので、モデルのパフォーマンスを確認することができます。 評価のために、カスタム NER によって次のメトリックが使用されます。
精度: モデルの精密さと正確さを測定します。 これは、正しく識別された陽性 (真陽性) と識別されたすべての陽性との比率です。 精度メトリックによって、予測されたエンティティのうち、正しくラベル付けされている数が明らかになります。
Precision = #True_Positive / (#True_Positive + #False_Positive)
リコール: 実際の陽性クラスを予測するモデルの能力を測定します。 これは、予測された真陽性と実際にタグが付けられたものとの比率です。 リコール メトリックによって、予測されたエンティティのうち、正しいものの数が明らかになります。
Recall = #True_Positive / (#True_Positive + #False_Negatives)
F1 スコア: F1 スコアは、精度とリコールの関数です。 精度とリコールのバランスを取るときに必要です。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
Note
精度、リコール、F1 スコアは、エンティティについては個別に計算され ("エンティティ レベル" の評価)、モデルについてはまとめて計算されます ("モデル レベル" の評価)。
モデル レベルとエンティティ レベルの評価メトリック
精度、リコール、F1 スコアは、エンティティについては個別に計算され (エンティティ レベルの評価)、モデルについてはまとめて計算されます (モデル レベルの評価)。
精度、リコール、評価の定義は、エンティティ レベルとモデル レベルのどちらの評価でも同じです。 ただし、"真陽性"、"擬陽性"、"擬陰性" の数は異なる場合があります。 たとえば、次のようなテキストがあるとします。
例
The first party of this contract is John Smith, resident of 5678 Main Rd., City of Frederick, state of Nebraska. And the second party is Forrest Ray, resident of 123-345 Integer Rd., City of Corona, state of New Mexico. There is also Fannie Thomas resident of 7890 River Road, city of Colorado Springs, State of Colorado.
このテキストからエンティティを抽出するモデルにより、次のように予測されることがあります。
Entity | 予測結果 | 実際の種類 |
---|---|---|
John Smith | Person | Person |
Frederick | Person | City |
Forrest | City | Person |
Fannie Thomas | Person | Person |
Colorado Springs | City | City |
"人" エンティティのエンティティ レベルの評価
このモデルでは、"人" エンティティについて次のエンティティ レベルの評価が行われます。
Key | Count | 説明 |
---|---|---|
真陽性 | 2 | John Smith と Fannie Thomas は、"人" として正しく予測されました。 |
偽陽性 | 1 | Frederick は、"都市" でなければならないのに、誤って "人" として予測されました。 |
偽陰性 | 1 | Forrest は、"人" でなければならないのに、誤って "都市" として予測されました。 |
- 精度:
#True_Positive / (#True_Positive + #False_Positive)
=2 / (2 + 1) = 0.67
- リコール:
#True_Positive / (#True_Positive + #False_Negatives)
=2 / (2 + 1) = 0.67
- F1 スコア:
2 * Precision * Recall / (Precision + Recall)
=(2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
"都市" エンティティのエンティティ レベルの評価
このモデルでは、"都市" エンティティについて次のエンティティ レベルの評価が行われます。
Key | Count | 説明 |
---|---|---|
真陽性 | 1 | Colorado Springs は、"都市" として正しく予測されました。 |
偽陽性 | 1 | Forrest は、"人" でなければならないのに、誤って "都市" として予測されました。 |
偽陰性 | 1 | Frederick は、"都市" でなければならないのに、誤って "人" として予測されました。 |
- 精度 =
#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
集合モデルのモデル レベルの評価
このモデルでは、モデル全体が次のように評価されます。
Key | Count | 説明 |
---|---|---|
真陽性 | 3 | John Smith と Fannie Thomas は、"人" として正しく予測されました。 Colorado Springs は、"都市" として正しく予測されました。 これは、すべてのエンティティの真陽性の合計です。 |
偽陽性 | 2 | Forrest は、"人" でなければならないのに、誤って "都市" として予測されました。 Frederick は、"都市" でなければならないのに、誤って "人" として予測されました。 これは、すべてのエンティティの擬陽性の合計です。 |
偽陰性 | 2 | Forrest は、"人" でなければならないのに、誤って "都市" として予測されました。 Frederick は、"都市" でなければならないのに、誤って "人" として予測されました。 これは、すべてのエンティティの擬陰性の合計です。 |
- 精度 =
#True_Positive / (#True_Positive + #False_Positive)
=3 / (3 + 2) = 0.6
- リコール =
#True_Positive / (#True_Positive + #False_Negatives)
=3 / (3 + 2) = 0.6
- F1 スコア =
2 * Precision * Recall / (Precision + Recall)
=(2 * 0.6 * 0.6) / (0.6 + 0.6) = 0.6
エンティティ レベルの評価メトリックの解釈
それでは、特定のエンティティに対する精度またはリコールが高いとは、実際にはどのような意味なのでしょうか。
Recall | Precision | 解釈 |
---|---|---|
高 | 高 | このエンティティは、モデルによって適切に処理されます。 |
低 | 高 | このエンティティは、モデルで抽出されないことがありますが、抽出は高い信頼度で行われます。 |
高 | 低 | このエンティティは、モデルで確実に抽出されますが、別の種類として抽出されることがあるため、信頼度は低くなります。 |
低 | 低 | このエンティティの種類は、通常は抽出されないため、モデルで適切に処理されません。 抽出されたとしても、信頼度は高くありません。 |
ガイダンス
モデルをトレーニングした後、モデルを改善する方法に関するいくつかのガイダンスと推奨事項が表示されます。 ガイダンス セクションのすべてのポイントをカバーするモデルを作成することをお勧めします。
トレーニング セットには十分なデータがあります。エンティティ型のラベル付きインスタンスがトレーニング データ内に 15 個未満の場合、これらのケースでモデルが適切にトレーニングされていないため、精度が低下する可能性があります。 この場合は、トレーニング セットにラベル付きデータを追加することを検討してください。 詳細なガイダンスについては、[データ分散] タブを確認できます。
すべてのエンティティ型がテスト セットに存在します。テスト データにエンティティ型のラベル付きインスタンスがない場合、テストされていないシナリオにより、モデルのテスト パフォーマンスの包括性が低下する可能性があります。 詳細なガイダンスについては、[テスト セット データ分散] タブを確認できます。
エンティティ型はトレーニング セットとテスト セット内でバランスを取ります。サンプリング バイアスによってエンティティ型の頻度が不正確に表現される場合、エンティティ型が頻繁に発生するか、少なすぎることが予測されるため、モデルの精度が低下する可能性があります。 詳細なガイダンスについては、[データ分散] タブを確認できます。
エンティティ型はトレーニング セットとテスト セット間で均等に分散されます。エンティティ型の組み合わせがトレーニング セットとテスト セットの間で一致しない場合、モデルのトレーニング方法とテスト方法が異なるためにテスト精度が低下する可能性があります。 詳細なガイダンスについては、[データ分散] タブを確認できます。
トレーニング セット内のエンティティ型の区別が明確でありません。トレーニング データが複数のエンティティ型に似ている場合は、エンティティ型が互いに誤って分類される可能性があるため、精度が低下する可能性があります。 次のエンティティ型を確認し、似ている場合は合成することを検討してください。 それ以外の場合は、互いをより適切に区別するために、さらに例を追加します。 [混同行列] タブで詳細なガイダンスを確認できます。
混同行列
混同行列は、モデルのパフォーマンスの評価に使われる N x N 行列であり、N はエンティティの数です。 この行列によって、予測されるラベルとモデルによって予測されたものが比較されます。 これにより、モデルのパフォーマンスと、発生しているエラーの種類を、全体的に把握できます。
混同行列を使用すると、互いに近すぎて、誤りが発生しやすい (あいまいな) エンティティを識別できます。 この場合は、これらのエンティティの種類をまとめて結合することを検討します。 それができない場合は、モデルで両者を区別できるよう、両方のエンティティのタグ付けされた例を追加することを検討します。
次の図で強調されている対角線は、正しく予測されたエンティティであり、予測されたタグは実際のタグと同じです。
混同行列からエンティティ レベルとモデル レベルの評価メトリックを計算できます。
- 斜線の付いている値は、各エンティティの "真陽性" の値です。
- エンティティの行の値の合計は (斜線を除く)、モデルの "擬陽性" です。
- エンティティの列の値の合計は (斜線を除く)、モデルの "擬陰性" です。
同様に、
- モデルの "真陽性" は、すべてのエンティティの "真陽性" の合計です。
- モデルの "擬陽性" は、すべてのエンティティの "擬陽性" の合計です。
- モデルの "擬陰性" は、すべてのエンティティの "擬陰性" の合計です。