Azure Machine Learningで
機械学習の実験をやってみよう
~レコメンド編~
2018.11.17
Azure Machine Learning勉強会 in Okayama
本セッションについて
• Azure Machine Learning Studioで機械学習の実験をデモ
• レコメンドのモデルを学習させて評価する
• 学習済みモデルを保存する
使用する学習データ
• Book Crossing (http://bookcrossing.jp/)
• 世界中の本を愛する人たちによる「世界中の街中を図書館に」
「本に世界を旅させよう」という非営利活動
• BCID(Book Crossing ID)という固有のナンバーを付けて世界中に
旅をさせるというもの
使用する学習データ
• Book-Crossing Dataset
http://www2.informatik.uni-freiburg.de/~cziegler/BX/
• BX-Users
• BX-Books
• BX-Book-Ratings
• SQL Dump(SQL Script)
• CSV Dump(セミコロン区切りテキスト)
• Azure ML Studioで読み込めるようにtsvに変換
使用する学習データ
User-ID
ISBN
Book-Rating
User-ID
Location
Age
ISBN
Book-Title
Book-Author
Year-Of-Publication
Publisher
Image-URL-S
Image-URL-M
Image-URL-L
BX-Book-Ratings BX-Users BX-Books
使用する学習アルゴリズム
• Matchbox: Large Scale Bayesian Recommendations
• https://www.microsoft.com/en-us/research/publication/matchbox-large-
scale-bayesian-
recommendations/?from=http%3A%2F%2Fresearch.microsoft.com%2Fpub
s%2F79460%2Fwww09.pdf
• Matchbox Recommenderモジュール
使用する学習アルゴリズム
レーティングデータ
UserId
ItemId
Rating
ユーザーデータ
UserId
UserFeature1
UserFeature2
…
アイテムデータ
ItemId
ItemFeature1
ItemFeature2
…
Required Optional Optional
使用する学習アルゴリズム
• 協調フィルタリング
• アイテムベース
• Amazonとかの「これを買った人は他にこれを買っています」
• ユーザーの属性や購買傾向は考えずアイテム同士の”買い回り”とか”併売”を見る
• 推薦の精度はそこそこで学習に必要なデータ量や処理時間は少なめ
• ユーザーベース
• ユーザーの属性や購買傾向を考慮する
• 似た傾向を持つユーザーのまとまりから推薦するアイテムを抽出する
• 推薦の精度は上がるが学習に必要なデータ量や処理時間が多め
実験の流れ
• データのアップロード
• モジュールの配置と接続
• データの配置
• データの加工
• 学習アルゴリズムの接続
• 学習の結果と評価用モジュールを接続
• 学習の実行
• 学習結果の確認と評価
• 学習モデルを保存
データのアップロード
「+NEW」ボタンをクリック
データのアップロード
DATASET → FROM LOCAL FILE
データのアップロード
 「参照」からアップロードするファイルを選択
 アップロード後のデータセット名の入力
 DATASETのファイル種別を選択
実験の新規作成
「+NEW」 → EXPERIMENT → Blank Experiment
実験の新規作成
データの読み込み
Saved Datasetsからアップロードしたデータをドラッグ&ドロップで配置
データの加工(絞り込み)
Manipulation → Apply SQL Transformを配置して接続
Book-Ratingが0のデータを除外
データの加工(絞り込み)
Ratingが0のデータ
が除外されている
データの加工(絞り込み)
BX-Users.tsvの中身(Visualizeで確認)
データの加工(絞り込み)
Manipulation → Apply SQL Transformを配置して接続
Ageが’NULL’のデータを除外
データの加工(絞り込み)
BX-Books.tsvの中身(Visualizeで確認)
データの加工(絞り込み)
Manipulation → Select Column in Datasetを配置して接続
Launch column selectorをクリックして列選択画面を開く
データの加工(絞り込み)
必要な列のみに絞り込む
データの加工(絞り込み)
全てのデータをApply SQL Transformationに接続
データの加工(絞り込み)
BX-Usersに存在するユーザーおよびBX-Booksに存在する
本のRatingのみに絞り込む
マッチしないデータが含まれていると
学習実行時にエラーになる
データの加工(分割)
Data Transformation→Sample and Split→Split Dataを
配置して、Splitting modeで「Recommender Split」を選択
学習モジュールの接続
Machine Learning→Train→Train Matchbox Recommenderを配置
評価モジュールの接続
Machine Learning→Score→Score Matchbox Recommenderを配置して
Recommender prediction kindで「Item Recommendation」を選択
評価モジュールの接続
Machine Learning→Evaluate→Evaluate Recommenderを
配置して接続
全体像
データの読み込み
データの加工
学習アルゴリズム
学習モデルの評価
学習実行
結果の確認(テストデータに対するレコメンド)
Score Matchbox Recommenderを選択してVisualize
Splitされたデータをテストデータ
(入力)として、各ユーザーに2~5冊の
本をレコメンド(推薦)している
結果の確認(レコメンドの精度)
Evaluate Recommenderを選択してVisualize
Normalized Discounted Cumulative Gain (NDCG)
0~1の値で1に近いほど正しい予測結果
学習済みモデルの保存
Train Matchbox Recommenderを選択してSave as Trained Modelで
学習済みモデルを保存する
まとめ
• Azure Machine Learning Studioで機械学習の実験を実施
• Book Crossingのデータを用いてレコメンドの学習モデルを作成
• そこそこの精度の学習済みモデルを作成できた

20181117 azure ml_seminar_3