Hamming Loss

Eval

ハミング損失(Hamming Loss)

作成日: 最終更新: 読了時間: 1 分
まとめ
  • Hamming Loss はマルチラベル分類で誤ったラベルの割合を測る指標です。
  • ニュースラベル付けの例で Hamming Loss と Exact Match を算出します。
  • 複数正解を持つ場合の評価やラベル不均衡での扱いを整理します。

1. 定義 #

真のラベル集合を \(Y_i\)、予測ラベル集合を \(\hat{Y}i\)、ラベル数を \(L\) とすると $$ \mathrm{Hamming\ Loss} = \frac{1}{nL} \sum{i=1}^n \lvert Y_i \triangle \hat{Y}_i \rvert $$ ここで \(Y \triangle \hat{Y}\) は対称差(どちらか片方のみに含まれるラベル集合)です。マルチラベル分類であれば、サンプル当たりの誤りラベル数の平均値とみなせます。


2. Python 3.13 での計算 #

python --version  # 例: Python 3.13.0
pip install scikit-learn
from sklearn.metrics import hamming_loss

print("Hamming Loss:", hamming_loss(y_true, y_pred))

y_truey_pred は 0/1 のマルチラベル表現(もしくはスパースな MultiLabelBinarizer の結果)を渡します。


3. スコアの読み方 #

  • 値が 0 に近いほど良く、完全一致なら 0。
  • 0.05 であれば「全ラベルのうち平均 5% を取り違えた」ことを意味します。
  • ラベルの重要度が異なるときは、ラベルごとに重みを掛けた加重ハミング損失を検討しましょう。

4. 他指標との比較 #

指標特徴使いどころ
Exact Matchサンプル単位で完全一致率正解ラベル集合が完全一致した割合。厳しめ
Hamming Lossラベル単位の誤り率平均的なラベル誤り数を把握したいとき
Micro F1平均適合率と再現率ラベルの正例/負例バランスも考慮したいとき
Jaccard 指数集合の類似度ラベル集合全体の重なり具合を評価したいとき

ハミング損失は Exact Match ほど厳しくなく、改善の度合いを段階的に把握するのに便利です。


5. 実務でのヒント #

  • タグ推薦:記事や商品に複数タグを付けるとき、平均で何個外しているかを把握できる。
  • アラート判定:複数の異常検知ルールを同時に評価し、誤警報の発生割合を定量化できる。
  • 重み付け:重要度の異なるラベルが混在する場合は、ビジネス価値に応じた重み付き評価を導入する。

まとめ #

  • ハミング損失はラベル単位の誤り率を測る指標で、マルチラベル分類の改善状況を追跡しやすい。
  • scikit-learn の hamming_loss で簡単に算出でき、Exact Match や F1 と併用すると全体像が見えやすくなる。
  • ラベルごとの重み付けやエラーパターン分析と組み合わせ、誤りの多いラベルに優先的な改善策を打とう。