Microsoft Azure Machine Learning レコメンドを試してみた(モデル作成編)

最近話題の機械学習、数あるアルゴリズムの中でも今回はサンプルデータを用いてレコメンドモデルの作成を紹介していきます。

前回はレコメンドモデルを作成するために必要なデータの種類と分割を説明しました。
今回はそのデータを元に実際にレコメンドモデルを作成します。

モデル作成

今回はレコメンドを行うので検索欄に「recommend」と入力してみます。

レコメンドで使用するモジュールが表示されました!

ここでそれぞれのモジュールについて簡単に説明します。
他の機械学習でも共通ですが
Training、Score、Evaluateの3つのモジュールに分かれています。
Trainingでモデルを作成、Scoreでモデルに実データを適応、Evaluateでモデルの評価を行っています。

- 1.モデルの作成(Training)

Train Matchbox Recommenderモジュールにデータを流し込みます。
左の入力端子からから評価データ、評価する側(ユーザー)、評価される側(アイテム)の順番です。

この状態でRUNを行うとモデル自体は完成です。

- 2.データの適応(Score)

出来たモデルでモデル作成では使わなかったユーザーに対して実際にレコメンドを行います。
Score Matchbox Recommenderモジュールの入力は左から、「作成したモデル」、「分割した残りの評価データ」、「評価する側(ユーザー)」、「評価される側(アイテム)」の順番です。

ここで一度RUNを行って結果を見てみると・・

レコメンドの結果を見ることが出来ます!
おさらいになりますが、結果の見方は見たい出力端子をクリックして「Visualize」ですよ!

- 3.モデルの評価(Evaluate)

最後にこのレコメンドモデルがどうだったか実データに照らし合わせて評価を行います。
Evaluate Recommenderモジュールは左が「残りの評価データ」、右が「レコメンドの結果データ」です。

RUNを行い、結果を見てみます。

NDCGというのが評価です!
順番を付けた時の正確性を評価する指標、
つまりレコメンドがどれだけ妥当であったかを示しています。
1に近づくほど評価が高くなるので0.919はかなり高い精度で当たっていることが分かります。

お疲れさまでした!
モデルの作成と評価は以上になります。
うまく行きましたでしょうか?

評価値をどう決めていくかがレコメンドモデルを作る上での肝になります。
とは言っても評価データは取得が難しくログデータだけという場合も少なくないと思います。
そこからいかに評価データを作り出すことができるかが腕の見せ所ですね!

今が勝負と言える機械学習、是非取り入れてみてはいかがでしょうか!
最後まで読んでいただき、ありがとうございました!

またお会いしましょう!


Microsoft Azure Machine Learning レコメンドを試してみた(データ編)

最近話題の機械学習、数あるアルゴリズムの中でも今回はサンプルデータを用いてレコメンドモデルの作成を紹介していきます。

準備

早速Azure MLstudioを起動
新しいExperimentを作成します!
左下の「+」をクリックし、「Blank Experiment」を選択します。

ここからサンプルを選択して構成を確認することもできます。

空っぽの実験場(Experiment)

データの種類と制約

まずはデータを用意します。

レコメンドを行うためには3種類のデータが必要です。
サンプルで用意されている飲食店データを例に取って説明します。
サンプルデータセットは「Saved Datasets」の「Samples」内にあります。
後で使うのでドラッグアンドドロップして置いておきます。

それぞれのデータは上から
1. 個人の特徴を表したデータ
内容:ユーザID、緯度経度での位置情報、喫煙の有無、生まれ年など
2. お店の特徴を表したデータ
内容:レストランID、緯度経度での位置情報、喫煙所の有無、価格、ドレスコードなど
3. 個人のお店への評価データ
内容:ユーザID、店舗ID、評価値
です。

両者の特徴を表したデータとその間を繋ぐ評価データが必要なことが分かります。

※評価データで注意しなくてはならない点として
評価する側、評価される側、評価値という形式にしておく必要があります。
今回のレストランの場合はユーザID、レストランID、ユーザのレストランへの評価という順番です。
また評価する側、評価される側の組み合わせがユニークである必要があります。
今回の場合を例に出すと1ユーザは1レストランに対して1評価までということです。

複数評価値があると以下のエラーが出ます。

https://msdn.microsoft.com/library/azure/60822377-DA7A-40B8-0034-D185D1509344

データの分割

全データを用いて学習してしまうと評価にも同じデータを使うことになってしまうため分割してモデル作成、評価を行います。
データの分割は「Split Data」モジュールで行います。

「Restaurant ratings」データの出力端子からSplit Dataにドラッグアンドドロップで繋ぎ、
Splitting modeはレコメンド用の「Recommender Split」を選択します。

この状態で一度実行してみましょう。
画面下の「RUN」をクリックします。

右上のメッセージが「Queued」から「Finished running」に変わると終了です。

「Split Data」を右クリックして「result」、「Visualize」から内容を確認することが出来ます。

それぞれ確認してみると分割されていることが分かります。

レコメンド用のデータ分割「Recommender Split」の場合他のアルゴリズムで使われるデータ分割とは違いユーザ単位で分割が行われます。

今回はデータの種類、制約と分割について説明しました。
予め必要なものが分かっているとデータも集めやすいのではないでしょうか。

次回はレコメンドモデルの作成を行います。

またお会いしましょう!


IoTでビジネスが変わる!東洋経済イノベーションフォーラム2015

11月26日に日経ホールで開催された東洋経済新報社イノベーションフォーラム2015に弊社代表 奥沢明が登壇致しました。

■ 開催概要
東洋経済新報社イノベーションフォーラム2015
テーマ:全く新しいIoTのビジネスモデルが起こすイノベーションへの招待状
開催日時:2015年11月26日(木) 13:00~17:30
場所:日経ホール
URL:http://toyokeizai.net/sp/20151126/

妹尾教授の基調講演から始まり、日本マイクロソフトによる特別講演、国内2社による事例講演、弊社奥沢の登壇したパネルディスカッションという流れでした。

「製造をやりたいならば製造を排すべき」と基調講演で妹尾教授は話されていました。
今回のテーマになっているIoT(モノのインターネット)の導入で製造業もハードウェアだけをやっていればいいわけではなくソフトウェアが必ず必要になってくるはずです。
これまでの日本の高い技術力を活かした戦略だけでは世界では通用しなくなって来ておりモノのサービス化が重要になってきます。

モノのサービス化

今まではモノを作り、納品して終わり、ということがほとんどでした。
しかし、例えば納品した機器からログデータを収集することで実際の使われ方や製品の問題点を、人を介することなく直接知ることができます。
その情報に基づいた製品への能動的なサポートや、効率的な改良を行うことで自社にもお客様にも嬉しいサービスを提供することが可能です。
この様にモノに付加価値を付けることによるサービス化、「モノのサービス化」がキーになってくるのではないでしょうか。

終盤には「IoTがもたらすビジネスイノベーションとは」というテーマの下パネルディスカッションが行われました。

コストの削減、予防保守によるダウンタイム減少

(パネリスト:株式会社電通国際情報サービス 幸坂 知樹氏)
1つの機器の故障でも生産ライン全体の停止に繋がりかねません。
IoTを活用することで保守は大きく変わります。

今までは故障した時点で部品の交換や修理を行う、ある程度時期を見て交換を行っていたかと思います。
しかしIoTを用いることで故障を予測し、最適な時期に予め部品の交換をすることで無駄なくダウンタイムを減少させることが可能になります。

素早い復旧ではなく止まらないことが価値だと言えます。

保守を治療に置き換えた例えが分かりやすかったので紹介しておきます。

保守   治療
障害が起きてから対応 風邪を引いたから病院に行く
一定期間が経つ度に対応 予防接種に行く
状態に応じて対応 常に体温を測り異常な時に対応
故障を予測し対応 予兆を見て発症する前に対策

IoTに向いた組織

(パネリスト:ユニアデックス株式会社 山平 哲也氏)
ではどのような体制でIoTを進めていけば良いのでしょうか。

IT部門に全て任せてしまいますか?

IoTはまだまだ新しい領域ですのでロジカルシンキングだけではなかなか良いものにはならないそうで、横断的にプロジェクトを進めていく必要があるそうです。
なるべく多くの部門、外部の人も含めた様々な意見から非連続な思考が生まれ、より良いサービス、モノのサービス化が進められるのではないでしょうか。

データ活用

(パネリスト:テクノスデータサイエンス・マーケティング株式会社 池田 拓史氏)
データは集まってもどう扱えば良いか分からないという課題が生まれてくるかと思います。

・自社で思う製品の価値
・顧客側での製品の価値

この2つの価値は一概に等しいとは言えません。
顧客側での製品の扱い方次第で製品の価値は高くも低くもなる可能性があるのです。

IoTにより製品の使われ方(顧客の行動)が分かれば想像で行っていたものが実測値で出るためお客様の価値に直結する効率の良い改良や故障する前に提供など(自社の行動)ができると考えられます。
というようにIoTは自社の行動と顧客の行動を繋ぐものだと考えておられました。

しかしそこにはデータサイエンティスト、アナリストの力や高価なソフトウェア、データウェアハウスなど多額の投資が必要です。
どのような基盤を用意すればこういった課題は解決できるのでしょうか

IoTはクラウドとの相性が良い

(パネリスト:株式会社ナレッジコミュニケーション 奥沢 明)
クラウドを用いることでこの課題を解決することができます。

オンプレミスの場合データウェアハウスを用意するためにはサーバの調達に多額のコストが掛かり、電源、空調の整備までも必要です。
また始めたはいいが思うような結果を得られず止めたいとなった時すぐにはやめられないというデメリットもあります。

その点クラウドの場合は初期投資も少なく従量課金のためやめたい時にすぐやめることも可能です。
さらに機械学習などデータを活かすサービスが検証済みで用意されているという点もメリットです。
アップデートにより更なる発展も見込むことが出来ます。

しかしながらセキュリティに懸念を持たれている方もおられるのではないでしょうか。
ですがクラウドだからこそセキュリティに気を配っており他データと混在しない仮想化技術を実装している他、VPNを使用することでインターネット上に出すこと無くデータを扱うことが可能です。
自社に置くより一歩進んだセキュリティを低コストで得ることができるのです。
セキュリティに懸念を持たれていたお客様も実際使ってみるとセキュリティが一番満足している点だと言われることもありました。

今回のフォーラムでは一貫して「モノのサービス化」が話の中心にありました。
IoTで今まで想像だったものがリアルなデータで手に入り、部門間製品間の壁を超えることで新たな価値を見出すことができます。

まとめ

まとめるとIoT、機械学習を活用することで大きく分けて3つの価値を創出することができます。
・実測データによるコスト削減
・モノのサービス化による売上向上
・新たなビジネスモデルの創造

IoTはセンサーデバイスの情報が取れるだけではなく正しく活用することでビジネスの革新に繋がります。
今が勝負と言えるIoT、機械学習を是非取り入れてみてはいかがでしょうか!
最後まで読んでいただき、ありがとうございました!

またお会いしましょう!