こんにちは!エンジニアの将棋侍です。従来ですと街並みがクリスマスムードなのが楽しみな季節ですが、コロナの影響で外出する機会が随分減ってしまい、季節の変化に疎いと感じるこの頃です。皆さんいかがお過ごしでしょうか?
■はじめに
今年から私はDX関連の部署に所属しています。最近Driverless.AIというAIの製品に関わることになったため、今回はそれに関して書きたいと思います。
※今回の内容は私個人の見解であり、弊社として内容を保証するものではないこと、ご了承ください。
弊社ではDriverless.AIというAIの製品を扱っています。この製品の魅力の一つは、予測したいテーマ・課題が決まっていれば「データを用意する」「画面上でボタンを押す」のたった2ステップで、専門知識なしに結果を予測できることです。
一方で、弊社で扱っているSplunkという製品も、機械学習を扱える「Splunk Machine Learning Tool Kit」(以下、MLTK)というアドオンが無償で提供されています。
そこで今回は、SplunkのMLTKにて予測する場合と、Driverless.AIにて予測する場合を比較してみたいと思います。
※製品比較というのは、製品の強み・弱みを知る上でとても重要なことと考えています。
比較のために利用したのは、機械学習の分野でお馴染みの「タイタニック号の生存予測」のデータです。この予測は、性別、年齢、チケットクラス・・・等といった乗客の属性情報を用いてタイタニック号の事故後の生死を予測する、というものです。
早速みてみましょう。
■加工なしでそのまま投入してみる
まずはデータの加工はなしで、予測に不要なカラムを抜いて予測しました。結果は以下のようになりました。
・Splunkで予測した場合:0.76
アルゴリズムは一番精度が良かったRandomForestClassifierを使いました。
・Driverless.AIで予測した場合:0.8732
・所感
<操作感>
個人的にはDriverless.AIの方が簡単に感じました。Driverless.AIではデータを画面操作でインポートし、ボタンをいくつか押すだけで予測できるのに対し、MLTKの場合は、アルゴリズムを選んだり、Splunkのコマンドを用いて検索文を作る必要がある為、専門的知識が必要だったり、結果を出すまでのステップが多いと感じました。その分、SplunkのMLTKでは細かい設定までチューニングできるのが魅力とも言えます。
<精度>
Driverless.AIの方が精度が高いことがわかりました。また、予測結果を確認すると、MLTKの場合、年齢が空白の場合は、予想できていないことがわかりました。(Driverless.AIは年齢が空白でも予測できている)
<処理時間>
MLTKの方が予測が出るまでの処理時間が早いということがわかりました。MLTKの場合、1,2分で予測結果が出力されますが、Driverless.AIの場合30分程度かかりました。スペック依存ではありますが、何度かトライアルする想定がある場合は、Driverless.AIは処理時間を考慮して進める必要がありそうです。
■MLTKでDriverless.AIの精度を出すための考察
MLTKの場合、年齢が空白のために予測できていないところがあり、思うように予測できていませんでした。また、Driverless.AIのログを見ていると、どうもXGBoostというコンペサイトでもよく使われているアルゴリズムを利用していたようです。そこで、MLTKにてXGBoostを使って予測すればDriverless.AIと同等の予測ができるのでは?と考えました。
上記を踏まえて以下の作戦にてMLTKで再トライしてみます。
①年齢を中央値で補完する
②MLTKにて、XGBoostを使えるようにする
今回利用しているMLTKにはデフォルトでXGBoostはセットアップされていません。そのため、下記ドキュメントを元に使えるようにします。
https://docs.splunk.com/Documentation/MLApp/5.2.0/API/Overview
結果、精度は約0.82となりました。無償のアドオン(MLTK)でここまでの精度が出せるSplunkには関心をしました!
一方でDriverless.AIでは更に高い精度を簡単な操作で出せるので、さすがですね!!
・所感
予測できない箇所があった事象は改善し、精度も0.06改善しました。処理時間に関しても相変わらず早く、1,2分で予測結果が出力されました。
しかし精度はDriverless.AIを上回ることはできませんでした。今回題材にした「タイタニックの生存予測」にて精度を重視する場合には、Driverless.AIが有効と言えます。
■結論
今回はタイタニックのデータを用いてMLTKとDriverless.AIを比較しました。予測の精度ではDriverless.AI、処理時間ではMLTKの方が有利ということがわかりました。また、MLTKはチューニング次第で精度を高められることが発見でもありました。こういった情報は、実際に手を動かしてみないとわからないところで、製品をご提案する上で重要なポイントの一つだと感じています。
※実際に製品比較する場合は、他にも様々な観点やデータ、ユースケースを想定して総合的に検証するべきと思いますのでその点はご注意ください。
■最後に
いかがでしたでしょうか。実際にお客様に提案するまで、裏ではいろいろな検証をしています。自分が疑問に思うことは、お客様も疑問に思うはず!と思ってまして、こういう検証を行っているからこそ、お客様から質問を受けた際は自信を持ってお答えできるのかなと思っています。少しでもマクニカのエンジニアが普段の業務でどういうことをしているかについてお伝え出来ていたら幸いです!
次回は両方の製品の特性を生かす、という観点で、Splunkにて前処理を行い、Driverless.AIで予測する方法についてお話しできればと思います。
■Appendix
<環境情報>
・検証データ
* train.csv
カラム数:12
件数:891件
* test.csv
カラム数:11
件数:419件
・Driverless.AI
p2.xlarge
・Splunk
CentOS7
Disc:100GB
Memory:8GB
CPU:Intel(R) Xeon(R) CPU E5-2403 0 @ 1.80GHz
関連記事
前へ
風通しの良い会社とは
次へ
楽しく働くってなんだろう?