DataRobot(データロボット)は機械学習民主化の橋頭堡か?:機械学習を考える

AUTHOR :  田中 耕比古

DataRobotがあれば、予測モデルづくりが容易になる

DataRobotというツールがあります。弊社(ギックス)でも導入して、いろいろと試してみているところなのですが、なかなかエポックメイキングなツールだなぁと日々痛感しています。ということで、本日は、そんな「機械学習の画期的ソリューション」である”DataRobot”をご紹介します。

DataRobotは、ええかんじの予測モデルを探してくれるヤーツ

DataRobotは、一言で言えば「いろいろな予測モデルを勝手に試してくれるツール」です。

モデルは無数に用意されていますが、一つのデータセットに対して、だいたい30個程度のモデルを選んでくれると考えていただけば良いでしょう。(細かい設定の違いなどを考慮すると、1000以上のモデルが用意されています。)

(簡易な)データチェック&データ整形をしてくれる

まず、DataRobotにデータを取り込むと、簡易なデータチェックを行ってくれます。具体的には、件数や、値の種類(例えば、フラグだと2ですね)、数字の場合は、平均・中央値・最小値・最大値などの、データ概要を教えてくれます。(データ整形も一部、行ってくれます)

これにより、どのデータが、どういう性質のものなのかを(荒く)推定することができます。

※但し、外れ値と認識した情報を、defaultでは除外していたりするサービス精神が豊富すぎる仕様もあったりしますので、使用時には何卒お気を付けください。

目的変数を決めるのは人間の仕事

続いては、目的変数を決めます。

例えば、お店の売上予測をしたいのなら「店舗売上」が目的変数です。特定の商品を買うような人を増やしたいなら「特定商品購入フラグ」が目的変数です。当然ながら、これは、人間の仕事です。

そうして設定された、目的変数を予測するのに、ほかの属性項目(すなわち、説明変数)をどの程度利かせて、どのモデルを活用するかを考えてくれます。

どの説明変数が効いているのかを教えてくれる

DataRobotは、どのモデルで、どの説明変数が、どれくらい効いているのか、を教えてくれます。

用意されたモデルを、ガンガン回してくれる

まず、インプットデータの16%を用いて、いろんなモデルを試してくれます。(※データの2割を「ホールドアウト」として外して8割にした上で、それを5分割した結果が「16%」です。)試した結果、”筋の良さそうなモデル”を見極めたら、それらのモデルを32%のデータで回し、その結果を受けて、さらにモデルを絞り込んで最終的に64%のデータで回します。

最後に、残った16%(80%-64%)を用いて、モデルを検定します。また、それと同時に、交差検定もやってくれます。※ただし、データボリュームが一定量を超えると、交差検定の自動実施が行われなくなります。理由は「処理がめっちゃ重くなるから、勝手にやったら迷惑でしょう?」という思いやりです。

さらに、最初に外した2割を「新しいデータ」として用いて、説明変数から結果を予測し、その精度をチェックします。

つまり、16%→32%→64%→別の16%→ホールドアウトの20% という順番でデータを使うわけですね。そのため、ある程度データボリュームが無いと、最初の16%がとても小さくなってしまいます。そこで、機能としては「とりあえず全件使ってまわしちまう」ということも可能です。)

「モデルの組み合わせ」もテストしてくれる

さらに、この状態で「筋が良かったモデル」同士を組み合わせてくれます。

どのモデルとどのモデルを組み合わせたか、ということも教えてくれるので、モデルの知識を持っている方であれば「ああ、これとこれをうまいことくみあわせたのね」という気持ちになれます。(ぼくは、なりません。)

「説明変数」の効き具合を教えてくれる

さらに、それぞれのモデルで、どの説明変数がどれくらい効いているか、ということも教えてくれます。

なお、ここで言う「効いている」とは、必ずしも、正の相関性があるということを意味しません。真逆に効いていることもあります。

分かりやすい例で言えば、目的変数「〇〇の販売量」に対して、説明変数「気温」が効いているという場合には、「気温が高いほど・・・」も「気温が低いほど・・・」のどちらもあり得る”効き方”ですよね?その、効き方の方向性については、データの中を読み解かないと分かりません。(冷やし中華なら高いほど、おでんならば低いほど、なんだろうな、と感覚的には思いますけれど。)

もう少し複雑な例で「過去の購買回数」が効いている、というような場合は、「多いほど・・・」なのか「少ないほど・・・」なのか、あるいは「中くらいならば・・・」なのか、「5回なら・・・」なのか、などの ”色々な効き方”があります。このあたりは、しっかりと理解しながら進めたほうが良いでしょう。

上記の「どのモデルを使っているのか」および「そのモデルにおける、各説明変数の効き具合の説明」こそが、DataRobotが「ブラックボックス」ではなく「グレーボックス」と言われる所以でしょう。

データ準備は結構大変

さて、このように「DataRobotにデータを放り込んで、目的変数を設定すれば、あとはよしなにやってくれる」という夢のような世界が実現されたわけですが、残念ながら、これでオールオッケーとはなりません。

というのも、データの準備がまぁまぁ大変、なんですね。

いや、とりあえず放り込んだらええんやろ、というのは、そりゃそうなんですが、実際には「生データを放り込んだら、めっちゃ高精度な予測モデルができあがりましたぜっ!」ってなことにはなりません。

そうなると、他のデータと結合して説明変数を増やしたり、既存のデータを再集計して新たな変数を作っていくことが求められます。こういう分析活動をイテレーション型(何回も、トライ&エラーをしていくことを前提にして進めるやり方)と呼びますが、この形で変数を増やしながらモデルの精度を上げていこうとすると、データ処理作業が必要になります。

また、当たり前ですが、インプットデータの件数が多ければ多いほど機械学習モデルの精度はあがりやすいです。その状況下で、精度を上げるために変数を増やすという場合は、大量のデータに対して加工を行うことになります。そうすると、クラウドDB(AWS Redshift 等)を活用するなどの工夫が求められますので「簡単・ラクチンに、誰でも」ということにはなりません。残念ですが。

DataRobotを使うために必要なこと

上記を踏まえると、DataRobotの活用において、ユーザーが最低限保持すべきスキルは、以下の3つとなります。

  1. 知りたいこと(目的)を決められる(=ビジネス的な判断能力がある)
  2. DataRobotによる、モデル化の限界を理解する(=最低限のモデルの知識・統計知識がある)
  3. 柔軟なデータ加工(属性付与)スキルがある →関連記事:2次属性を理解しよう

あくまでも、このツールは「機械学習を、幅広い人に提供する」というためのものです。これさえあれば、自社内に専門家がいなくても、うまいこと機械学習ができるようになる、というものではありません。(っていうか、「機械学習ができる」ってなんなんだよ?って話なんですけどね。そもそも。)

もちろん、正しく使えば、非常に効果的なツ―ルなのは、間違いありません。タイトルに書いた問い【DataRobot(データロボット)は機械学習民主化の橋頭堡か。】に答えるならば、それは【Yes】です。むしろ、「非常に優れたツールであるがゆえに、どういう目的で、どのように活用するのか」を、むしろ試されていると捉えるべきでしょう。

※目的及び、活用方法に関しては、今後、DataRobotの活用に関する関連記事を掲載予定です。

SERVICE