キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
DataRobot コミュニティ

DataRobotの部分依存について

イ
イメージセンサー

DataRobotの部分依存について

DataRobotの「特徴量ごとの作用」の部分依存は

「他の特徴量を固定した状態で、ある特徴量の各値の時に得た結果(予測値の平均)」だと理解していましたが、

 

再度DataRobot社のブログから探してみたら、

「他の特徴量はそのままで、ある特徴量の各値の結果(予測値の平均)」

だと書かれていました。(https://www.datarobot.com/jp/blog/2018-02-15-modelxray/)

 

ただし、このブログに書かれていた内容であれば、

部分依存が予測線(青色の折れ線)と同じ意味のように見えてしまい、

 

改めて以下の3つのポイントについて教えて頂けたいです。

 ①DataRobotの部分依存がどれを計算してもので、

 ②予測線(青色の折れ線)とはどの違いがあるのか、

 ③「部分依存は他の特徴量の変動に影響を受けず、特徴量の各値のPositiveへの確率の傾向を表す」の理解で正しいかどうか

ラベル(2)
0 件の賞賛
5件の返信5
Ryosuke Hata
データサイエンティスト
データサイエンティスト

こんにちは。DataRobotの畑です。ご質問ありがとうございます。

 

特徴量ごとの作用における「部分依存」と「予測」の違いについての質問ですね。


①:部分依存の計算は、指摘されているブログの通りで、「他の特徴量の数値は元のデータのままで、興味のある特徴量の数値を全て特定の値に変えた時の予測の平均値」となります。

 

②:予測については、元データそのままでの予測の平均値になります。①で記載したような、興味のある特徴量の数値を特定の値にすることはありません。

 

③:基本的にはその通りです。ここで「基本的に」と書いているのは、当然例外があるためです。
例えば、他の項目のデータと強く相関があり、特徴量の説明力が強い場合に、予実と特徴量ごとの作用の関係が逆転する場合もあります。コミュニティにも以前ご質問がありました。


また、交絡因子がある場合、必要な項目をデータを含めずに特徴量ごとの作用の計算を行ってしまうと、意図しないグラフになる可能性もあります。この例はDataRobotのe-learningのコースにもございます。

なので、基本的にはその解釈で問題はありませんが、落とし穴にはまることもあるため従来の仮説や理論、解釈と対応しているのか慎重に検討しながら解釈いただければと思います

イ
イメージセンサー

@Ryosuke Hataさん

質問にご回答頂き、ありがとうございます!
本質問に対する回答は、頂いた内容で十分だと思いますが、
もし、以下の追加質問についても、何か分かりましたらコメントを頂けましたら幸いです。

 

■やりたいこと
いま、説明変数の一部を自分で変えられるようなケースで、ターゲットを最大化したいと考えています。
説明変数は社内スタッフの行動、目的変数はビジネスのKPIで行動最適化を行いたいです。
注目している説明変数は連続値なのですが、その値をいくつにするのが最も効率が良いか検討しています。

 

■ご相談の経緯
いくつかの試行錯誤を経て、上記の課題に対するアプローチとして因果分析と部分依存が使えないかと検討しています。

 

まず、選んだ説明変数とターゲットの実測値の相関を見た場合ですが、相関があっても
選んだ変数を大きくしてもターゲットが大きくなるとは限らないと当然ですが考えています。

 

そこで、選んだ変数とターゲットの間に因果関係があるかどうかについて因果分析の手法を調べてみました。
しかし、ある説明変数がターゲットに対して因果関係があるかどうかまでは調べた手法やドメイン知識などで判別できたとしても、
その説明変数が連続値だった時に、どの値だったときにターゲットに対してどれくらいの影響度を与えられるかが分かりませんでした。

 

検討している説明変数が二値項目だったら、「meta-learners」手法や「ダブルロバスト(Doubly Robust)法」の利用が考えられましたが、連続値の説明変数にはこの2つの手法を適用するやり方が分からなかったです。

 

《追加質問》

■質問No④(部分依存の使い方について質問)
他の手法やドメイン知識によって、選んだ説明変数がターゲットに対して因果関係があることを確認できたと仮定します。

このとき、選んだ説明変数の部分依存を見ることで、どの値の時にターゲットに対してどれくらいの影響を与えているのかを
見ることは基本的にできるでしょうか?

例えば、以下の図において、部分依存を見ると

_0-1645103508219.png

選んだ変数が15まではターゲットに対する影響があがっていますが、それ以降はほぼ横ばいになっています。
この時、選んだ変数は15がピークでそこまで大きくすれば最大限効果を出したと理解しても良いでしょうか?

社内の実例は公開できないため、以下の図は質問用に仮のデータを作りました)

 

■質問No⑤(交絡因子があった場合、解決するための工夫はあるでしょうか?)
自分で調べたところ、各業界ごとのモデルを分割作成したり、部分依存に発生しやすい多重共線性の対応のため
ALE(Accumulated Local Effects)
を作成する方法がありそうですが、
DataRobot
のツールで簡易に解決できる方法があれば教えて頂きたいです。

 

■質問No
このような最適化分析による行動改善に、部分依存を利用する事例が
あまりにも見つからなかったので、この分析方法の問題点やリスクなど思いつきましたらご意見を頂きたいです。

Ryosuke Hata
データサイエンティスト
データサイエンティスト

@イ 様

 

こんにちは。DataRobotの畑です。

 

追加のご質問ありがとうございます。

ご質問の最終目的は「KPIを最適化する説明変数を知りたい」とお見受けしました。

 

結論だけ先に書きますと、DataRobotの最適化Appを活用されるのはいかがでしょうか?

最適化Appであれば、予測モデルを使って、説明変数の特徴量を使ってより良いパラメータが何かを算出することができます。e-learningのコースもございます。
コスト的な観点から特定の説明変数をできるだけ小さくしたいといった制約条件もつけることができますので、まずはそちらをお試しになるのはどうでしょうか?

 

次に、質問をご回答いたします。

④:もしかすると、15よりも大きくなる時に別の因子も同様に大きくなっているのではないでしょうか?広告バナー数の後ろにさらに背景因子が絡んでいるように思えてしまいます。
もしくはデータの取得が少なく予測・実測との乖離がみられるのでしょうか?
この仮想データを見ただけでも要因が複数思いつくので、一度御社の担当のCFDSにお尋ねいただけるとより込み入った議論ができると思いますので、ぜひお問い合わせください。

 

⑤:ALEをDataRobotでそのまま実行することはできません。ただし、モデルをデプロイしているのであれば、alepythonなどのpythonライブラリを使ってAPI経由でALEプロットを書くことが可能です。
例えば、

import pandas as pd
import datarobot as dr
from alepython import ale_plot

dr_model = dr.Deployment.get({MODEL_ID})
data = pd.read_csv({YOUR_DATA})

ale_plot(model=None, predictor=lambda r:dr_model.predict(r).positiveClassPrediction, 
         train_set=data, features={YOUR_FEATURE}, monte_carlo=True)

で、ALEがplotできると思います。

 

⑥:部分依存は説明変数とモデルの予測値の関係を表現しているので、説明変数と目的変数の関係を正しく捉えきれていない可能性もありえます。また、平均値の算出を行っているので、利用の際に固定したい説明変数があったとしても、それらも平均しています。

なので、部分依存のみで最適化を行うのはあまり利用を勧めません。

イ
イメージセンサー

DataRobot 畑様

細かく複雑だった質問にも

丁寧にご回答頂き、非常にありがとうございます。

DataRobotの最適化Appも、以前試してみましたが、

その時に出た結果(最適値)がどれぐらいの信頼して良い結果か、

その精度が分からなかったので、検討をやめましたが、

e-learningコースにもあると教えて頂いたので、

使い方をもう少し勉強して、再度試してみようと思います。

そして、部分依存を実業務に利用しない理由とか、

ALEをDatarobotの予測結果から作る方法も教えて頂いて、

すごく助かりました。

ありがとうございます。

Ryosuke Hata
データサイエンティスト
データサイエンティスト

@イ 様

 

丁寧なご返答ありがとうございます。ご助力になったようで嬉しく思います。

 

少しだけコメントしておきます。

最適化した結果の振れ幅がどの程度大きいのか確認するために、解きたい問題が回帰問題であれば分位点回帰(Quantile regression)を使うという手もあります。

これを使えば、25%分位点や75%分位点の結果を見て、予測区間の幅を大まかに見ることが可能です。

 

もしまた何かご質問などありましたらコミュニティに書き込みいただければ嬉しく思います。

 

0 件の賞賛