AI(人工知能)開発でよくいただく質問(1)  ~分析技法・モデルの選び方~

いつもリフ株式会社・公式ブログをお読みいただき、ありがとうございます。ブログ担当・Kです。
本日は、AI開発のご相談をいただく際に必ず議題に上がる「どうやって分析方法やモデルを選んだらよいのか?」という点について、ご説明したいと思います。
エンジニアの方向けの技術内容を説明した日本語記事はQiitaなどにもだいぶ増えて参りましたが、本記事はエンジニアの方というより、開発に直接かかわることがない経営者や事業責任者の方向けを想定しております。
「このあたりが判断のポイントになるんだなー」とお感じいただけましたら幸いです。

Ⅰ. どんなオプション(選択肢)があるのか?

本記事執筆時点(2019年2月)では、MLP(Multilayer perceptron、多層パーセプトロン)かGBDT(Gradient Boosting Decision Tree、勾配ブースティング決定木)のどちらかに行きつくと思われます。理由は、「現時点でこれらが最も進んだ技法だから」です。
それぞれを大雑把に説明すると、以下のような感じです。
MLP: 重回帰分析の進化系。Y=aX+b をひたすら積み上げる
GBDT: 決定木分析の進化系。「こういう条件ならY1またはY2」というIF文をひたすら積み上げる

なお、どのような技法があるかをご説明している際に、よく「それはディープラーニング(深層学習)ですか?」「機械学習ではなく、ディープラーニングをやってほしいんですが、可能でしょうか?」というご質問をいただきますが、この考え方は以下の理由で正しくなく、ともすればAIの精度を犠牲にしかねないため、注意が必要です。

理由①:ディープラーニングとは機械学習において層(パーセプトロン)が多い(深い)状態のことであり、ディープラーニングという技法があるわけではない。
(なお「ディープ」の定義も、昔は3層だったが今は100層以上でディープと言われるように、あくまで相対的なものである)

理由②: ある機械学習をディープラーニングで行うかどうかは、「当てはまりが良いか(精度が出るか)」で決めるべきであり、常にディープな(層が多い)方が良いというわけではない

Ⅱ. 技法・モデルを選ぶ際の判断軸

次に、MLPかGBDTのどちらを選ぶか決める際の判断軸についてですが、以下の4点あたりが大事になってくるのではないかと思います。

(1)目的が「回帰」なのか「判別」なのか
・ 回帰・・・ あるインプットを与えたときに、「恐らくこうなるであろうという予測値」をアウトプットすること
・ 判別・・・ あるインプットを与えたときに、「これはAである」、「これはBである」という分類の結果をアウトプットすること

(2)カテゴリカル変数が含まれるか
・ カテゴリカル変数とは、数値の大小で評価できないタイプの変数のこと
・ 例えば、「相性が良い⇔悪い」は、 0~100 の間で相性が良いほど数値が大きくなる、といった形で表すことができますが、「赤、青、緑」のようなカテゴリー/区分は(RGBの数値で表現することはできますが)数値の大小で良いのか悪いのかを表すことはできません
・ 後者の「色」などをカテゴリカル変数といいます
・ カテゴリカル変数には、一般的にGBDTの方が適していると言えます

(3)データ量が多いか
・ 変数の量(種類)やモデルの複雑さによって、高い精度を出すために必要なデータ量は変わるため、何レコードだと多いという明確な基準があるわけではありませんが、いわゆるビッグデータならMLPによる収束(モデル化)が期待できます

(4)データのバラツキが大きいか
・ 外れ値や欠損値が多い場合はGBDTの方が扱いやすいと言えます

Ⅲ. 技法・モデルの決め方

以上の判断軸を総合的に判断して、どちらが適しているかを判断します(欠損値が多いから即GBDTだ!となるわけではなく、あくまで総合的に判断することが重要です)。
但し、精度の良いAIを開発するためには、予算と時間が十分にある場合は、両方を試してみる、というのが理想的だと思います。

以上です。少しでも、この記事を読んでくださった方の参考になれば嬉しいです!

弊社では上記のようなAI開発に至るまでの考え方などについても、丁寧にご説明させていただいております。AIに興味があるけど何から手を付けて良いか分からない、といったお悩みがございましたら、是非お気軽にこちらまでご連絡ください!