小見一平、Salesforce、Einstien Analytics Specialist.
Einstein Discoveryは、機械学習の技術を使っていわゆる可視化では及ばないインサイトと予測を与えてくれます。非常に簡単にモデルを作ることができ、かつ、直感的な操作によりデータサイエンティストが行うような深い統計的分析を行うことができます。従来のAIツールと違ってあまりにも簡単にモデルを作成したり解釈することができるので、我々はEinstein Discoveryの裏側では高度な機械学習の技術が使われていることをともすれば忘れがちです。このOlfaの記事はEinstein Discoveryの核ともういうべき機械学習によって作られた予測モデルの解釈を多角的に見る方法を示唆してくれます。この記事を読むことはEinstein Discoveryが算出するスコアをより深く読み、予測モデルの信頼性を理解するための一助となるでしょう。
原題:Einstein Discovery: How good is my model really?
原題著者:Olfa Kharrat, Senior Solution Engineer, Einstein Analytics and AI (Linkedin)
人工知能、特に機械学習が今日のビジネス界を席巻しているように、仕事においても人間と機械との対話の新しい方法が導入されようとしています。私達は、日々の業務に優先順位をつけ、業務改善のための提言を行う予測モデルにより判断を導かれることが多くなってきています。このいわゆる拡張分析(Augmented Analytics)の技術は、一旦広く採用されると、特に人間の知識と組み合わせた場合に、より良い意思決定を行うことができるので、非常に大きな価値をもたらす可能性があります。
しかし、拡張分析を実現するためには、信頼できる予測モデルを構築しなければならず、それはモデルの品質を測定することから始める必要があります。
このブログでは、ビジネスアナリストやSalesforceパートナーがEinstein Discoveryモデルを評価し、本番やA/Bテストに入る際の驚きや戸惑いを回避するための主な測定指標を理解することに焦点を当てています。まず知っておきたいのは、予測モデルの出力結果のタイプによって評価指標が異なるということです。
実際、Einstein Discoveryでは、異なるユースケースに対して2種類の予測をサポートしています。2値出力予測(分類)と連続値出力予測です。まず、この2つの予測が何なのか、何が良いモデルを作るのかを定義してみましょう。
- 分類:「Yes」か「No」で答えられる問題、つまり「私の商談はいつ成約(失注)するのか」という問題は、分類、つまり、2値出力予測です。Einstein Discoveryによるこの質問に対する答えは、「はい」か「いいえ」かの尤度スコアです。優れた分類モデルは、「はい」と「いいえ」の答えを明確に区別することができます。
- 連続的な出力予測:このモデルの目標は、連続的な値を予測することです(すなわち、販売数量、商談の有効期間、割引などを予測すること)。この場合、予測が限りなく実際のものに近いものであれば、このモデルは良いと判断できます。
2値出力予測(分類)で使用されるものから始めて、後ほど連続値出力の評価指標に取り組みましょう。
2値出力予測(分類)
百聞は一見に如かずということで、分類問題の具体例を挙げてみます。商談クローズの可能性を予測するモデルを作ったとします。このモデルの精度は99%だったら、あなたはとても得意気になるでしょう! しかし、そのスコアだけで自信を持ってビジネスユーザーに予測結果をもたらすことができるのでしょうか?一緒に見ていきましょう。
精度(Accuracy)は、分類問題において非常に広く使われている指標です。いわゆる混同行列と呼ばれる行列に集計された数字を使って計算されます。混同行列は以下のようなものです:
混同行列は、4つの主要な指標を中心にしています。真陽性(TP:True Positive)はモデルの正の陽性の予測です。つまり、モデルがそれらが陽性であると予測し、本当にそうである場合です。例えば、予測が成約で結果も成約であった場合の商談です。
偽陽性(FP:False Positive)とは、誤って陽性の予測をしてしまったが、実際は陰性であった場合です。
同じことが、偽陰性(FN:False Negative)と真陰性(TN:True Negative)に適用されます。モデルによってなされた否定的な予測、つまり、商談の失注などです。正解率(Accuracy)は、すべての予測値と比較した正しい予測値の割合です。この定義を考慮して、ユースケースに戻って、99%の精度が何を意味するかを見てみましょう。
100の商談があり、将来的には1つだけが実際に成約するとしたとき、予測モデルは成約する商談が0であると予測したらどうでしょうか?この場合の混同行列を埋めてみましょう。
成約する商談がひとつだけあるので、偽陰性(FP:False Negative)は一つになります。予測モデルは成約を予測することができなかったにも関わらず、この場合の精度(Accuracy)は99%です。これは良いモデルなのでしょうか?
答えはNoです。実際、このモデルは商談の成約を予測するには全く役に立っていません。
では、分類モデルに適した評価指標とは何でしょうか?混同行列は、正と負を分離する選択された閾値スコアに依存します。
ここに例があります: 0.7のしきい値がある場合、0.7未満のスコアを持つすべての商談は、予測モデルによっ失注(ネガティブ)として分類され、0.7以上のものは将来的に成約(ポジティブ)として分類されます。しかし、予測モデルの品質の適切な評価は閾値の設定とは独立しています。良いモデルは、閾値に関係なく、できるだけ偽陽性は少なく、真陽性が増加します。つまり、モデルが(先に述べた)すべての商談が将来、成約すると言うならば、もちろん、これはTP(True Positive : 真陽性)の数を最大化しますが、その一方で、モデルが実際に失注したすべての商談をポジティブとして分類するので、複数の間違った警告を発生させるでしょう。この考え方を把握するために、受信機動作特性(Receiver Operating Characteristic)の略であるROCと呼ばれる曲線を用いています。この曲線の各ポイントは、特定のしきい値を与えられた真の陽性率(TPR)と偽の陽性率(FPR)を示しています。
前述したように、すべてのポイントごとに真のプラス率を上げて、間違った警告率を下げることを目標にしています。
その延長線上では、すべての点が同一性線から遠いほど良いということになります。したがって、青色の領域が大きいほどよい
AUC (Area under the curve)は、この概念を反映した指標であり、(1,1)点以下の全領域から青色領域の割合に等しい。結論から言うと、良いモデルはポジティブとネガティブを明確に見分けることができます。つまり、モデルによって与えられたスコアを使って(下のグラフのように)ポイントをランク付けすると、実際のポジティブとネガティブが混ざっている部分をできるだけ減らすべきだということです。
Einstein Discoveryでこれらの指標を見つけるには
ストーリーを開いたら、右上の「モデル」に移動し、タブエリアの「モデル評価」を選択します。上で紹介した混同行列とROC曲線の軽量版がここにあります。また、[概要]タブでAUCを確認することができます。混同行列は、上で紹介した正の予測(TP/TP+FP)と偽の予測(FN/FN+TN)の誤差を示しています。緑色のセルが上のラインのTP、2番目のラインのTNです。そして、同様に赤色のセルはFNとFPを表しています。曲線の中で異なるしきい値を選択すると、対応する図形を表示するために行列が更新されます。
それでは、もう一つの非常に興味深いトピック、連続値の出力予測に行きましょう。
連続値出力予測
指標を掘り下げる前に、Einstein Discoveryがどのように連続値結果を予測するかについて、最初に少し思い起こしてみましょう。連続値結果を予測するために、セグメント別の線形回帰を用います。各セグメントについては、平均値を予測値としています。(訳者注:これは驚くべきことをあっけなく言っています。いわゆるPiecewise RegressionあるいはSegmen Regressionと呼ばれる手法を使っていることを意味しています。なので、通常の一般線形回帰よりは複雑なモデルになりますがその分精度も高くなります。)
例えば、従業員数を説明変数として企業の収益を予測する場合を考えてみましょう。従業員40人から45人の間では、訓練データセットの平均収益が10kの場合、42人の従業員の会社を予測するためには、10kが使われます。もちろん、従業員の数だけではなく、複数の説明変数を同時に使用する場合、これはより複雑になります – その場合、セグメント値も互いに重み付けする必要があります – しかし、原理は同じままです。
これらの線形回帰モデルでは、見るべき重要な指標は、MAEと呼ばれる予測値と実際の値の差を表した指標です。
MAE(Mean Absolute Error)は誤差(実測値と予測値の差)の絶対値を見ることで、過小評価を過大評価と同じくらい重要にして(訳者注:つまり誤差がマイナスにならないようにして)、誤差が相殺されることを避けています。MAEはビジネスの観点から見てもわかりやすいです。例えば、サービスエージェントのCSATを予測している場合、MAEが0.5であれば、予測の値は、実際の値から平均して上下0.5ポイント離れていることを意味します。しかし、MAEは外れ値を強調しないというデメリットがあります。もう一つの重要なメトリックはRスクエアであり、これは以下で見ることができます。
上記は直感であって、その正確な計算ではないことに注意してください。Rスクエアが20%のモデルを使えば、平均値を予測値として取るよりも、20%正確に予測ができることを意味しています。一般的に、Rスクエアが高いほど良いモデルです。Rスクエアは外れ値に非常に敏感です。
(訳者注:ちなみにMAEと似た指標でMSE(平均二乗誤差)があります。これはMAEが実測値と予測値の誤差(残差)の絶対値を使うのに対して、残差の二乗を使います。したがって、MAEよりも外れ値に敏感になります。どちらかというと外れ値の判定はMAEとMSEを比較したほうがいいように思います)
凡例)
紫線はすべての実測値の平均
緑線は予測値
赤星は外れ値
説明)
ⅰ)最初のグラフでは、平均値はあまり良くないですが、それでも大多数の実測値の近くにあります。
ⅱ)データセットに外れ値を追加すると、平均線は後方へ移動し、実測値の大部分から離れていきます。したがって、平均値は悪い予測になります。Rスクエアがモデルを平均と比較しているので、このメトリックは、外れ値がある場合には、もう良い尺度ではありません。
では、MAEとRスクエアとその他に何を見ていけばいいのでしょうか?
まず、実測値と予測値を可視化します。曲線が等値線に近いほど、モデルは優れています。次に、実測値と予測値の差(誤差)である残差を調査します。残差の分布が必要です。
- 0線の両側にかなり対称的に分布しています。
- 一般的には、明確なパターン(線で近似できるような)はありません。
実際、誤差が明確なパターンを示している場合、それはモデルが予測に含めた出力変数と入力変数の間に関係があったことを意味します。では、一例を見てみましょう。以下では、日々の販売数量を予測しています。
Rスクエアの値が0.7のモデルがあります、これはRスクエア値としては良い値ですが、より多くの残差を調査しない限り、すべてのデータセグメントに対してモデルがうまく機能しているということにはなりません。最初に、”x “軸のDailyQuantityと “y “軸のPredictedSellOutを表すチャートを作成しました(下のグラフ)。チャートを見ると、売上数量(DailyQuantity)の高い値(1.2K以上)を過小評価していることがわかります(訳者注:つまり、実際の値より予測値が低い傾向にある)
次に、残差を描いてみました(下図参照)。残差は、上記で説明したように、それぞれの予測の誤差です。予測値が大きければ大きいほど、誤差が大きくなります。これがグラフにトンネルのような形が見られる理由です(トンネル効果)。
この現象は、分散不均一性の存在を示しており、誤差分散が出力セグメントごとに異なることを意味しています。
(訳者注:分散不均一性とは、xが増えるにつれてyの分散が大きくなること。良いモデルであれば説明変数が目的変数をよく表している場合は残差の分散は一定になるはず)
この例では、小さな値の場合は残差の分散は小さくなりますが、予測値の大きな値の場合は残差の分散は非常に大きくなります。この問題は、すべてのデータセグメントの出力を予測するために同じ線形関数を使用した場合に大きくなるでしょう。
しかし、Einstein Discoveryでは、データセグメントごとに異なる関数を予測しているため、異種混合性の影響を最小限に抑えています。この問題は、データがより疎であったり、一部のセグメントが稀であったりする場合にも継続する可能性があります。
緑線は0~5区間での予測を示す。
赤線は5~10区間での予測を示す。
緑線をすべての予測に使ったとしたら、区間5~10では完全にはずれているであろう。これが、データセグメントごとに出力関数を変更すると異種混合性が減少する理由です。
Einstein Analyticsで誤差やその他の評価指標を可視化する方法
Einstein Analyticsはデータの可視化と機械学習を統合しているため、複数の評価指標を簡単に可視化し、さまざまな角度から掘り下げることができます。ここでは、上記の例から残差を可視化してみました。データ マネージャを開き、データー>データフローを選択または作成します。以下の説明のように、新しいノードのセットを作成する必要があります。
1. 予測に使用したいデータセットをロードするにはEdgemartを使用します。
2.データセット内の行の予測値を生成するには、Prediction ノードを使用します。このノードの設定では、予測するモデル(予測定義)を選択するように求められます。モデルが表示されるのは、モデルリリース・ウィザードを使用してデプロイされた場合のみです。
3. ComputeExpressionノードを使用して、データセットの各行の予測値と実際の値の差を計算します。
4. 予測値と対応する予測エラーを含むデータセットを格納するためにレジスタノードを使用します。
5. 別の行ごとに誤差を可視化できるようにしてください。
最終的なデータフローは以下のようになります。
データフローを実行して結果のデータセットを開くと、先ほどデータフローに追加したエラーフィールドが表示されます。
散布図を用いて、X軸には予測値が、Y軸には対応する予測誤差が表示されるようにします。バブルはデータセットの各行のキーに基づいています。
デフォルトでは、Einstein Analyticsは2000行しか表示しませんが、UIまたはSAQLを使用してこの制限機能を変更することで、データセット内のすべての行が表示されるようにすることができます。以下、SAQLでどのように行われているかを表しています。
まとめ
このブログでは、Einstein Analyticsプラットフォームのあらゆる強みを活用してモデルの品質を評価する方法を見ました。
プラットフォームのデータ可視化ツールとモデルメトリクスの理論的な理解を組み合わせることで、さまざまな角度からモデルのパフォーマンスを完全に探求するための大規模なツールセットを提供します。
モデルを本番展開する前にこの分析が重要であることを覚えておいてください。
次は、モデル改善のヒントをいくつか見ていきます(https://www.salesforceblogger.com/2019/10/30/take-your-ed-model-from-good-to-great/)。
これらのヒントは、あなたのモデルを改善し、それゆえに採用の鍵となる信頼を高めることを可能にします。
記事を読み終えて
皆様、Olfaの記事はいかがだったでしょうか?2値予測、数値予測のどちらもEinstein Discoveryは各々の評価指標を提供しています。本記事はそれらの解釈の方法を詳細に説明するだけではなく、Einstein Analyticsが持つもう一つの特長である可視化エンジンを使って、予測値と実績値の誤差を可視化することで直感的にモデルの良し悪しを見る方法を学びました。この記事を通して、ますます皆様がEinstein Discoveryを好きになってくれることを願いつつ(小見一平)