系列ラベリングのPrecision / Recall / Fってどうやってやるんだっけ?

02/10/2021

A8バナー広告

定期的に忘れるけど、定期的に必要になる。なので、書き残して置こうと思った。

そもそもなんのために?

言語処理の系列ラベリングの評価方法は2値分類と違うところがある。

それは、Confusion matrixの項目のカウント基準だ。

なので、系列ラベリングモデルの性能評価をするときには、2値分類とは違った方法が必要。

どうやって計算するのが簡単?

Pypiにいつの間にか系列ラベリング評価用パッケージが上がっていた。その名も seqeval

開発者はHirosan。いつもお世話になってるっす(パッケージ的な意味で)

使い方はくっそ簡単なので、あえてここではサンプルコードも載せない。

このパッケージが出てくる前は、scikit-learnの2値分類用の評価クラスはいじって、なんやらして評価クラスを作っていたっけ。

簡単にできるようになって、本当にありがたい。

Confusion Matrixの要素ってどうやって計算するんだっけ?

ここらへんの行にTP / FP / FN / TNの定義が書いてある。

言葉で書き下してみる。

ちなみに「Gold」とは正解ラベルのこと。「Prediction」とは予測ラベルを意味する。

  • TP: まず、GoldかPredictionがOラベルではないこと。そして、GoldとPredictionが一致している。この時+1カウント
  • FP: GoldとPredictionが一致していない。この時 +1カウント
  • FN: GoldがOではなく、PredictionがOのとき +1カウント
  • TN: GoldとPredictionがどちらもOのとき、+1カウント

TP / FP / FN / TNの定義を定期的に忘れるんだけど?

定期的に意味を忘れてConfustion matrixを参照しないといけなくなる。

ここらで、きっちりと覚えておきたいので、覚え方を見直ししておいた。

そもそもTはTrue で FはFalseのこと。PositiveとNegativeが予測ラベルの結果を示す。

  • TP: True Positive「予測=Positiveという予測がTrue」な場合。つまり、「Positiveという予測が正しい場合」
  • FP: False Positive「予測=Positiveという予測がFalse」な場合。つまり、「Positiveという予測が誤りの場合」
  • FN: False Negative「予測=Negativeという予測がFalse」な場合。つまり、「Negativeという予測が誤りの場合」
  • TN: True Negative 「予測=Negativeという予測がTrue」な場合。つまり、「Negativeという予測が正しい場合」