コンテンツにスキップ

Error Codes - Classification

MLdebuggerのエラーコードは、モデルの間違え方を分類したラベルです。 このページでは、Classificationタスクにおけるエラーコードの定義を説明します。

Issue Categoryについて

エラーコードが属するIssue Category(Stable Coverage、Hotspotなど)の定義はEvaluation と Resultを参照してください。

エラーコードフォーマット

Classificationタスクのエラーコードは以下の形式で表現されます。

基本形式

CLS{t}->{y}
  • t: アノテーションされた正解クラスID
  • y: 予測されたクラスID

: - CLS0->0: クラス0が正解で、クラス0と予測(正解) - CLS3->5: クラス3が正解だが、クラス5と予測(誤答)

揺らぎがある場合

CLS{t}->{y1}|{y2}|...

内部特徴量が不安定で、正解クラスtが複数のクラスに間違われやすい場合、|で区切って表現します。

: - CLS3->7|1: クラス3がクラス7または1に間違われやすい - CLS5->7|1|9: クラス5がクラス7、1、9に間違われやすい

Critical/Aleatoricマーカー

CLS{t}->{y}**

Critical HotspotまたはAleatoric Hotspotの中で、内部特徴量的に最もらしいクラスがアノテーション(t)と一致しているにも関わらず、予測(y)が異なる特殊ケースに**が付加されます。

このマーカーが付いたエラーコードは、内部特徴量の観点からも不正解である可能性が高いことを示します。

: - CLS9->7**: クラス9が正解で内部特徴量的にも9が最もらしいが、予測は7(不正解) - CLS1->3**: クラス1が正解で内部特徴量的にも1が最もらしいが、予測は3(不正解)

通常のCritical/Aleatoric

**マーカーのないCritical HotspotやAleatoric Hotspotは、通常のCLS{t}->{y}形式で表示されます。

エラーコードの解釈例

例1: CLS6->7|1(Hotspot)

  • 正解クラス: 6
  • 予測クラス: 7 または 1
  • Issue Category: hotspot(Unstable)
  • 解釈: クラス6のデータだが、クラス7や1に間違われやすい不安定な領域
  • 対処: クラス6、7、1の境界に位置するデータを追加学習

例2: CLS5->3**(Critical Hotspot)

  • 正解クラス: 5
  • 予測クラス: 3(不正解)
  • Issue Category: critical_hotspot(Over-Confidence)
  • 解釈: クラス5が正解で内部特徴量的にも5が最もらしいが、予測は3。高確信度で誤答するリスクが高い
  • 対処: 最優先でこのパターンのHard Negativeデータを追加

例3: CLS0->7|1|5(Hotspot)

  • 正解クラス: 0
  • 予測クラス: 7、1、5
  • Issue Category: hotspot(Unstable)
  • 解釈: クラス0のデータだが、全く異なる複数クラスに間違われやすい
  • 対処: クラス0の特徴をより明確に学習できるデータが必要

デバッグコード

各エラーコードには、デバッグの方向性を示すdebug_codeが付与されます。

debug_code 説明 対処法
epistemic モデルの知識不足に起因 データ追加、再学習
aleatoric データ自体の曖昧さに起因 アノテーション確認、タスク定義見直し

Result APIでの使用

# Issue一覧の取得
issues_df = result.get_issues()

# エラーコード別の分布
error_distribution = issues_df.groupby("error_code")["counts"].sum()

# debug_code別の分布
debug_distribution = issues_df.groupby("debug_code")["counts"].sum()

# Epistemicエラーのみ抽出(データ追加で改善可能)
epistemic_issues = issues_df[issues_df["debug_code"] == "epistemic"]

可視化例

# カテゴリ別の分布を取得
category_view = result.get_view(
    groupby=["category"],
)

# Hotspotの詳細なエラーコード分布
hotspot_detail = result.get_view(
    query="category == 'hotspot'",
    groupby=["error_code"],
)

# debug_code別の分布
debug_view = result.get_view(
    groupby=["debug_code", "category"],
)

次のステップ