ROC曲線による評価を行っている論文を読むと、ROC-AUC(Receirer Operating Curve - Area Under the Curve)の値の横に95%信頼区間が表示されていることがわかる。通常、信頼区間の範囲は既存の関数を用いて算出している場合が多いが、本記事ではこの機能が実装されていない言語を使用している分析者や、既存の関数の中身(のようなもの)を知りたい読者向けに、ROC-AUCの95%信頼区間の求め方について簡潔に説明する。また、記事の最後にはPythonによる実装例を示す。
ROC-AUCの95%信頼区間とは
ROC-AUCの信頼区間の式
ROC曲線を描画することで、その曲線の下の面積(AUC)が求まる。ここでは、その値を\(A\)とする。また、後に計算式を示す\(A\)の標準誤差を\(SE(A)\)とすると、ROC-AUCの信頼区間は、
$$A\pm{z_{\frac{\alpha}{2}}SE(A)}$$
と表される。ここで、95%信頼区間を求める際には\(z_{\frac{\alpha}{2}}=1.96\)であり、すなわち、ROC-AUCの95%信頼区間は
$$A\pm{1.96SE(A)}$$
である。
ROC-AUCの標準誤差
上の式で用いた\(SE(A)\)は、Hanley et al. (1982)の文献によると、
$$SE(A)=\sqrt{\frac{A(1-A)+(n_P-1)(Q_1-A^2)+(n_N-1)(Q_2-A^2)}{n_P \cdot n_N}}$$
と表される。ここで、\(n_P,n_N\)はそれぞれ陽性例・陰性例の数であり、\(Q_1,Q_2\)は以下のような確率値である。
- \(Q_1\):2つの陽性例を無作為に選んだ時、その両方が、無作為に選んだ1つの陰性例よりも「陽性の疑いが強い」と分類器に判断される確率
- \(Q_2\):2つの陰性例を無作為に選んだ時、その両方が、無作為に選んだ1つの陽性例よりも「陰性の疑いが強い」と分類器に判断される確率
また、この2つの確率はおおよそ、\(Q_1=\frac{A}{2-A},Q_2=\frac{2A^2}{1+A}\)で計算できることが示されている。
Pythonによる実装
以上より、Pythonでは次のような関数で実装できる。引数の内容は以下の通りである。
- y_true:実際の陽性・陰性のラベル
- y_score:分類器が判断した陽性確率
- positive:陽性を表すラベルの文字(デフォルトは陽性=1、陰性=0を想定)
参考文献
[1] J. A. Hanley and B. J. McNeil. The Meaning and Use of the Area under a Receiver
Operating Characteristic (ROC) Curve. Radiology, 1982.
コメント