小泉 ご無沙汰しております。
北川 お久しぶりです。
小泉 すっかり更新が途絶えてしまって、ごめんなさい。
北川 いえいえ。気を取り直してリスタートしましょう!
小泉 はい。前回はなんの話をしていたのでしたっけ。
北川 ビッグデータの民主化、ですね。
小泉 うう…記憶が…
北川 僕のダイエットでいうと、マイナス5.4キロのところ。
小泉 思い出しました!
北川 それで僕の体重なんですが…
小泉 いいんですよ、その話やめても。
北川 いや、逃げてはいけない。
小泉 風のうわさではプラス3キロときいています。ダイエットもリスタートですね。
北川 途中経過を報告させてください。10キロは減ったんです。減ったところで、レッドモンド出張が入ってしまって…
小泉 お、マイクロソフト本社ですね!
北川 はい。マイクロソフト本社へ行ってきました。そこでステーキや、ココナッツクリームケーキという、こう、ココナッツクリームがパイ生地の上にのってて、その上に生クリームがのっているっていう罪深い食べ物を…食べきらないと負けじゃないですか。
小泉 負けていきましょうよ、そこは。
北川 まあ、そんなわけで、マイナス10キロでレッドモンドに行って、帰国したらプラス3キロ。というわけで、現在の状況としては、マイナス7キロです。
小泉 なんかよくわからなくなってきたので、もう、いいんじゃないですかね。
北川 15キロ減らすと焼肉おごってもらえるんですよ。だから、あと8キロがんばります。でね、僕がリッチモンドでプラス3キロになったのには、因果関係があるんじゃないかなと思うんです。
小泉 ココナッツクリームケーキ。わかってるじゃないですか。
北川 そうなんですけど。データを活用したら因果関係をもっと明示的にモデル化できるんじゃないかと思ったわけなんです。因果関係をモデル化して、さらにプレディクション、つまり予測できないかと。
小泉 くわしくお願いします。
北川 はい。まず、食べたものと運動量、そして結果としての体重のデータを貯めます。で、ため込んだデータから、機械学習をするんです。
小泉 機械学習!きましたね!
北川 はい。Azure Machine Learning といいます。
小泉 ようやく本題に…。Azure Machine Learning っていうのは、どういうものなんですか。
北川 まずはデータが必要です。今まで僕はこれを食べた、これを食べた。その日どれくらいのカロリーを消費した。そしたら体重が何キロになった、というデータがあります。それを使って機械学習させるわけです。それで分析をすれば、何らかのパターンが見つかるはずなんです。
小泉 食べたら太るというパターンですね。
北川 たとえばね、ラーメン食べようかなって思ったときに、Azure Machine Learningのプレディクションに聞いてみる。23時に家系ラーメンを青物横丁で食べる、って入れると、プレディクションで体重増加が予測される。つまり過去の例から、これを食うとこうなる。ラーメンじゃなくて蕎麦にしとけよ、と、予測モデルを作ってくれるというわけです。
小泉 それは機械じゃなくて、北川さんが学習すればよいのでは…
北川 わかりやすい例で説明したんです!あなた難しい話すると記事にしてくれないじゃないですか!
小泉 ウワーすみません!…で、これは、そのプレディクション自体がサービスになっているんですか?
北川 Azure Machine Learningという言葉から推測できるかと思うんですけど、機械学習するところだけの機能ですね。入力画面は別に作ります。スマホのアプリとか。
小泉 自分で作れ、と?
北川 うん。サンプルスクリプトまでは作ってくれますよ。ちょっと見てみましょうか。これが画面です。ここで何が起きているかというと、一番上のところが、元のデータです。
北川 原因と結果があるデータ。たとえば、夕ご飯に焼肉食べた後、ラーメン食べたら体重増えてました的な。このモデルは僕のダイエットの話ではないんですが。今回の例では、tskitaga gender v2 というトレーニング済みのアルゴリズムを利用してというのを入力データにスコアモデルに突っ込んでますを付けています。入力するデータをどのように加工して、予測を行うか、定義してあるんですね。実行確認するとミドリのチェックがつきます。そうするとこいつをウェブサービスとして公開できるようになります。パブリッシュウェブサービスでイエスを押すと、ウェブ経由で呼び出すための仕組みを作ってくれます、と。それがこの画面です。
北川 そうするとね、Web Service APIができるわけですよ。APIってなに? と API Help Page をクリックすると詳細が出てくる。ここ、関数の詳細が出てくるだけじゃなく、サンプルコードが出てきます。これがMSらしからぬところで、 Pythonから呼び出すコード、Rから呼び出すサンプルコードを送ってくれるんで、このサンプルコードをコピペして自分のアプリに入れ込むと。
北川 そして予測のサンプルいれてよって、値を入れると、にょろにょろにょろっと予測してくれるというわけです。
北川 ここまでの仕組みを、ブラウザだけで利用することができます。クラウドベースのサービスになっていますので、環境構築のために時間を費やしていただく必要はありません。また、アルゴリズムの詳細がわからなくても、複数のアルゴリズムの結果を次のように比較表示することで、どちらのアルゴリズムの方が良いか視覚的に見ることもできるんです。
北川: 今回のケースでは、最初のデータを8:2で分けています。8割のデータを使って予測モデルをトレーニングする。これが機械学習です。で、予測モデルが予測したデータを2割のデータで確認します。どれくらい予測と実際が合致しているか。この結果が上のアウトプットになります。
小泉 割合は8:2なんですか? 5:5とかでもいいんですか?
北川 なんでもいいです。そこはどういう割合にしてもあまり変わりません。で、分割したデータを使って、どういうアルゴリズムを使うか。アルゴリズムトレーニングを行います。すると、トレーニングされたモデルが出てくる。そのモデルを可視化しますとやると、エバリュエートモデルっていうんですが、結果こうなりました、と。
小泉 ほう…
北川 こんな感じで、どれくらい因果関係があるか出してくれます。真ん中の対角線と、上の太い線、ここの間が大きければ大きいだけ、よく当たっているというわけです。この対角線を、AUCラインといいます。つまり、0.5のラインです。
小泉 当たるも八卦、当たらぬも八卦の世界ですね。
北川 そう。AUCラインより上だったらOKです。
小泉 ところで、これ、英語版だけですか? ちょっと見づらい…
北川 そのうち日本語もなりますけど、変に日本語に翻訳してもかえってわかりづらくなるんじゃないかなあ。あるいは、ただ、カタカナになるだけだから、英語で慣れましょうよ。ちなみに、僕はこのソリューションを勉強するための研修に、レッドモンドの本社に行ってきたのです。
小泉 そこで肉を食べ、3キロ太り、学んだばかりのAzure Machine Learningで因果関係を可視化したというわけですね。むだがない。ほかには何に使う感じですか?
北川 いろいろ使えますよ。たとえば、機械が動いています。いろんなセンサーからデータを収集して、機械が壊れたときのデータを分析。壊れるまでのモデルを作ります。
小泉 ああ、工場のラインとか!
北川 うん。そろそろ機械が壊れるっていう予測を出すアルゴリズムを出す。
小泉 なんでもっと早くその例を出してくれなかったんですか。
北川 アンケート結果のデータから年収を予測させるモデルっていうのもできます。
小泉 その結果を元に営業をかけたりすると。
北川 過去のデータを使って未来を予測する。リアルタイムでデータを入れてリアルタイムで予測を返してくれる。さっきの体重だとラーメンやめとけ、そばOKみたいなことを即座に答えてくれるわけです。
小泉 気圧の変化から天候の変化を予測、なんていうのもできそうですね。これ、いくらくらいするんですか?
北川 それ、聞いちゃいます?
小泉 だって気になるじゃないですか。
北川 あんまり言いたくないなあ…
小泉 なぜ。
北川 あえて値段を言わなくてもいいくらい安いんで。
小泉 そうなんですか。
北川 ごそごそ遊んで、1時間で38円76銭です。
小泉 なんと。
北川 テストで予測させている限りは、予測APIを何回呼んでもノーチャージです。本番環境で動かさないかぎり、ノーチャージ。本番も千回呼んで18円くらいですね。
小泉 なんでこんなサービスを?
北川 予測ってやってみたい人多いと思うんですが、環境作るのって大変なんですよ。そこでマイクロソフトが、サポータブルなアレゴリズムを使いたい人にむけて、ちゃんと動く環境を提供しますと。マイクロソフトがこの環境を提供することで、いろんなアプリにAzure Machine Learningを提供していきたいんです。そうしたら、データ貯めておくところに、Azureを使ってもらえればいいのです。
小泉 なるほど。
北川 おもしろいと思いませんか? 夢がある。それこそ、ダイエットアプリに組み込むとか。
小泉 そうですね! いろんなアプリに使えそうですね。Azure Machine Learningについては、わがDBオンラインのチーフである谷川さんに、あらためて真面目な取材をしていただこうと思います。
北川 真面目な取材…。