Slide 1

Slide 1 text

「Kaggleで勝つデータ分析の技術」 輪読&勉強会 ~第2章 タスクと評価指標~ meow (id: meow_noisy) 2019/11/12(火)

Slide 2

Slide 2 text

私とKaggle  Kaggle歴  0日。やったことないです。  なぜ発表者に?  たのまれた  「こんないい加減な奴が発表しているのは許せん」と 義憤に駆られた方、次回再度2章を扱っていただいても 構いません

Slide 3

Slide 3 text

リソース  公式のgithubリポジトリ  https://github.com/ghmagazine/kagglebook  書籍内に掲載されているソースコードがある

Slide 4

Slide 4 text

2章の概要  分析コンペにおいて、どういうタスクの種類があるのかを 説明  あるタスクにおいて、どういう指標でモデルの優劣をつけ るのかの説明  最適化、leakage  座学なので、後から知るのでもいいと個人的には思う  指標の計算をしてくれるモジュールはあるので

Slide 5

Slide 5 text

2.1 分析コンペにおけるタスクの種類① 1. 回帰タスク(連続値の予測) 1. データから数値を予測する 1. ものの値段、店の来客数など 2. 分類タスク(クラスラベルの予測) 1. 二値分類 1. 2種類のラベルのどちらかを予測 (+その時の確率) 2. 多クラス分類 1. マルチ(多)クラス分類 1. 1つの“サンプルに対してどれかのクラス1つに対して割り当てる” 2. マルチ(多)ラベル分類 1. “多クラス問題から「サンプルに対してクラスは1つ」という制約を取り 除”く https://speakerdeck.com/brainpadpr/ basics-of-analysis-modeling?slide=33 参考: 1つの画像が複数のクラスに属する場合(Multi-label)の画像分類 - Qiita https://qiita.com/koshian2/items/ab5e0c68a257585d7c6f 図: https://prakhartechviz.blogspot.com/2019/ 02/multi-label-classification-python.html ※分類タスクは事後確率への 回帰タスクと捉える事もできる

Slide 6

Slide 6 text

2.1 分析コンペにおけるタスクの種類② 3. レコメンデーション  ユーザが購入しそうな商品や広告を予測 4. その他 1. 物体検出  画像から物体の外枠を推定 2. (セマンティック)セグメンテーション  画像から物体をピクセルレベルで 推定 http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html amazonの例

Slide 7

Slide 7 text

2.2 分析コンペのデータセット 1. テーブル(構造化)データ 1. 表形式のデータ 2. 分析したい情報が1列ごとに区分けされている 2. 外部データ 1. コンペで提供されている以外のデータセット 2. たいていは使用許可されないが、ドメインに基づく知識はモデルに 組み込むことができる 3. (時)系列データ 1. 株価、時間ごとの来客数など、サンプル間で関連がありそうなもの 4. 画像や自然言語(文章)などのデータ  冒頭p. ivにて書籍で扱わないことを宣言している

Slide 8

Slide 8 text

2.3.1 評価指標とは  モデルの性能や、その予測値の良し悪しを測る指標のこと  指標にもとづいて、順位が決まる  コンペごとに何の指標を使うか指定される  以下で、各タスクで採用されやすい指標を説明する

Slide 9

Slide 9 text

2.3.2 回帰タスクにおける評価指標  RMSE(Root Mean Squared Error)  よく使われる。2乗項があるため、外れ値の影響を受けやすい。  低いほど良いモデル  RMSLE(RMS Logarithmic Error)  yが大きな値を取る時  低いほど良いモデル = 1 =1 ( − )2 N: レコード数 i: レコードのインデックス : i番目のレコードに対するモデルの真の値 : i番目のレコードに対するモデルの予測値 L = 1 =1 (log 1 + − log 1 + )2 ※1を足しているのは が0で、 log 0 = −∞になるのをを防ぐため

Slide 10

Slide 10 text

2.3.2 回帰タスクにおける評価指標  MAE(Mean Absolite Error)  RMSEと比べて外れ値に強い  低いほど良いモデル  決定係数(R^2)  回帰分析の当てはまりの良さを表す  高いほど良いモデル = 1 =1 − 2 = 1 − =1 ( − )2 =1 ( − )2 = 1 =1

Slide 11

Slide 11 text

二値分類タスクの評価に関する導入  ある麻薬取締担当のおまわりさんは職質をすると、その人 は100%麻薬を持っています  このおまわりさんは優秀でしょうか

Slide 12

Slide 12 text

二値分類タスクの評価に関する導入  この話には裏がありました。  おまわりさんは、通行人すべての人に「あなたは麻薬を 持っていますね」と職質していたのです  このおまわりさんは優秀でしょうか  少なくとも、見分ける能力は持っていませんね

Slide 13

Slide 13 text

二値分類タスクの評価に関するの導入  すなわち、二値分類タスクにおいては、あてたいもの(例で は麻薬所持者)をあてたいものとあてるだけでなく、それ以 外のもの(一般人)をそれ以外のものと当てることも大事な のです  ここではあてたいものを正例、それ以外のものを負例と 呼ぶことにします

Slide 14

Slide 14 text

2.3.3 二値分類における評価指標 正例or負例の場合  混同行列(confusion matrix)  モデルが予測したレコードが真値はどうだったのかを分けた表  この行列の値から様々な指標を計算できる(後述)  accuracy, error rate  accuracy: 当てに行ったものが総数に対して正解している割合  異常検知のように正例or負例のデータ比が偏っている場合は指標とし て参考にならない  例: 100つあるデータのうち、99つが正常(正例)で1つが(負例)の場合、 すべて正例と予測してもAccuracy 99%と高い値になってしまう 真値は正例 真値は負例 正例と予測 8 2 負例と予測 4 10

Slide 15

Slide 15 text

Precision, Recall o o o o o o o o o o x x x x x x x x x x x x x x 前ページの混同行列を図にした。 評価データセット内に正例oと負例xがそれぞれ12つあるとする o o x x

Slide 16

Slide 16 text

Precision, Recall o o o o o o o o o o x x x x x x x x x x x x x x 評価データセットをモデルに正例か負例か当てさせる。 すると、青枠内のレコードを正例と予測した o o x x

Slide 17

Slide 17 text

Precision, Recall o o o o o o o o o o x x x x x x x x x x x x x x この時、正例と予測した10つのレコードのうち、 実際に当たっていたのは8つ すなわち、Precisionは8/10=0.8 Precisionは、誤検知の少なさととれる o o x x

Slide 18

Slide 18 text

Precision, Recall, F1-Score o o o o o o o o o o x x x x x x x x x x x x x x 一方で12つすべての正例のうち、モデルが正例と予測できたのは 破線枠の8つ。すなわち、Recallは8/12=0.6666… Recallは見逃しの少なさを表している o o x x

Slide 19

Slide 19 text

F1-Score(F値) o o o o o o o o o o x x x x x x x x x x x x x x 定義式から F1-ScoreはPrecisionとRecallの調和平均である。 2*0.8*0.6666/(0.8 + 0.6666) = 0.7272

Slide 20

Slide 20 text

Fβ-score(p.71)  タスクによっては、網羅性を重視したい場合がある  製品の検査  そのため、Recallに重みをかけてF1-scoreを計算したもの がFβ-score  もちろんβ=1の時は、F1-scoreに一致

Slide 21

Slide 21 text

二値分類のその他の評価指標  MCC(Matthews Correlation Coefficient;マシューズ相関係 数) p.72  使われる頻度は高くない  量が不均衡な評価データに対して、適切に性能を評価できる  “マシューズ相関係数は混同行列の相関みたいなもので、 完璧に当てることができた理想のテーブルと予測結果の テーブルがどれくらい一致しているかを見ています。”  マシューズ相関係数とは - Matthews Correlation Coefficient –より  https://blog.datarobot.com/jp/matthews-correlation-coefficient

Slide 22

Slide 22 text

2.3.4 二値分類における評価指標 正例である確率の予測(p.72)  まぐれでもあたるときがあるので、どれくらい自信をもっ て当てにいっているかを確かめる  → 当てる時の(事後)確率でモデルの性能を測る  問題設定  正例のラベルを1、負例のラベルを0に割り当てる  モデルの出力は正例である確率にする  真の値が正例の時は、1に近い確率を出してほしい

Slide 23

Slide 23 text

2.3.4 二値分類における評価指標 正例である確率の予測(p.72)  log loss(cross entropy)  値が小さいほど良い  例えば レコードが正例で、それを0.9(正例に近い)と予測した場合 -log(0.9)=0.105  一方、0.1(負例に近い)と予測した場合 -log(0.1)=2.303  このlogの値の平均を取る = − 1 1 ( log + (1 − ) log(1 − ))

Slide 24

Slide 24 text

2.3.4 二値分類における評価指標 正例である確率の予測(p.75)  確率だけ求めても、結局何%より上なら正例と決めるのか によって、モデルの良し悪しが変わってしまう  何%より上なら正例という閾値を変化させた際の予測精度を測る  AUC(Area Under Curve)  ROC曲線の下側の面積を計算したもの 図: https://speakerdeck.com/brainpadpr/basics-of-analysis-modeling?slide=82

Slide 25

Slide 25 text

AUC補足  もともとのモチベーションは、モデルが予測した時の確率 がアテになるかを測りたい  理想的なモデルは、正例は自信をもって100%正例と言って いてほしい  どうやって測る?

Slide 26

Slide 26 text

AUC補足  ここで、レコードを予測確率で降順ソートする。  理想的には、真値が正例のレコードが上にきてほしい  閾値をもって、正例と負例の境界とする  閾値をゆるくすると”何でも正例”と予測したことになる  おまわりさんの例を思い出そう 閾値以上なら正例 未満なら負例

Slide 27

Slide 27 text

AUC補足  何でも正例とみなすことで、すべての正例をカバー (Recall)100%のラインへどこかで到達する

Slide 28

Slide 28 text

AUC補足  モデルの理想的な性能としては、なるべく早い=閾値がき つい段階で、Recallが1に到達してほしい ここらへん

Slide 29

Slide 29 text

AUC補足  理想的なモデルにおいてはROCはこんな感じ  早い段階でRecall1.0に到達  これを評価尺度にしよう  累積グラフの下側の面積計算すればよい これがAUC

Slide 30

Slide 30 text

2.3.5 多クラス分類における評価指標(p.78)  multi-class accuracy  予測したものが正解だったレコード数をすべてのレコード数で 割った値  multi-class logloss  Mはクラス数  真値ラベルを1、それ以外を0としたときの、モデルの事後確率を下 記の式で評価する − 1 1 1 , log , 理想的には、真の値のインデックスに1が立っていてほしい [1,0,0], [0,0,1], [0,1,0],…のように

Slide 31

Slide 31 text

2.3.5 多クラス分類における評価指標(p.79)  mean-F1  レコードごとにF1-scoreを計算し、平均を取る  macro-F1  クラスごとにF1-scoreを計算し、平均を取る  micro-F1  レコード×クラスのペアごとにTP,TN,FP,FNを計算し、F1-scoreを もとめる

Slide 32

Slide 32 text

2.3.5 多クラス分類における評価指標(p.79)  mean-F1  レコードごとにF1-scoreを計算し、平均を取る  macro-F1  クラスごとにF1-scoreを計算し、平均を取る  micro-F1  レコード×クラスのペアごとにTP,TN,FP,FNを計算し、F1-scoreを もとめる

Slide 33

Slide 33 text

2.3.5 多クラス分類における評価指標(p.79)  mean-F1  レコードごとにF1-scoreを計算し、平均を取る  macro-F1  クラスごとにF1-scoreを計算し、平均を取る  micro-F1  レコード×クラスのペアごとにTP,TN,FP,FNを計算し、F1-scoreを もとめる

Slide 34

Slide 34 text

2.3.5 多クラス分類における評価指標(p.79)  mean-F1  レコードごとにF1-scoreを計算し、平均を取る  macro-F1  クラスごとにF1-scoreを計算し、平均を取る  micro-F1  レコード×クラスのペアごとにTP,TN,FP,FNを計算し、F1-scoreを もとめる

Slide 35

Slide 35 text

2.3.5 多クラス分類における評価指標(p.81)  quadratic weighted kappa  クラス間に順序関係がある場合に使用  例) 映画の評価を1~3のレーティングで表したもの  , は ( − )2。ランクが離れるほど、ペナルティ大。  完全な予測で1,ランダムで0,それより悪い場合は負値 = 1 − , , , , , , ↓予測→真値 c=1 c=2 c=3 total c=1 10 5 5 20 c=2 5 35 0 40 c=3 15 0 25 40 total 30 40 30 100 ↓予測→真値 c=1 c=2 c=3 total c=1 20*30/100 20*40/100 … 20 c=2 30*40/100 … … 40 c=3 … … … 40 total 30 40 30 100 , ,

Slide 36

Slide 36 text

2.3.6 レコメンデーションタスクに おける評価指標(p.84)  MAP@K(Mean Average Precision @ K)  推薦結果をK番目まで順位をだした時の順番の正確さ  Avg Precisionは下記URLを参照  MAP(Mean Average Precision)という指標の意味 - 具体例で学ぶ数学  https://mathwords.net/meanap  コードで殴ったほうが早い気がする @ = 1 =1 1 ( , ) =1 ()

Slide 37

Slide 37 text

kはグローバル変数

Slide 38

Slide 38 text

2.4 評価指標と目的関数(p.87)  評価指標  タスクにおけるモデルの性能を測る指標  目的関数  モデルの学習をする際に最適化する関数  モデルを学習する時は、評価指標が良くなるように最適化 をしたい  そのため、目的関数=評価関数としたい

Slide 39

Slide 39 text

 しかし、目的関数は微分できる必要があるなどの制約があ る  例えば、正解率だった場合、取る値が離散的になりやすい  モデル学習は「重みパラメータを少し増減させた時、目的 関数がどう変化するか」という勾配が必要なため、離散的 だと、勾配が0になってしまう  そのため、評価指標と目的関数を異なるものにすることが ある 2.4 評価指標と目的関数(p.87) w w 離散的 目的関数 連続的 目的関数 wをちょっと移動すれば、目的関数が どう振る舞うかわかる(すなわち微分)ので 最適化しやすい wを動かしても、 目的関数が変わらない(勾配0) ので最適化しにくい

Slide 40

Slide 40 text

2.5 評価指標の最適化(p.90)  評価指標の最適化のアプローチ  単にモデリング  評価指標=目的関数として使用できる時(RMSE, loglossなど)  評価指標を最適化  目的関数は別のものを使用した後で、後処理で評価指標用に値を変換 する  閾値(ハイパーパラメータ)の最適化  …など

Slide 41

Slide 41 text

2.5.2 閾値の最適化(p.91)  とりうる閾値をすべてとって、評価指標を調べる(グリッド サーチ)  ハイパーパラメータ最適化アルゴリズムを用いる  scipy.optimizeモジュールがある

Slide 42

Slide 42 text

2.5.3 閾値の最適化とout-of-fold(p.92)  out-of-fold: 学習データセットからデータを一部除外する こと  除外したデータを擬似の評価データセットとして閾値を決 める  データセットによっては、train用、評価(test)用の他、閾値(ハイ パーパラメータ)を最適化するためのvalidation用が提供されている こともある

Slide 43

Slide 43 text

2.5.4 予測確率の調整(p.95)  モデルの予測確率が評価指標に直結する場合、予測確率を チューニングしたい 1. 予測値をn乗する(n: 0.9~1.1) 2. 0や1に近い確率を出さないようにする  log0=-∞なので、0に近いものは0.1に置換する、など。 3. スタッキング(モデルの出力を別のモデルの入力にする)  2つ目のモデルに妥当な確率を予測させる 4. CalibratedClassifierCV(scikit-learnモジュール)の使用 1. たしかに右図(p.97の元図)を見ると、0に近い値を補正している https://scikit-learn.org/0.21/auto_examples/ calibration/plot_calibration_multiclass.html

Slide 44

Slide 44 text

2.6 評価指標の最適化の例(p.98)  事例なので割愛  “Kaggleで勝”ちたければ、コンペに合わせて、評価指標が高くなる ようなチューニングをしましょう

Slide 45

Slide 45 text

train dataset test dataset 2-7 リーク(data leakage)(p.107)  ニュアンスとしては、テストデータの情報が学習データ中に 混入(漏れる)した、的な感じ。  本来、学習データとテストデータは独立していないといけない  リークよりもleakageの方が通称として通っている気がする  leakageには2種類あり、データ提供者側のミスと、データサ イエンティスト(kaggler)側のミスがある

Slide 46

Slide 46 text

2-7 リーク(data leakage)(p.107)  データのleakage(コンペ主催者側のミス) の場合  使うことが想定されていない有益な情報が使える  例 1. テストデータが学習データに入っている 2. テストデータの特徴量に予測対象の値が入っている  (参考) “「正答率100%」になってしまう機械学習モデルの 例を挙げてみる” / 渋谷駅前で働くデータサイエンティストのブログ  https://tjo.hatenablog.com/entry/2016/01/27/235620  テニス四大大会データセット: 目的変数は勝敗  使える特徴量として「対戦カードのプレイヤー双方の名前」があった  一方の選手側からみた勝敗がtrainで、もう一方の選手からみた勝敗が testに入っている可能性があった

Slide 47

Slide 47 text

2-7 リーク(data leakage)(p.109)  Cross Validation時のleakage(kaggler側のミス)  分割単位を間違えたために、CV時は高いスコアが不当に出てしまった  時系列データのときにやらかしてしまいやすい  時間方向に切ってしまい、未来のデータが学習データに含まれていた  下図において、trainで①、③、testで②とか  参考 ”ディープラーニングで気候変動を予測(京大論文の追試) - Qiita”  https://qiita.com/takedarts/items/e4dffa6f1946361d2098  各年度からランダムにpickしてtrain,test分割したのではないか疑惑 1 2 3 4 5 6 t ① ② ③

Slide 48

Slide 48 text

まとめ  分析コンペで扱われるタスクに関して説明した  評価指標の説明と、Kaggleで勝つための評価指標のチュー ニングの仕方に関して説明した  時系列データを扱う場合のCVはleakageに注意しよう

Slide 49

Slide 49 text

参考文献 1. 分析の基礎(モデリング)/ Basics of analysis ~modeling~  https://speakerdeck.com/brainpadpr/basics-of-analysis- modeling  ブレインパッド社の新卒研修資料 2. “ゼロから作るDeep Learning”, 斎藤 康毅著, O'Reilly 3. “DeepCreamPyで学ぶモザイク除去~アソコもAIもディー プにラーニング~”, koshian2著, 技術書典6  https://note.mu/koshian2/n/naa60d5c9ebba

Slide 50

Slide 50 text

ご清聴ありがとうございました