まとめ
- 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_true と y_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 と併用すると全体像が見えやすくなる。 - ラベルごとの重み付けやエラーパターン分析と組み合わせ、誤りの多いラベルに優先的な改善策を打とう。