ROC曲線とは？なぜ不均衡データ時には使うべきでない？  分かりやすく説明

#目次#
1. ROC曲線とは
2. 用語理解
3. (改めて)ROC曲線とは
4. ROC-AUCとは
5. ROC-AUCと不均衡データ


前提知識
1.混合行列とは何かについて理解していること
2.ロジスティック回帰について知っていること。

#1. ROC曲線とは#

Wikipediaによれば
「受信者操作特性（じゅしんしゃそうさとくせい、英 Receiver Operating Characteristic, ROC）は、信号処理の概念で、観測された信号からあるものの存在を判定する際の基準となる特性である。

図の上はある疾患について、特定の検査の結果の分布を、陰性者、陽性者別に表示するものである。この例では陰性者の方が全体的に結果が小さい値を示す。そこにクリテリオン（基準、カットオフポイント）を導入し、その値以上の場合陽性、そうでなければ陰性だとする。今、カットオフポイントとしてBを採用すると.....」

(ﾟ∀ﾟ) ファ?

Wikipediaはより詳しく説明しているので後で読むとして、まずはROC曲線をシンプルに理解しましょう。

<b>ROC曲線とは「分類器のカットオフポイントごとにTPRとFPRを示して作られた曲線」</b>です。

このことを理解するのに、まず用語の意味(TPR, FPR, カットオフポイント)を知る必要があります。

#用語理解#
###TP (True Positive、真陽性)###
TPRを理解するのにTPをまずは理解する必要があります。
これは<b>分類器に陽性(Positive)と判断され、それが真(True)だったサンプルの数</b>です。

###FN (False Negative、偽陰性)###
これは<b>分類器に陰性(Negative)と判断され、それが偽(False)だったサンプルの数</b>です。

###FP (False Positive、偽陽性)###
これは<b>分類器に陽性(Positive)と判断され、それが偽(False)だったサンプルの数</b>です。

###TN (True Negative、真陰性)###
これは<b>分類器に陰性(Negative)と判断され、それが真(True)だったサンプルの数</b>です。

###TPR (True Positive Rate、真陽性率)###
これは<b>陽性の合計から見た真陽性の割合</b>です。

真陽性 (TP) - 分類器に陽性(Positive)と判断され、それが真(True)だったサンプルの数

```math
TPR = \frac{TP}{TP+FN} = \frac{TP}{陽性の合計数}
```

###FPR (False Positive Rate、偽陽性率)###
これは<b>陰性の合計から見た偽陽性の割合</b>です。

偽陽性 (FP) - 分類器に陽性(Negative)と判断され、それが偽(False)だったサンプルの数

```math
FPR = \frac{FP}{FP+TN} = \frac{FP}{陰性の合計数}
```

以下、TP, FP, TN, FNの混合行列です。

![Untitled(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/0951b673-c470-537d-e2ec-f8b73dc6d924.png)



###カットオフポイント###
ここでいう<b>カットオフポイントとは分類器が陽性と判断するか陰性と判断するかの境目</b>です。例えば、癌である確率が58％の患者がいたとして分類器のカットオフポイントを50%とした場合、患者は50%以上なので陽性と判断されます。また50%以下の場合は陰性と判断されます。

それでは実際に分類器ではどう示せるでしょうか？以下はロジスティック回帰を例にカットオフ 75%を示してます。（ちなみに左から数えてカットオフ25％と呼んでも右から数えて75%と呼んでも意味は同じですが、ここでは右から数えています。）

![Untitled(1) (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/6ec2eec5-9242-bdeb-dfaf-1d58105165d4.png)

確率(Y軸)が0.25より上は全て陽性と分類器が判断していることがわかります。


#(改めて)ROC曲線とは#
<b>ROC曲線とは「分類器のカットオフポイントごとにTPRとFPRを示して作られた曲線」</b>です。

<b>TPRはX軸にFPRはY軸として示します。またカットオフポイントは0%から100%まであります。</b>

![Untitled (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/0aacf1a5-f36b-71b1-45d3-cdd1a9d2c4e0.png)


ロジスティック回帰の分類器を例に、なぜカットオフが陰性の方へ移動するごとにTPRとFPRが増えているのかを図解しました。

![Untitled(1) (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/c1820e4e-d7a0-0473-5223-04fffc84cca5.png)

カットオフが0%のとき（全てのデータを陰性と判断するとき）は、<b>そもそも分類器が陽性と判断しないのでTPRもFPRもゼロ</b>なことがわかります。

![cutoff-0 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/ede3eaf8-e7dd-85c5-9f47-1c86f9fc0e78.png)

ROC曲線が斜めに直線のときは、分類器がランダム(P(X)=0.5)に判断していることがわかります。これは<b>カットオフが移動するごとにTPRとFPRが同じ割合で増えているからです。</b>

![Untitled(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/ad449607-9db2-6ca0-ba3a-a8a04348be44.png)



#ROC-AUCとは#

ROC-AUCとは曲線下の面積です。

![Untitled(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335630/e47b6cf4-168a-b961-830a-71057a9d03e7.png)

##ROC-AUCを使うべきでないとき##

###データが不均衡なとき###
<b>ROC-AUCは不均衡データ時にモデルの質に関わらず高いスコアを出します。なぜならFPRが低くなりやすいからです。</b>極端な例として、ここに10000行のデータ（10行を陽性のデータ、9990行を陰性のデータとする）があるとします。すると<b>FPRの分母である陰性の合計数は9990となりFPRは0に近くなる</b>ことが分かります。逆にTPRはそこまで変わりません。よってFPRが低いときでもTPRは高いのでROC-AUCのスコアは高くなります。

```math
TPR = \frac{TP}{TP+FN} = \frac{TP}{陽性の合計数}
```
```math
FPR = \frac{FP}{FP+TN} = \frac{FP}{陰性の合計数}
```

また<b>２つのモデルスコアの差を見る指標としても、不均衡データ時はROC-AUCを使うべきではありません。</b>

先程の例で言えば、もしモデル１が10000行のうち、1000行を陽性と判断したとします。その場合、陽性の合計が10行なのでFPは990行です。そこでモデル２は100行を陽性と判断したとしましょう。すると陽性の合計は同じ10行なのでFPは90行です。

モデル１とモデル２のうち良いモデルとしては明らかにモデル２だと分かります。しかしFPRを指標として見るとモデル１は90/9990=0.0001、モデル２は990/9990 = 0.001となります(TPRは両方のモデルで同じ値)。<b>これではROC-AUCのスコアの差が殆ど無くモデル１とモデル２の性能の差があまり表せない</b>ことがわかります。

#参考文献#
Precision-Recall AUC vs ROC AUC for class imbalance problems
https://www.kaggle.com/general/7517

The Relationship Between Precision-Recall and ROC Curves
http://pages.cs.wisc.edu/~jdavis/davisgoadrichcamera2.pdf