混同行列についての復習
前回、混同行列についてオタクかどうか判断するカメラアプリの例で解説しました。
以下のような疑問にお答えします 混同行列 (Confusion matrix)のTP、TN、FP、FNの意味がわからない 「正解率」「適合率」「再現率」「F値」って何? 上記のような疑問[…]
混同行列のTP,FN,TN,FP について簡単に復習します。
■真陽性・TP(True-Positive)
ポジティブ(正例)に分類すべきものをちゃんとポジティブに分類できた件数のこと指します。
■真陰性・TN(True-Negative)
ネガティブ(負例)に分類すべきものちゃんとネガティブに分類できた件数を指します。
■偽陽性・FP(False-Positive)
偽陽性は、ネガティブに分類すべきものを間違ってポジティブに分類してしまった件数を指します。
■偽陰性・FN(False-Negative)
偽陰性とは、ポジティブと分類すべきものを間違ってネガティブに分類してしまった件数を指します。
ここからは、混同行列について理解している事を前提に話を進めます。
正解率は当てにならない
前回の記事にて、混同行列から正解率を求めてモデルを評価する方法を解説しました。
しかし、正例が極端に少ないデータだと正しく判定できないことがあります。
モデルがポンコツですべて負例と判定してしまっても、正解率が90%を超えてしまうことがあり、評価とはいえません。
そこで、AUC評価指標の出番です。
AUC評価指標は、一言では「最もまともに評価してくれる指標」という理解で良いでしょう。
AUC評価指標について解説
AUC (Area Under the Roc Curve)とは
AUCとは、ROC曲線が描いた線を元に計算される評価指標です。
ROC曲線とは
ROC曲線は、X軸に偽陽性率、Y軸に真陽性率をとり、偽陽性率を0から1まで動かし、偽陽性率と真陽性率をプロットして描きます。
偽陽性率と真陽性率とFP、TN、TP、FNの関係
偽陽性率(FPR)・・・ FP/(FP+TN)
真陽性率(TPR)・・・TP/(TP+FN)
AUCはROC曲線が描いた面積部分
AUCは、曲線(下図はデータが少ないため四角みたいになっている)の下側の面積の部分です。
面積は最大で1になります。すなわち、AUCの値が1に近いほど良いモデルといえます。
ROC曲線の作り方
ROC曲線の作り方を解説します。
前提条件
・訓練データをロジスティック回帰のアルゴリズムで学習させてモデルを作成済み
・テストデータは4行ほどのデータとする
ROC曲線は、閾値をうごかし、閾値毎のFP,TN,TP,FNを計算し、FPR(偽陽性率),TPR(真陽性率)をプロトして作成します。
ポイント
閾値は、スコアの最大値に1を足したもの(原点にプロトするため)、それぞれのスコアを閾値とする。
具体例は、次の項目で解説します。
ROC曲線の作り方の例
ロジスティック回帰などのアルゴリズムで、4人の予測してみます。
予測の結果、以下のようなスコアが出力されたとします。
- 1人目のスコアは0.49029077
- 2人目のスコアは0.41097165
- 3人目のスコアは0.30278616
- 4人目のスコアは0.68056765
閾値は、4人のスコア、4人の中で最もスコアが高かった「0.68056765」に1を加えた「1.68056765」とします。
よって、閾値を大きい順に並べると以下の通りなります。
- 1.68056765
- 0.68056765
- 0.49029077
- 0.41097165
- 0.30278616
具体例の解説・閾値が0.41097165のときは?
閾値が0.41097165のときは、0.41097165以上が正例になるので実測値と予測値の関係は以下の通りになります。
その結果以下のような関係になります。
実測値 0 1 0 1
予測値 1 1 0 1
1人目のスコアは0.49029077で閾値以上で正と予測(実測値は負)
2人目のスコアは0.41097165で閾値以上で正と予測(実測値は正)
3人目のスコアは0.30278616で閾値未満で負と予測(実測値は負)
4人目のスコアは0.68056765で閾値以上で正と予測(実測値は正)
FRP= 0.5
FP= 1
TN= 1
TPR = 1.0
TP= 2
FN= 0
上記の結果から、ROC曲線のX軸0.5, Y軸1のところに点をプロットします。
以下、他のスコアについても同様のことを実施します。
同様のことを他のスコアにも実施した結果、以下のような表のようになります。
閾値 | 予測値 | 実測値 | FP | TN | TP | FN | FPR | TPR |
---|---|---|---|---|---|---|---|---|
1.68056765以上を正 | 0 0 0 0 | 0 1 0 1 | 0 | 2 | 0 | 2 | 0 | 0 |
0.68056765以上を正 | 0 0 0 1 | 0 1 0 1 | 0 | 2 | 1 | 1 | 0 | 0.5 |
0.49029077以上を正 | 1 0 0 1 | 0 1 0 1 | 1 | 1 | 1 | 1 | 0.5 | 0.5 |
0.41097165以上を正 | 1 1 0 1 | 0 1 0 1 | 1 | 1 | 2 | 0 | 0.5 | 1 |
0.30278616以上を正 | 1 1 1 1 | 0 1 0 1 | 2 | 0 | 2 | 0 | 1 | 1 |
表のFPR,TPRを元にプロットし線を引くと以下のようにROC曲線を引くことができます。
ROC曲線の曲線より下の部分の面積がAUCになります。
AUCは1.0が最大になり、1.0に近いほど、精度が高いモデルと言えるよ。
また、AUCが0.5だと、ランダムなモデルと言えるのよ
実際にコードを書いて解説する
次に、AUCを求めるコードを書きました。
コードは、githubに載せたので参考に
この記事を書くのに役だった参考資料
AIジョブカレの授業
AIジョブカレは、AIに特化したプログラミングスクールです。
決まった日に教室に通う形式のスクールで機械学習講座の中で最も料金が安いといえる。
全部で8回の授業(1回 2時間)で業務で使うレベルの機械学習の知識を得られます。
もちろん、今回取り上げた分類の検証についても授業でも学習します。
https://programming-info.dream-target.jp/aijobcolle-study
やさしく学ぶ 機械学習を理解するための数学のきほん
大学レベルの数学を知らなくても問題なく読みすすめることができます。
回帰問題、ロジスティック回帰など丁寧に解説していて、かつ、ライブラリーを使わない方法でpythonを使った実装例があるため大変参考になります。数学や統計学で挫折してしまった人におすすめの本といえます。
分類問題の検証についても取り上げています。
Kaggleで勝つデータ分析の技術
タイトルのとおりKaggleで勝つために必要な問題の解き方のノウハウが凝縮された本です。
今回のAUCの記事を書く際に参考にさせていただきました。
先程紹介した、AIジョブカレのプログラミングスクールの講師も絶賛していたので、おすすめです!
まとめ
分類においてAUCは、慣れないと難しいです。
しかし、業務では必ず使われるため是非抑えておく必要があります。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |