PR曲線・ROC曲線再考その1「歪みの増加とPR-AUCの変化」

Pocket
LinkedIn にシェア
LINEで送る

ROC曲線とPR曲線にて、歪みの大きいデータセット(陽性<<陰性)の分析評価にはROC曲線よりPR曲線の方が適していると述べたが、一概にそうとは言い切れない体験をしたのでここに記す。

まず、1つ実験を行ってみる。以下のコードを用いて、scikit-learnに付属しているbreast cancerのデータから、PR曲線を作成してみる。(機械学習に用いたのは均衡型ランダムフォレスト分類器。これは歪みの大きなデータセットの分類に特化したランダムフォレストの改良アルゴリズムである。詳細は後日公開予定であり、Schwartzwaldはこの分類器が含まれるライブラリの仮名)

その際、陽性データの数を10分の1に減らした。さらに変数tag_numの値だけ陰性データの数を倍にしていき、PR-AUCの変化を記録した。結果は以下のとおりである。

陰性データの数 PR-AUC
1倍 0.9955687664789827
11倍 0.9828483486285571
101倍 0.9828483486285571
1001倍 0.9140349873613590

このように、データの内容は変わっていないにも関わらず、単に陰性データの数が増える(すなわち、歪みが大きくなる)につれてPR-AUCは低下していることがわかる。今回のデータセットは非常に分類がしやすいものであったためPR-AUCは常に0.9以上に保たれているが、筆者がより分類困難で総数約10万の歪んだデータセットを分析した際には、ROC-AUC = 0.9程度の分類ができているにも関わらず、PR-AUCは0.1未満となった。これを最大化するようにグリッドサーチを行ったところで、PR-AUCの最大値と最小値の差はほぼ誤差の範囲内であり、果たして意味があるのだろうか。

歪みが大きくなるにつれてPR-AUCが低下する原理は以下のようなものである。

まず、100例ずつの陽性例と陰性例がともに90%の確率で正しく分類されている状態の混合行列を考えてみる。

陽性(判定) 陰性(判定)
陽性(実際) 90(TP) 10(FN)
陰性(実際) 10(FP) 90(TN)

このとき、

Recall = TP / (TP + FN) = 90 / (90 + 10) = 0.9

Precision = TP / (TP + FP) = 90 / (90 + 10) = 0.9

となるが、ここで陰性例に対する適合率を変えずにデータ数を100倍にすると、

陽性(判定) 陰性(判定)
陽性(実際) 90(TP) 10(FN)
陰性(実際) 1000(FP) 9000(TN)

Recall = TP / (TP + FN) = 90 / (90 + 10) = 0.9

Precision = TP / (TP + FP) = 90 / (90 + 1000) = 0.0826

と、Precisionが大きく低下する。この時、陰性例に対する適合率が一定であるにも関わらず、データ規模が大きくなったために、偽陽性の絶対数が増えた。それが真陽性の値を無視できるほどの大きさになるとき、Precisionはこのように非常に小さな値となるのである。より感覚的な表現をするなら、「少数グループの大多数よりも、大衆のごく一部の方が強い」と言えるかもしれない。また、RecallはTPR (True Positive Rate)と同一であるが、PrecisionはROC曲線に含まれないため、PR-AUCが非常に小さい場合でもROC-AUCは高く保たれうるのである。

このような状況において、分類の精度が多少向上したところで、測定ごとの誤差も考えれば、その成果はPrecisionやPR-AUCに反映されるだろうか。筆者はとても疑わしいと感じる。

そこでPR-AUCやROC-AUCに代わる新しい評価基準としてSP_indexなるものを筆者は考案したのであるが、結論から言うとこれは失敗であった。しかし、その際に新たな知見が得られたため、PR曲線とROC曲線の関係について今一度考えねばなるまいと感じるようになった。その詳細についてはまた次回とする。

Pocket
LinkedIn にシェア
LINEで送る

神経科学を研究している博士学生。Rust, Python, C/C++, Unityを活用して、世界の様々な現象を分析・シミュレートしています。理系分野だけでなく、政治学や社会学も、もちろん分析対象です。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です