TAMALOG

プログラミングがあれば遠いところへ行けます。プログラムと人の共生を記録します。

二値分類器のAUC

機械学習で作成したモデルは、様々な計算方法で評価される。ここでは、ROC曲線とAUCについてまとめてみる。

二値分類器について考える。二値分類器は[0, 1]区間の実数値(以下、スコア)を出力するものとする。

データ番号 正解ラベル スコア
1 apple 0.1
2 non-apple 0.9
3 apple 0.2
4 apple 0.4
5 non-apple 0.4
6 non-apple 0.7
7 non-apple 0.8
8 non-apple 0.5
9 apple 0.4

学習した二値分類器が上記のようなスコアを出力した。この表で正解ラベル列はまだ気にしなくても良い。 このスコアにしきい値を設けることで、二値分類ができる。例えば、0.5未満をappleと判断すると仮定する。分類結果の列を追加して表を更新する。

データ番号 正解ラベル スコア 分類結果
1 apple 0.1 apple
2 non-apple 0.9 non-apple
3 apple 0.2 apple
4 apple 0.4 apple
5 non-apple 0.4 apple
6 non-apple 0.7 non-apple
7 non-apple 0.8 non-apple
8 non-apple 0.5 non-apple
9 apple 0.4 apple

このときの混同行列は、以下のようになる。

apple(予測) non-apple(予測)
apple(真値) 4 0
non-apple(真値) 1 4

真陽性率は、4/4 = 1。偽陽性率は、1/(1 + 4) = 0.2となる。この閾値を0.1ずつ変化させて、偽陽性と真陽性を計算してみると以下の表が作成できる。

しきい値 偽陽性 真陽性
0.1 0 0
0.2 0 0.25
0.3 0 0.5
0.4 0 0.5
0.5 0.2 1
0.6 0.4 1
0.7 0.4 1
0.8 0.6 1
0.9 0.8 1

偽陽性を横軸に、真陽性を縦軸にプロットした点を結んだ曲線をROC曲線と呼ぶ。そしてROC曲線の下部面積をAUCと呼ぶ。AUCは[0, 1]の範囲を取る。その値が高いとき、分類器の判別能が高い。つまり、2つのクラスを異なるものとして識別する能力が高い。AUCが低いとき、判別能が十分ではなく間違えやすい。

f:id:tamanobi:20180401172709p:plain