Skip to main content
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル最適化指標・
評価指標の選び方
Enabling the AI-Driven Enterprise
Confidential. ©2019 DataRobot, Inc. – All rights reserved
本日のアジェンダ
1. 前提 (20分)
a. なぜ指標を意識する必要があるのか
b. 機械学習プロジェクトで使われる指標の種類と構造
2. 指標リファレンスとDataRobotでの選択ルール (60分)
a. DataRobotセットアップ
b. 回帰(RMSE,RMSLE,MAE,MAPE,Tweedie,Gamma,)
c. 二値(Logloss,AUC,KS,Gini)
d. 「演習」Logloss計算してみましょう!
e. 多値(Micro-Macro)
3. DataRobotのデフォルトから変えるべきケース (25分)
a. 評価の時
b. ビジネスケース
c. 答えが明確にわかっているケース
d. 加重指標の場合
Confidential. ©2019 DataRobot, Inc. – All rights reserved
なぜ指標を意識する必要があるのか
どんなにモデルの精度を向上しても、ビジネスに則していない指標で精度が測られていたならば解釈が難しかっ
たり、実装し時の効果が期待と異なる結果になる
一方で最終的なRoIをターゲットにしてオプティマイズすることは難しい
• モデルをデプロイしてみたらどうなったか、という過去データはない
• 実装済み既存モデルがあれば、モデル精度からRoIを解釈しやすくなる
• よってビジネスRoIは計算が難しく、シミュレーションを伴うことも多い
• モデルだけでビジネスが動いてるわけではない(取られるアクションの質にもよる)ので、モデルによる貢
献は分解して理解するほうが理想
ビジネスRoIとモデルの個別精度が相関するよう、問題設定することも重要
• 例:会社の倒産を予測するモデルが、与信には使えない(期間が違う)
• 例:離反しそうな顧客を見つけるモデルができても、引き止められない
とは言え、特徴量エンジニアリングや、ハイパーパラメーターのチューニング、リーケージ除去などのテーマと比
べると結果に与えるインパクトはそんなに大きくない場合も:「どの指標では測ってもいいモデルはいいモデル」
Confidential. ©2019 DataRobot, Inc. – All rights reserved
機械学習プロジェクトで使われる
指標の種類と構造
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
与えられたアルゴリズムと
設定で最適なモデルを生成
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
損失関数
モデルの精度を上げるアルゴリ
ズムの設定をみつける
最適化指標
複数モデルを評価・比較して選
抜する
評価指標
モデル実装時の効果試算し、実
ビジネスでの利用判断
ビジネスKPI
モデル利用後の効果を検証 RoI
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
与えられたアルゴリズムと
設定で最適なモデルを生成
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
損失関数
● 予測値と、実測値の誤差(損失)を最小限に
するような最適化が行われる。
● 最適化計算の性質上、損失関数(コスト関
数、効用関数)は多くの場合微分可能性
や、計算効率が要求される
● アルゴリズムによって利用できる指標の種
類は限られており、増やすためには追加開
発が必要となることも
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
モデルの精度を上げるアルゴリ
ズムの設定をみつける
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
最適化指標
● 各アルゴリズムの設定値(ハイパーパラメー
タ)の中で、最も精度の高いモデルを作れる
値を探索する
● DataRobotではグリッドサーチを採用。最適
化の対象となる指標の種類は自由度が高い
が、閾値の設定が必要な指標は適さない
○ 閾値の設定を自動で行うことは困難
○ 閾値の設定にはより多くの計算コスト
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
複数モデルを評価・比較して選
抜する
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
評価指標
● これまでの傾向と比較するために、より解釈
可能性の高い評価指標を使い、最終的に
使うモデルを決定する場合も
○ 例:AUCなどの比較し易い指標
● よりビジネスKPIに近い指標が好まれるた
め、プレシジョン・リコールなどの閾値を伴う
指標が使われることもある
○ 最初に全体指標、その後に閾値あり指
標、などの組み合わせが一般的
Confidential. ©2019 DataRobot, Inc. – All rights reserved
損失関数 最適化指標 評価指標
DataRobot内での指標の選択方法
*損失関数は任意の組み合わせで
選ぶことは出来ない
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
モデル実装時の効果試算し、実
ビジネスでの利用判断
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
ビジネスKPI
● モデルをビジネス実装したときに期待される
効果を数値化し、実装実施判断を行う
○ 例:マーケティングのレスポンス率
○ 例:在庫欠品商品数
● 次のステップのビジネスインパクト(RoI)計
算と同等であったり、両ステップを一度に
行ったりもされる
Confidential. ©2019 DataRobot, Inc. – All rights reserved
モデル利用の各ステージに即した指標を使うことが重要
モデル利用後の効果を検証モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
目的             指標    
RoI
● 実際のモデル利用の結果としてどのような
効果が現れたのか、経済的な指標として算
出する
● RoIとざっくり言われるが、コスト減、利益
増、売上増等、様々な形を取る
○ 分母には施策実施にかかったツール、
人件費、開発費等が入る
● 企業イメージ、採用など定量化が難しかった
り、間接的な効果であることも
Confidential. ©2019 DataRobot, Inc. – All rights reserved
注意点
• DataRobotのプロジェクト作成時に選ぶ指標は損失関数と最適化指標の両方を指
定するが、損失関数に関しては必ずしも選択した指標が使われない
• 例:ロジスティック回帰はいつもLogLoss損失関数を使う
• 評価指標の結果を良くするためには、同じ指標を損失関数と最適化指標に設定し
たら良いとは限らない
• 例:AUCを最適化指標に設定するよりも、LogLossを使ったほうが、AUCの高いモデルが出来
ることがある
• チューニングにおける探索の効率は指標によって変わってくる
(異なる局所最適解が見つかることがある)
• ビジネス指標に結果的に相関が強い関数などの明確なルールは存在しない
• よって、各ステージである程度独立した選択が行われる場合もある
Confidential. ©2019 DataRobot, Inc. – All rights reserved
2値分類の例
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
指標    
損失関数はLogLoss
最適化指標はLogLoss
AUCでモデル候補を選択し、固定リコールでのプレシ
ジョンで最終モデルを決定
不正取引の誤判定率が60%下がることを確認
不正取引をチェックする人員を40%削減
Confidential. ©2019 DataRobot, Inc. – All rights reserved
連続値回帰の例
モデリング
チューニング
比較・評価
ビジネス判断
ビジネスインパクト
指標    
損失関数はGamma Deviance
最適化指標はGamma Deviance
MAPEで、ざっくりモデル精度を把握し、ベストなモデル
を選択
これにより、値引きされた商品数が10%減
結果、売り上げが5%増加
Confidential. ©2019 DataRobot, Inc. – All rights reserved
workshop1.xlsxをアップロードし、今週の売上をターゲット、モデリングモードを手動、主
時間を表す特徴量を週にして、最適化指標を確認しましょう
手元の環境で試してみよう1
Confidential. ©2019 DataRobot, Inc. – All rights reserved
高度なオプションからその他、
最適化指標をみたら開始ボタンを!
ここでは最適化指標は変更しない
手元の環境で試してみよう2
Confidential. ©2019 DataRobot, Inc. – All rights reserved
リポジトリから、
Dropout Additive Regression Trees Regressor
(Gamma Loss) (15 leaves)
だけを選択し、実行
手元の環境で試してみよう3
Confidential. ©2019 DataRobot, Inc. – All rights reserved
作成したモデルの評価タブの高度なチューニングからobjectiveを見てみましょう
https://github.com/Microsoft/LightGBM/blob/master/docs/Parameters.rst
手元の環境で試してみよう4
Confidential. ©2019 DataRobot, Inc. – All rights reserved
各指標の
特徴リファレンスマニュアル
Confidential. ©2019 DataRobot, Inc. – All rights reserved
回帰問題における指標の一覧
指標名 特徴 損失関数 最適化関数 評価関数 ビジネスKPI
RMSE 大きいエラーを重要視す
る
◯ ◯ △ x
RMSLE 予測値と実測値の比率
の対数
◯ ◯ △ x
MAE 誤差の幅を等しく扱う ◯ ◯ ◯ △
MAPE 誤差を百分率で考慮 x △ ◯ ◯
Tweedie 0か0以外で2種類の分
布を持つ
△ (BP依存) ◯ △ x
Gamma 連続確率分布 △ (BP依存) ◯ △ x
Poisson 離散確率分布 △ (BP依存) ◯ △ x
R Squared 「決定係数」 x △ △ x
Confidential. ©2019 DataRobot, Inc. – All rights reserved
RMSE、RMSLE
• RMSE (Root Mean Squared Error)
• 大きな間違いをより重要視する
• 大きな価格の誤差を許容できないケース
• DataRobotでは回帰問題の時のデフォルト
指標
• 概ね万能
• RMSLE (Root Mean Squared Logarithmic Error)
• 幅ではなく、誤差の割合を重要視する
• かつ上振れよりも下振れを重要視する
• 小規模のレンジの誤差を重要視したい場合
かつ下振れを抑えたいケース
Confidential. ©2019 DataRobot, Inc. – All rights reserved
MAE & MAPE
• MAE (Mean Absolute Error)
• 誤差の幅に比例して重要視する
• 平均X予測がずれていると解釈可能
• MAEで最適化していくと最大誤差がRSMEに比べ
て大きくなる傾向にはある
• MAPE (Mean Absolute Percentage Error)
• 誤差の割合に比例して重要視する
• 平均X%予測がずれていると解釈可能
• ターゲットに0が含まれていると選択できない
• ターゲットに値が小さいものが含まれるケースには
考慮が必要
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Poisson deviance, Gamma deviance
• Poisson deviance
• 離散的な事象に対しての発生確率を示す
• 一定区間や一定時間で発生する離散的な
事象に対して使用する
• DataRobotで自動的に検出
• 一定時間の交通量や1分間のアクセス数
• Gamma deviance
• 連続確率分布の一種
• 期間ごとに1回起きる事象がn回起きるまで
の時間分布を表す
• DataRobotではテイルの長い分布に対して
自動的に選択される
• ウイルスの潜伏期間や製品部品の寿命
• 売上や収入にもよく選択される
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Tweedie deviance
• GammaとPoissonを組み合わせたもの
• 各事象はGammaに従い、
発生回数はPoissonに従う
• DataRobotではゼロブースト問題において自動
的に検出
• ゼロブースト問題
• 発生しない(0)ことが多いが、発生すると連
続値をとるターゲット
• 保険金支払額
• 喫煙量
Confidential. ©2019 DataRobot, Inc. – All rights reserved
(おまけ)頻度ー強度モデル
Tweedie deviance が検出されるプロジェクトにおいては、頻度ー強度モデルも
DataRobotでは実行される
損失関数としてTweedie devianceを使用するのではなく、2段階の問題に分ける
1. 発生回数を予測するモデルをPoissonを損失関数としたモデル
a. 回数は関係なく発生するかしないかの二値の場合にはLogLossを損失関数として利用
2. 発生した事象だけの連続値回帰問題としてGammaを損失関数としたモデル
Confidential. ©2019 DataRobot, Inc. – All rights reserved
R Squared a.k.a.「決定係数」
• メリット
• 全データが正確に捉えられている場合に、その
ままモデルの性能を表すパラメータとなる
• デメリット
• データにノイズが多いと勝手にスコアがよくなる
傾向にあり、統計家は敬遠することも
• DataRobotではアウトオブサンプルで計算
Confidential. ©2019 DataRobot, Inc. – All rights reserved
二値分類における指標の一覧
指標名 特徴 損失関数 最適化関数 評価関数 ビジネスKPI
LogLoss エラーの幅も考慮 ◯ ◯ △ x
AUC 順位付け x ◯ ◯ x
Gini Norm / AR 順位付け x ◯(AUCと等価) ◯ x
Kolmogorov-Smir
nov
正解数と誤り数の
幅を定義
x ◯ ◯ x
RMSE △ △ △ x
TopX% 上位の精度のみ x △ ◯ △
Precision/Recall しきい値が必要 x x △ ◯
Confidential. ©2019 DataRobot, Inc. – All rights reserved
LogLoss a.k.a. ”Logarithmic Loss” or「クロスエントロピー」
• 情報理論(エントロピー)に基づく理論的に
も扱いやすい指標
• 実測と予測が乖離しているほどペナル
ティーが加算される。
• 乖離が大きいほどペナルティーは大
きくなる(Logで強調される)
• LogLossが小さいほどモデルの精度
が高い
• 数件でも誤ったラベル付けをしている
と罰則が非常に大きい
• 多値分類でも利用可能
• Loglossの値で別プロジェクト(別のデー
タ)のモデルと比較できない
Confidential. ©2019 DataRobot, Inc. – All rights reserved
AUC a.k.a “Area Under the (ROC) Curve”
• ROC曲線の下の面積
• 比率を1:1にした場合、ランク付けした
際に合っている割合となる
• 完全にランダムなモデルの場合でも
0.5を取り、1が最も精度が良い
• 他のモデルとの比較がしやすい
• わずかな違いは同一のスコアとなる
場合がある
• DataRobotでAUCをモデル最適化指標に
選択すると、損失関数はLogLossが取ら
れ、ハイパーパラメータチューニングでAUC
が使用される
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Gini Norm
• 実測値と予測値の順位が正しいかどうかを
評価する
• 絶対的な差は考慮しない
• 二値分類においてはAUCと等価
• 2*AUC-1:AR値とも呼ばれる
• 0が最小で1が最大
• 回帰でも分類でも定義できる
• 相対的な比較が可能
• DataRobotでは損失関数はLogLossが取
られ、ハイパーパラメータチューニングで
Gini Normが使用される
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Kolmogorov-Smirnov
• 累積確率分布の差を表す
• 正負の予測分布がよりはっきりと分か
れているほど高い値をとる
• 全く分類できていない予測分布に差
異がでない問題では0となる
• DataRobotでは損失関数はLogLossが取
られ、ハイパーパラメータチューニングでks
値が使用される
• ROC曲線タブに値が表示されている
• 金融でよく使われる
Confidential. ©2019 DataRobot, Inc. – All rights reserved
(ハンズオン15分間)二つのデータセットでLogLossを計算してみましょう
Calc_Logloss_ROC.xlsxをexcelで開いてください。
1.予測と実測の列がシート1とシート2にあるので、それぞれのシートでLogLossを以下
の式を参考に計算して見てください。y_iは実測でTrueなら1、Falseなら0となります。Σは
両方にかかっていて、y_i^は予測値を表しています。
2.どちらのシートの方が予測の精度が高いと思いますか?予測値に対して閾値ごとの
実測のFalseとTrue数を入れると予測分布とROC曲線が描かれるので、比較しましょう。
Confidential. ©2019 DataRobot, Inc. – All rights reserved
二値分類ではROIを出すために閾値が必要
予測値は確率値として出力されるため、最終的にターゲットであるとするかターゲットでないとするか
は閾値によって決まってきまる。一般的には閾値以上ならターゲットであり、閾値未満ならターゲット
でないとする。
閾値はビジネス用途によって、どんなリスクを取るかによって決まってくる。
閾値によって変動するプレシジョンやリコールを確認する。
ID 実測値 予測値
1 ターゲット 90%
2 ターゲットでない 60%
3 ターゲット 50%
4 ターゲットでない 20%
5 ターゲットでない 15%
閾値を50%と20%の間に置
くとID2を間違える
閾値を90%と60%の間に置
くとID3を間違える
Confidential. ©2019 DataRobot, Inc. – All rights reserved
多値における指標の一覧
指標名 特徴 損失関数 最適化関数 評価関数 ビジネスとして利用
LogLoss 大きいエラーを
重要視する
◯ ◯ △ x
Accuracy 全体の正解率 x ◯ ◯ ◯
Balanced
Accuracy
各クラスの正解
率の平均
x ◯ ◯ △
AUC 順位付け x ◯ ◯ x
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Micro-Macro
• Micro Average
• 全体の値
• クラスごとのデータサイズが影響する
• 大量に出現するクラスがあり、それが簡単に分類でき
る場合、値がよくなる
• DataRobotのAccuracyはMicro
• Macro Average
• 各クラスの値の平均
• クラスごとのデータサイズが影響しない
• 大量に出現するクラスがあり、それが簡単に分類でき
ても値がよくならない
• 小さなクラスを重要視する場合に利用する
• 学習データに偏りがある場合に使用する
• DataRobotのBalanced AccuracyはMacro
label tp fp fn recall
tp/(tp+fn)
precision
tp/(tp+fp)
c1 10 10 10 0.5 0.5
c2 90 10 10 0.9 0.9
total 100 20 20
Micro 100/
(100+20)
=0.833
100/
(100+20)
=0.833
Macro (0.5+0.9)
/2
=0.7
(0.5+0.9)
/2
=0.7
Confidential. ©2019 DataRobot, Inc. – All rights reserved
DataRobotの
デフォルトから変えるべきケース
Confidential. ©2019 DataRobot, Inc. – All rights reserved
評価のときには必要な指標に変更する
DataRobotのリーダーボードではデフォルトで最
適化する指標で表示される
LogLoss->AUCやRMSE->MAPEといったケー
スがある
*AUCは小さいな変化が捉えられないという欠点が LogLoss
に比べて存在する
*ゼロブースト問題をMAEに変更すると必要以上に悪いスコ
アがでる
モデリング後に評価指標を選択してもモデル自
体が再計算されることはない
Confidential. ©2019 DataRobot, Inc. – All rights reserved
ビジネスケースによって指標を変更する
RMSEでは大きなエラーを重要視する傾向があるが、ビジネスケースによっては、エラー
の幅に関しては等価なこともある。この場合にはMAEにおいて最適化するほうが望まし
い
エラーの幅だけでなく、上振れと下振れに差があるケースも存在する。在庫リスクと機会
損失では在庫リスクのほうが直接的なインパクトが大きいため、上振れと下振れを同じ
に捉えるRMSEでなく、RMSLEにおいて最適化するほうが望ましい
MAPEは値が小さい領域の誤差を必要以上に重く判定するため、変更する際には注意
が必要
Confidential. ©2019 DataRobot, Inc. – All rights reserved
売上予測における下振れ
ストーリー
毎週次の週の売上予測の値によって人員の配備シフトを決定する。
上振れはコスト的にはよろしくないが、大きな下振れの場合にはオペレーションに影響
し、店のブランドに傷つくため、下振れをなるべく減らしたい。
上記のビジネスロジックに合いそうな指標を選択した場合に、実際のモデルはどの
ようになるか。同じプループリントのDropout Additive Regression Trees Regressor
(15 leaves)を利用して比較してみましょう。時系列の精度から検定のデータセットにおい
て、下振れがどこまで防げるようになるのか
Confidential. ©2019 DataRobot, Inc. – All rights reserved
売上予測における下振れ
Confidential. ©2019 DataRobot, Inc. – All rights reserved
DataRobotではターゲットを選択すると最適化の指標はプロジェクト単位で固定され、変
更することができない。(モデル単位での損失関数は変更可能)
プロジェクトの管理->プロジェクトコピーを選択して、アップロード直後の状態のプロジェク
トを作成可能
売上予測における下振れ
Confidential. ©2019 DataRobot, Inc. – All rights reserved
売上予測における下振れ比較結果
RMSE
RMSLE
Confidential. ©2019 DataRobot, Inc. – All rights reserved
売上予測における下振れ比較結果
Confidential. ©2019 DataRobot, Inc. – All rights reserved
アンサンブルモデルにおいて、別々の損失関数で作成したモデルを組み合わせる。この
場合においては最終的な最適化指標は目的として指定されている指標を選択する
ex) 最終的な比較指標がMAEで合ったとしても、損失関数としてはMAEで作成したモデ
ルとRMSEで作成したモデルをアンサンブルで組み合わせたものを使用する。アンサン
ブルモデルはMAEで最適化、評価する。
コンペでのテクニック
Confidential. ©2019 DataRobot, Inc. – All rights reserved
答えが明確にわかっているケース
現在取れているターゲットのデータ数では、DataRobotが分布を捉えきれなかったが、一
般的にその事象が特定の分布に従うとすでにわかっている場合には、その分布に設定
することによってより未知のデータへの対応力が上がる
ex)
poisson分布
流れ星の数、交差点の車の数、Webサーバへの1分間のアクセス数
gamma分布
電子部品の寿命、通信におけるトラフィック待ち時間、所得分布
Confidential. ©2019 DataRobot, Inc. – All rights reserved
加重指標の場合
特定の商品などを重点的に当てたい場合にはウェイトを指定する。ウェイトが指定された
場合には加重指標が使用される。
またダウンサンプリングを利用した場合にも、同様に加重指標が使用される。
ex) 1000行のデータがあったとして、990がFALSE、10がTRUEである場合。
ダウンサンプリングしてFALSEから500行を取り除き、
490行のFALSEと10行のTRUEを用いると
class_F_weight = (990 / 1000) / (490 / 500) = 0.99 / 0.98 = 1.0102
class_T_weight = (10 / 1000) / (10 / 500) = 0.01 / 0.02 = 0.5
Confidential. ©2019 DataRobot, Inc. – All rights reserved
まとめ
やはり優先度は低い!!!ただ数パーセント勝負の時には。。。
1. まずはモデルを走らせて可能性があるか見る(パターンがあるか、ないか)
2. ベースラインとなるモデル精度の確認
3. 相性のいいブループリントを探す<-リポジトリ全実行
4. ハイパーパラメータが精度と収束しているかチェック<-高度なチューニング
5. 外れているところに対して特徴量エンジニアリング<-特徴量の作用・予実
6. 残り数パーセントの伸びしろを狙って最適化指標チューニング!!
Confidential. ©2019 DataRobot, Inc. – All rights reserved
Thank you!
Data Scientist @ DataRobot
Confidential. ©2019 DataRobot, Inc. – All rights reserved
アンケートにご協力ください
https://forms.gle/Y6dQPq4gXd4oVcUdA