混同マトリックスを使用してマルチクラス分類の精度とリコールをどのように計算しますか?


92

マルチクラス分類問題の混同マトリックスを使用して、精度を計算し、リコールする方法を疑問に思います。具体的には、観測値は最も可能性の高いクラス/ラベルにのみ割り当てることができます。計算したい:

  • 精度= TP /(TP + FP)
  • リコール= TP /(TP + FN)

クラスごとに、マイクロ平均Fメジャーを計算します。


このdocx分類モデルの評価–精度とリコールは何を教えてくれますか?Compumineから、混同マトリックスとそれに由来するメジャーの簡単な紹介を提供しています。混同マトリックス、精度、再現率、特異性、精度を作成するのに役立ちます。
ジェイランチューパン

4
ここで答えを見つけてください。非常に良い説明youtube.com/watch?v=FAr2GmWNbT0

Compumineリンクは無効です。
トレントン

マルチクラスの場合、行(軸= 0)に沿ったものがリコールであり、列(軸= 1)に沿ったものが精度であることを理解しています。rxnlp.com/...
MD ZIA ULLAH

回答:


69

2仮説の場合、混同行列は通常次のとおりです。

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

あなたの表記に似たものを使用しました:

  • TP =真の陽性(実際にはH1のときにH1を宣言)、
  • FN =偽陰性(実際にはH1のときにH0を宣言)、
  • FP =誤検出
  • TN =真のネガ

生データから、テーブルの値は通常、テストデータの各オカレンスのカウントになります。これから、必要な数量を計算できるはずです。

編集

マルチクラス問題への一般化は、混同行列の行/列を合計することです。マトリックスが上記のように方向付けられている場合、つまり、マトリックスの特定の行が「真」の特定の値に対応している場合、次のようになります。

Precision i=MiijMji

Recall i=MiijMij

つまり、精度は 、アルゴリズムが宣言したすべてのインスタンスのうち、正しくを宣言したイベントの割合です。逆に、リコールは、私たちが正しく宣言したイベントの一部である世界の状態の真がある例全てのうち、。iiii


1
私の場合、クラスは10個以上あるため、FNは宣言クラスH(i)、i!= 1;の合計数を意味すると思います。FPも同じですか?
-daiyue

こんにちは。TP+ FP = 0、および混同マトリックスの実際のクラスのTP + FN = 0の場合、PrecisionおよびRecallの値はどうなるのでしょうか。
daiyue

iアルゴリズムが宣言するインスタンスがない場合、クラスの精度は未定義ですiiテストセットにclassが含まれていない場合、classのリコールは未定義ですi
デイブ

私の最終目標はマクロFメジャーの計算です。したがって、各クラスiの精度とリコール値が必要です。上記の2つのケースが何らかのクラスiに現れる場合、どうすればMacro-Fメジャーを計算できますか?特に、Fiの値は何で、クラスiはクラスMの1つとしてカウントされます。Mの要素数は、マクロFメジャーを計算するための式の分母としてカウントされます。
daiyue

1
申し訳ありませんが、あなたのアイデアをより明確に説明できますか
daiyue

31

マルチクラスの問題に関するこれらのメトリックスを調べた優れた要約論文:

  • Sokolova、M.、&Lapalme、G.(2009)。分類タスクのパフォーマンス測定の体系的な分析。 情報処理および管理、45、p。427-437。(pdf

要約は次のとおりです。

このホワイトペーパーでは、機械学習の分類タスク、つまりバイナリ、マルチクラス、マルチラベル、および階層の完全なスペクトルで使用される24のパフォーマンス測定値の体系的な分析を示します。この研究では、分類タスクごとに、混同マトリックスの一連の変更をデータの特定の特性に関連付けています。次に、分析は、メジャーを変更しない混同マトリックスへの変更のタイプに集中するため、分類子の評価(メジャー不変性)が保持されます。結果は、分類問題のすべての関連するラベル分布の変更に関するメジャー不変性分類法です。この正式な分析は、メジャーの不変性プロパティが分類子のより信頼性の高い評価につながるアプリケーションの例によってサポートされています。


2
@JamesTaylorのサイトへようこそ。リンクされた論文の情報の要約を提供して、読者がそれが必要なものであるかどうか、そしてリンクが機能しなくなった場合にそれを判断するのを助けてくれませんか?
GUNG

8

sklearnとnumpyの使用:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

精度とリコールの全体的な測定値を取得するには、thenを使用します

np.mean(recall)
np.mean(precision)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.