例えば、以下のようなデータで「対象ID先が業況堅調により推進すべき先か予測したい」があった場合の質問です。
ID | 総売上 増減 | 販売先 1 | 販売先1への売上増減 | 販売先 2 | 販売先2への売上増減 | 業況堅調先 (ターゲット) | 学習/ |
1 | -500 | A | +100 | C | -600 | FALSE | 学習 |
2 | +200 | B | -500 | A | +700 | TRUE | 学習 |
3 | +400 | D | +1000 | C | -600 | ??? | 予測 |
私としては、機械学習における学習を経ても予測において「同じ行における特徴量(列)同士の判断については不可能」と認識しています。
つまり、ID(顧客)単体(例えば、ID「3」)で見た時に「販売先1である『D』の売上の増減が予測にどのような影響を及ぼしたか」までは予測できない(学習もそのような観点では困難)、と理解しています。
一方、「販売先1」にある取引先名が全体として頻出している場合にはどのようにTRUE/FALSE判断に影響しているかをワードクラウドで確認する、といったことはもちろん可能。
また、IDごとに販売先は異なるものの、「販売先1」にカテゴライズされた先への売上増減がどのような影響を及ぼしたかという点については学習も予測の説明も可能、と認識しています。
ちょっと説明が冗長で申し訳ありませんが、この解釈に誤りありませんでしょうか。(そもそも伝わりづらければ申し訳ありません・・・)
解決済! 解決策の投稿を見る。
@1040727 さん、
旧来の統計モデルの線形モデルだと各変数に係数が付く形になるのでおっしゃるとおり、列同士の判断は難しいところがあります。ただDataRobotではツリー系のモデルもあるので、ツリーでは、「特徴量Aがx以上ならと分岐を作ったあとに特徴量Bがyであるとする」といった形でモデルが作られるので、質問いただいた列同士の判断も巻き込んで行っている形となります。
ただ、モデルの学習を完全にコントロールすることはできないので、今回のケースであれば、販売先Cへの販売がとても大事というのであれば、そこの部分だけ別列にしていただくのが良いかと思います。
※ほとんど発生しないもの(販売先Dへの取引は全体で数件とか)を作っても発生数が少なすぎて学習できないので、そういうものは省いても問題ありません。
ID | 総売上増減 | 直近の売上増減 | 販売先Cへの売上増減 | 業況堅調先 |
1 | -500 | +100 | -600 | FALSE |
2 | +200 | -500 | Null | TRUE |
数値型同士や日付型同士であれば、DataRobotの機能で「組み合わせ特徴量の探索」にチェックを付けていただくと差や比、一致しているかなどの特徴量を自動で作ってくれます。
@Miogawa さま
いつもありがとうございます!
なるほど、決定木ベースだと分岐で織り込み済みという点、非常に勉強になりました。
本件のイメージは、ある特定販売先(例えば、例として挙げていただいたC)のみが重要になる形ではなく、顧客IDごとに販売先は変動するイメージです。
そうすると、深く考えず(言い方は選ばずに言うと、ですが)、データが準備できれば投入してみる、という手法を取ればいいかな、と思っています。
顧客IDごとにバラバラになるとすると、どこまで汎用的なデータにできるかというのも機械学習x業務知識の腕の見せどころポイントですね。
例えば、たくさんの販売先と行っているということに意味があるのであれば、販売先総数をいれてみるとか、過去の販売先取引のMaxやMinが効くなら1年以内のMaxMinとか、定期的に同じ所と取引していることが重要なら、2回目以上の販売先総数とかも考えるのもあり得るかと思います。
どれもデータ準備としてはSQL的にはGroup Byで簡単に作れるものですが、大事なのは業務を行っている人がそういったバラバラなデータに対してどんな仮説があり得るかを出すことだと思います。仮説がすべて当たる必要はない(あたっているかどうかの判定は機械学習が自動化してくれます)ですが、闇雲に放り込むのは準備の手間もすごいですし、モデルが必要以上に複雑になって解釈しづらくなってしまいます。
まずはモデルを作成してみて、あたってない行から上記のアプローチで特徴量エンジニアリングにチャレンジしていただくのがおすすめです!本格的なデータ準備の前には必ず簡単なデータでモデルを作ってみると効率がぐっと上がります!
>顧客IDごとにバラバラになるとすると、どこまで汎用的なデータにできるか
まさにここで悩んでいたところでした。が、すべてを一気にやらず、小さいデータでモデルを作り愚直に特徴量エンジニアリングをしようと思います。また色々とお教え下さい!