評価指標入門を読んでみた
はじめに
『評価指標入門〜データサイエンスとビジネスをつなぐ架け橋〜』という本を読んでみました。
CRISP-DMに沿った推論モデルの開発において、「評価指標の選定」と「開発した推論モデルが必要な精度を達成しているかを判断するための閾値をどう設定すれば良いか」がわからず、困ったことがあったからです。
ネットで評価指標について検索すると、評価指標はいろいろ出てくるのですが、例えばRMSEだと「小さければ小さいほど良いです。ただし、どのくらい小さいと良いのかはデータサイエンティストの経験によります。」とか書かれていて、「その経験の部分を知りたいんだけど…」と感じることが多かったです。
そもそも、回帰の問題だったらRMSEやMAE等の評価指標が小さければいいんでしょ的な考えがあり、教科書的な評価指標というかよく出てくる評価指標の閾値をどう考えるのかを知りたくて読み始めました。
本書は、第1章 評価指標とKPI、第2章 回帰の評価指標、第3章 二値分類における評価指標、第4章 多クラス分類の評価指標となっており、第2章まで読んだ後に本記事を書いているのですが、第2章まで読んだ時点で上記の考えが変わり、教科書的な評価指標では推論モデルが真にビジネスインパクトを与えるかを判断できない場合もあるのではないかと思うようになりました。
学んだことの整理
推論モデルによってビジネスインパクトを与えられるかについてはビジネス上のKPIとのつながりで考えるようにすると良いようです。
推論モデルの精度が向上すれば、KPIも改善されるというような相関関係が成り立つようにつながりを考えます。
回帰問題を扱うことが多かったため、回帰の内容の中で僕にとって特に大きな学びとなった部分について整理してみました。最終的な利益の計算式の変換が間違えていそうだったので、まとめ直しています。(僕が間違っていたらすみません…)
ここで「はじめに」に書いたような状況に陥っています。まさに、本書を読む前に悩んでいたことを本書が途中で再現してくれていました。
月次の実測来店顧客数を10人に固定したとき、月次の予測来店客数の変動による利益の変動は上記のようになります。
月次の実測来店顧客数が10人であるレコードについて、月次の予測来店客数が10に近づくほど、利益が高くなるような利益の計算式(評価指標)になっているわけです。
つまり、推論モデルが出力する推論値が実測値に近いほど利益が最大化されるように、KPIと評価指標のつながりができているのです。
この計算式(評価指標)を立てられている状態が、推論モデルを向上させるというデータサイエンティストの苦労がビジネスに反映される状態ということになります。
感想
ここまで整理して、RMSE等はあくまで目的関数であり、評価指標とイコールであるとすぐ結びつけることはよくないなと感じました。目的関数(損失関数、誤差関数、コスト関数とも呼ばれる)と評価指標の違いについても書かれているので、気になった方はぜひ本書を読んでいただきたいです。
また、評価指標となる計算式を立てるためには、向上させたいKPIを構成する項目の洗い出しとその中でどの項目を推論するのかを決める必要があると思いました。
そのため、評価指標は、データサイエンティストだけで勝手に決められるものではなく、お客様やPMと相談して決められるものであると感じました。KPIを構成する項目が間違っていると、意味のない評価指標を立てることになり、手戻りが発生するためです。データ分析に興味を持たれているPMロールの方も読まれると良いのかなと個人的には思いました。
加えて、推論モデルを開発する前にお客様が想定されているKPIを共有していただくときに、そもそもKPIが不適切なものというか違和感を感じるものになっていた場合、こちらから新たなKPIを提案する必要も出てくるのかなと思いました。
Kaggleに挑戦していたときは、評価指標はすでに決められていたので、その時はあまり意識することはありませんでした。Kaggleでトップを取りたいという方には本書はあまりおすすめしません。
ただし、実務上では、この推論モデルでビジネスに良い効果がありますと説明できる必要があります。お客様に納得していただけるように、これから評価指標の立て方を見直すべきで、その大まかな流れがわかったと思います。
分類問題の事例も載っていますし、回帰問題についてはさらに詳しくわかりやすく書かれていますので、まだ読まれていない方はぜひ読んでいただきたいです。こういう事例があって、このときはこういう風に評価指標を立てましたみたいな話ができる場があるといいのになあ。
参考
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion