正例である確率を計算できる場合の評価指標
#分類における評価指標
#さまざまな評価指標
#モデルの評価とチューニング
正例である確率を計算できる場合の評価指標
多くのアルゴリズムによる予測モデルでは、predict()メソッドで「正例負例どちらに分類したか」を出力するだけでなく、predict_proba()メソッドで、「正例である確率(&負例である確率)」を計算できる
イチかゼロかで分けてしまうのではなく、「正例である確信度」のような感じで、確率の形で出した結果をそのまま利用することもできる
このような感じで出力できる。下の例は、2クラス分類で、データごとに[1つ目のクラスである確率 2つ目のクラスである確率]という形で表示されているようす。
https://gyazo.com/c98b5e7e5470a11783bc13af48192f18
この「確率」をそのまま活用した評価指標が以下のようにいくつかある
さまざまな評価指標
P-R曲線(Precision-Recall curve)、AUC(曲線下面積)
「正例である確率」が計算できる場合、その確率がどの程度以上であれば正例と判断するかは任意
「それより大きければ正例、小さければ負例と判断する」ような確率値を閾値(threshold)とよぶが、必ず0.5を閾値にしないといけないわけではない
得られたデータについて「正例である確率」を計算するとき、それに対して以下のように実際の正例(陽性)・負例(陰性)が分布している場合、この分布が重なっていれば、必ず誤分類が起こる
たとえば$ y = 1が正例、$ y = 0が負例としたとき、$ xに対して$ yが下の図のような分布をしていたとき・・・
https://gyazo.com/38103bcb62deded168d76d5e8b054065
閾値(それ以上だと$ y=1、それ未満だと$ y=0とする確率値)を変えていくと、それに対応する$ xの値も変化し、分類のされ方が変わるので、「1を0に誤分類」するケースや、「0を1に誤分類」するケースの割合が変わっていく
https://gyazo.com/172ce53f422988b4d80d7912de4819a3
これを少し違う観点から説明してみる(簡単のために$ xを一次元として説明するが、多次元でも同様)
↓の図は、$ xの値に対する、評価に用いるデータにおけるpositive(正例)の分布とnegative(負例)の分布を示しており、閾値に対応する$ x(それより大きければp(正例)、小さければn(負例)と分類する)を変化させた場合に、誤分類のようすがどのように変わるかを示したもの
https://gyazo.com/9aa778cc90cae4ddf7b44fa27dada1d3
この上側の図では、$ xの閾値より高ければp(正例、陽性)、低ければn(負例、陰性)と分類しているが、実際の正例・負例の分布をみると、偽陽性・偽陰性になっている範囲があることがわかる
下側の図のように、$ xの閾値を上げると、実際に負例であるクラスについての誤分類(偽陽性)はほとんどなくなるが、逆に実際に陽性であるクラスについての誤分類(偽陰性)は多くなる
分布が重なっていると、必ずこのようなトレードオフが起こる!
モデルの表現力が低いと、この分布の重なりが大きくなる、というイメージ
よいモデルは、分布の重なりが小さく、正例と負例をよく分離できる
このように、閾値(それ以上で正例と判断する確率値)を動かすことで、誤分類のようすが変化する
閾値を0にするとすべてを正例(陽性)と判断する
閾値を1にするとすべてを負例(陰性)と判断する
そこで、横軸をRecall、縦軸をPrecisionとして、閾値を動かして曲線を描いたものをP-R曲線(Precision-Recall curve)とよび、PrecisionとRecallのトレードオフのようすを可視化するものとして使用される
skleran.metrics.precision_recall_curve()などが使える
https://gyazo.com/802ea750379b52f78abdc9f6dfae9199
Precision・Recallの定義は二値分類における評価指標を再確認
Precision:正例と予測したもののうち、真の値も正例である割合(正例と予測した場合の正解率)
Recall:真の値が正例のもののうち、どの程度を正例の予測として含めることができているかの割合(正例の発見率)
クラス間の分布の重なりが少ないほど、曲線は右上方向にシフトする
この曲線の下の面積をAUC:area under curveとよび、大きい方がモデルの性能がよいことを示す
完全に分類が正解する場合AUCは1となる
ROC曲線(受信者動作特性曲線)、AUC(曲線下面積)
P-R曲線と似ているが、横軸を偽陽性率、縦軸を真陽性率とし、「すべてを陽性と判断する点」から「すべてを陰性と判断する点」まで閾値を動かしたときのグラフを描いたものとして、ROC曲線(receiver operator characteristics curve)もよく用いられる
https://gyazo.com/35a35238379f7e069c732fc16478d028
図は(『Kaggleで勝つデータ分析の技術』より引用
偽陽性率・真陽性率の定義は二値分類における評価指標を再確認
偽陽性率:実際に負例(陰性)だったもののうち、正例(陽性)と予測したものの割合
真陽性率:実際に正例(陽性)だったもののうち、正例(陽性)と予測したものの割合
クラス間の分布の重なりが少ないほど、曲線は左上方向にシフトする
P-R曲線と同様にAUCを計算でき、大きい方がモデルの性能がよいことを示す
完全に分類が正解する場合AUCは1となり、全くランダムに分類するモデルの場合はAUCは0.5となる
ROC曲線はsklearn.metrics.RocCurveDisplay.from_estimatorなどで簡単に描けたりする
https://gyazo.com/2fdf5bbfac9d7cd1c43ae39dffb0c3b4