Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

レコメンドアルゴリズムの基本と周辺知識と実装方法

7,974 views

Published on

レコメンドアルゴリズムの基本と周辺知識と実装方法
・Pythonを使った機械学習の紹介
・レコメンドアルゴリズムの基礎
・レコメンドの周辺知識と実装方法

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

レコメンドアルゴリズムの基本と周辺知識と実装方法

  1. 1. takemikamiʼs note ‒ http://takemikami.com/ レコメンドアルゴリズムの基礎 及び、応⽤のための周辺知識と実装⽅法 TECH & BRIDGE MEETING 〜エンジニア講演会〜 第2回 ⼈⼯知能・機械学習・ディープラーニング 〜初級者向け〜 Copyright (C) Takeshi Mikami. All rights reserved. 1 三上威(フリーランスITエンジニア) twitter: @takemikami 2017.6.10 TKPガーデンシティ渋⾕ ホールB 機械学習 レコメンド
  2. 2. takemikamiʼs note ‒ http://takemikami.com/ はじめに • 対象: 機械学習未経験のエンジニア • テーマ:レコメンドアルゴリズムとその応⽤ • 内容 • Pythonを使った機械学習の紹介 • レコメンドアルゴリズムの基礎 • レコメンドの周辺知識と実装⽅法 Copyright (C) Takeshi Mikami. All rights reserved. 2 本⽇の勉強会でお話しする内容について説明します
  3. 3. takemikamiʼs note ‒ http://takemikami.com/ ⾃⼰紹介 • 三上威 (@takemikami) • フリーランスITエンジニア • データ分析及び機械学習等の応⽤システム開発 • マーケティングデータ分析基盤のシステム開発 • 略歴 • 情報通信ネットワーク・確率論 @ 甲南⼤学理学部応⽤数学科 • Web系システムの開発・構築 @ NEC系SIer • 旅⾏系ECサイトのマーケティングデータ分析 @ DeNA • データ分析及び機械学習等の応⽤システム開発 @ フリーランス • 最近扱っている技術領域 • Python, TensorFlow/Keras, Hadoop&Spark, hivemall, AWS Copyright (C) Takeshi Mikami. All rights reserved. 3 発表者のプロフィールを紹介します
  4. 4. takemikamiʼs note ‒ http://takemikami.com/ 機械学習を応⽤するためのスキル Copyright (C) Takeshi Mikami. All rights reserved. 4 ※丸⼭宏・⼭⽥敦・神⾕直樹共著「データサイエンティスト・ハンドブック」(近代科学社)を参考に作成 ビジネス⼒ (business problem solving) データエンジニアリング⼒ (data engineering) データサイエンス⼒ (data science) ビジネス課題を 理解・解決するスキル 統計・機械学習等の情報科学を 理解・活⽤するスキル データの加⼯・運⽤環境 を実装するスキル 機械学習を応⽤するために必要なスキルを紹介します データサイエンティスト に求められるスキルとして よく⽰されるものです
  5. 5. takemikamiʼs note ‒ http://takemikami.com/ ビジネス⼒とは • ビジネス課題を整理する 「このデータ分析によって解きたいビジネス課題は何か」を考える →課題を明確にしておかないと成果に結びつかない • ビジネス課題を説明する レポーティングやプレゼンスキル →意思決定者が理解出来ないと実⾏できない Copyright (C) Takeshi Mikami. All rights reserved. 5 機械学習を応⽤するためのビジネス⼒について説明します
  6. 6. takemikamiʼs note ‒ http://takemikami.com/ データサイエンス⼒とは • アルゴリズムを理解する 統計学や機械学習のアルゴリズムの理解 →理解していないとチューニングが⾏えない • データ・アルゴリズムの特性を理解する データの特性、それらを計算するための計算資源の⾒ →実⽤的にデータを活⽤するための設計に必要 Copyright (C) Takeshi Mikami. All rights reserved. 6 機械学習を応⽤するためのデータサイエンス⼒について説明します
  7. 7. takemikamiʼs note ‒ http://takemikami.com/ データエンジニアリング⼒とは • アルゴリズムの実装スキル ライブラリの活⽤スキル、アルゴリズムの実装スキル →システム化するために必要 • システムインフラの運⽤スキル ビッグデータ、並列分散処理などの理解と運⽤スキル →⼤量のデータを扱う場合に必要 Copyright (C) Takeshi Mikami. All rights reserved. 7 機械学習を応⽤するためのデータエンジニアリング⼒について説明します
  8. 8. takemikamiʼs note ‒ http://takemikami.com/ 本⽇扱う分野 (機械学習を応⽤するためのスキル) Copyright (C) Takeshi Mikami. All rights reserved. 8 ビジネス⼒ (business problem solving) データエンジニアリング⼒ (data engineering) データサイエンス⼒ (data science) データサイエンス・エンジニアリング を中⼼にお話しします 機械学習を応⽤するためのスキルの中で、本⽇お話する分野を⽰します
  9. 9. takemikamiʼs note ‒ http://takemikami.com/ Pythonを使った機械学習の紹介 scikit-learnによる機械学習 回帰、分類、クラスタリング、次元削減 TensorFlowによる機械学習 画像のクラス分類 Copyright (C) Takeshi Mikami. All rights reserved. 9
  10. 10. takemikamiʼs note ‒ http://takemikami.com/ データ分析のアプローチ • データ分析のアプーチは以下の3つに分類できる Copyright (C) Takeshi Mikami. All rights reserved. 10 scikit-learnによる機械学習 アプローチ 説明 例 ⼿法 説明的データ分析 (descriptive) 事実を説明する・⾒ つける ・どんな⼈が何を買っているか? ・ある広告がどれだけ売上に貢献して いるか? BI、クラスタリン グ、アソシエー ション分析 予測的データ分析 (predictive) (未来や⽋測値を)予 測する ・ある商品群を閲覧した⼈の性別は? ・広告を出稿したら、どれだけ売上が 上がるか? 分類・回帰、統計 的機械学習 指⽰的データ分析 (prescriptive) 最適解を探す ・利益を最⼤化するための、最適な仕 ⼊れ量は? ・売上を最⼤化するには、どこに広告 を出稿すべきか? 最適化、実験計画 → 実施したい「分析のアプローチ」が何かを認識し、適切な「⼿法」を適⽤する 3つのデータ分析のアプローチを紹介します
  11. 11. takemikamiʼs note ‒ http://takemikami.com/ 代表的な機械学習の⼿法 Copyright (C) Takeshi Mikami. All rights reserved. 11 scikit-learnによる機械学習 教師 種類 ⼿法 活⽤⽅法 教師あり (supervised learning) 分類 (classification) ロジスティック回帰 決定⽊ SVM ニューラルネットワーク 離脱顧客判定 スパムメールの判定 回帰 (regression) 線形回帰分析 ベイズ線形回帰分析 販売予測 教師なし (unsupervised learning) クラスタリング (clustering) k-means法 混合正規分布モデル 顧客のセグメント分け 次元削減 (dimentionality reduction) 主成分分析 特異値分解 商品の類似性を可視化 ※教師あり/なし以外にも強化学習(reinforcement learning)という⼿法もあります 代表的な機械学習の⼿法を紹介します
  12. 12. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering)と分類(classification) Copyright (C) Takeshi Mikami. All rights reserved. 12 scikit-learnによる機械学習 分類(classification) クラスタリング(clustering) 教師 教師あり 教師なし 説明 与えられたデータを 適切なクラスに振り分ける 与えられたデータを 複数のグループ分ける イメージ 既存データを元に作ったルールで 新規データを振り分ける データの特徴を元に 意味あるグループが無いか⾒つける A ルール B C クラスタリングと分類(教師あり学習と教師なし学習)の違いを⽰します
  13. 13. takemikamiʼs note ‒ http://takemikami.com/ scikit-learnの紹介をします scikit-learnとは • Pythonの代表的な機械学習ライブラリ • 分類・回帰、クラスタリング・次元削減などのアルゴリズムを多数備え る • NumPy, SciPyというPythonの数値計算ライブラリと連携動作する Copyright (C) Takeshi Mikami. All rights reserved. 13 scikit-learnによる機械学習 scikit-learnで試しながら それぞれの⼿法を紹介していきます Pythonのオープンソースの機械学習ライブラリ
  14. 14. takemikamiʼs note ‒ http://takemikami.com/ scikit-learnで利⽤できるアルゴリズムを紹介します scikit-learnで利⽤できるアルゴリズム Copyright (C) Takeshi Mikami. All rights reserved. 14 scikit-learnによる機械学習 分類 クラスタリング 回帰 次元削減 引⽤元: http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html アルゴリズム選択 のチャート図
  15. 15. takemikamiʼs note ‒ http://takemikami.com/ 可視化・レポーティング環境 〜jupyter notebook, matplotlib Copyright (C) Takeshi Mikami. All rights reserved. 15 scikit-learnによる機械学習 可視化・レポーティング⽤ツールとしてjupyter notebook, matplotlibを紹介します Pythonのコード (分析のプロセス) Pythonの処理結果 (分析の結果) jupyter notebook → 分析のプロセスと結果の記録 matplotlibによる可視化 matplotlib → 分析の結果の可視化 Pythonのコード (分析のプロセス) Pythonの処理結果 (分析の結果)
  16. 16. takemikamiʼs note ‒ http://takemikami.com/ 教師あり学習の基本 Copyright (C) Takeshi Mikami. All rights reserved. 16 scikit-learnによる機械学習 教師あり学習の基本的な考え⽅を説明します やりたいこと: 「xの値」が与えられた時に「yの値」を予測したい → 𝑦 = 𝑓 𝑥 という関数を求めたい 𝑦 = 𝑓(𝑥) ⽬的変数 説明変数 予測モデル⽬的変数が離散値→分類 ⽬的変数が連続値→回帰
  17. 17. takemikamiʼs note ‒ http://takemikami.com/ 教師あり学習の基本 Copyright (C) Takeshi Mikami. All rights reserved. 17 scikit-learnによる機械学習 教師あり学習の基本的な考え⽅を説明します x y データ1 1 2 データ2 2 4 データ3 3 6 データ4 4 8 データ5 5 ? y = 2x ①教師データを取得 教師あり学習の⼿続き: ②教師データから y=f(x) を導く 10 ③未知の値を予測する 予測(prediction) 学習 (fitting, training)
  18. 18. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 • 最⼩⼆乗法とは 「残差の⼆乗和が最⼩になる係数を決定する⼿法」 Copyright (C) Takeshi Mikami. All rights reserved. 18 scikit-learnによる機械学習 線形回帰分析を例に分類のアルゴリズムを紹介します 線形回帰の例 標本回帰直線からの残差の⼆乗和 これを最⼩にする、a,bを求める
  19. 19. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 • 残差平⽅和を最⼩にする𝑎, 𝑏を求める ∑ 𝑒, - =. ,/0 ∑ {𝑦, − (𝑎 + 𝑏𝑥,)}-. ,/0 • 残差平⽅和を𝑎, 𝑏で偏微分すると 𝑛𝑎 + 𝑏 ∑ 𝑥, = ∑ 𝑦, , 𝑎 ∑ 𝑥, + 𝑏 ∑ 𝑦, - = ∑ 𝑥, 𝑦, • この連⽴⼀次⽅程式を解くと 𝑏 = . ∑ 89:9;(∑ 89)(∑ :9) . ∑ 89 <;(∑ 89)< , 𝑎 = 0 . ∑ 𝑦, − 𝑏 0 . ∑ 𝑥, Copyright (C) Takeshi Mikami. All rights reserved. 19 scikit-learnによる機械学習 線形回帰分析を例に分類のアルゴリズムを紹介します
  20. 20. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 20 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します ライブラリ・データを読み込みます
  21. 21. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 21 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します データを描画してみます x: 説明変数 y: ⽬的変数
  22. 22. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 22 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します 学習・検証データに分割し 学習させます
  23. 23. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 23 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します 回帰直線と検証データを 描画します
  24. 24. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 24 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します No ⾵ 気温 海⽔浴 1 弱 ⾼ ⾏く 2 弱 低 ⾏かない 3 弱 ⾼ ⾏く 4 弱 中 ⾏く 5 弱 低 ⾏かない 6 弱 ⾼ ⾏かない 7 強 ⾼ ⾏かない 8 強 低 ⾏かない 9 強 中 ⾏かない 10 強 ⾼ ⾏く 気温:⾼ 気温:中 気温:低 ⾵:弱 ⾏く ⾏く ⾏かない ⾵:強 ⾏かない ⾏かない ⾏かない ⽬的変数:海⽔浴⾏く・⾏かない 説明変数:⾵・気温 これを樹⽊モデルに 当てはめて考えてみる 元データ ⾏動パターン判断結果 やりたいこと: ⾵・気温から海⽔浴に⾏くかを判断する
  25. 25. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • ジニ係数(Gini Index)を⽤いて分岐点を計算 • 分布の不純度の尺度 値が⼤きいほど、不純度が⾼い(データがばらついている)と判断 • 値が⼤きい点から枝を分岐していく Copyright (C) Takeshi Mikami. All rights reserved. 25 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します t:ノード数 i:クラス p:⽐率
  26. 26. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • 分岐前の状態のジニ係数を算出 Copyright (C) Takeshi Mikami. All rights reserved. 26 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します No ⾵ 気温 海⽔浴 1 弱 ⾼ ⾏く 2 弱 低 ⾏かない 3 弱 ⾼ ⾏く 4 弱 中 ⾏く 5 弱 低 ⾏かない 6 弱 ⾼ ⾏かない 7 強 ⾼ ⾏かない 8 強 低 ⾏かない 9 強 中 ⾏かない 10 強 ⾼ ⾏く GI(分岐前) = 1-[(4/10)2 + (6/10)2] = 0.48
  27. 27. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • ⾵の強弱を分岐点とするジニ係数を算出 Copyright (C) Takeshi Mikami. All rights reserved. 27 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します No ⾵ 気温 海⽔浴 1 弱 ⾼ ⾏く 2 弱 低 ⾏かない 3 弱 ⾼ ⾏く 4 弱 中 ⾏く 5 弱 低 ⾏かない 6 弱 ⾼ ⾏かない 7 強 ⾼ ⾏かない 8 強 低 ⾏かない 9 強 中 ⾏かない 10 強 ⾼ ⾏く GI(⾵=弱) = 1-[(3/6)2 + (3/6)2] = 0.5 GI(⾵=強) = 1-[(1/4)2 + (3/4)2] = 0.375 GI(⾵=強・弱) = GI分岐前 ‒ 6/10GI(⾵=弱) - 4/10(⾵=強) = 0.032
  28. 28. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • 気温の⾼中低を分岐点とするジニ係数算出 Copyright (C) Takeshi Mikami. All rights reserved. 28 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します No ⾵ 気温 海⽔浴 1 弱 ⾼ ⾏く 2 弱 低 ⾏かない 3 弱 ⾼ ⾏く 4 弱 中 ⾏く 5 弱 低 ⾏かない 6 弱 ⾼ ⾏かない 7 強 ⾼ ⾏かない 8 強 低 ⾏かない 9 強 中 ⾏かない 10 強 ⾼ ⾏く GI(気温=⾼) = 1-[(2/5)2 + (3/5)2] = 0.48 GI(気温=中低) = 1-[(4/5)2 + (1/5)2] = 0.32 GI(気温=⾼・中低) = GI(分岐前) - 5/10GI(気温=⾼)-5/10GI(気温=中低) = 0.08 同様に、 GI(気温=中・⾼低)=0.05 GI(気温=低・⾼中)=0.137
  29. 29. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • (最も⼤きい)ジニ係数から分岐点を決める Copyright (C) Takeshi Mikami. All rights reserved. 29 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します GI(⾵=強・弱) = 0.032 GI(気温=⾼・中低) = 0.08 GI(気温=中・⾼低) = 0.05 GI(気温=低・⾼中) = 0.137 気温:⾼ 気温:中 気温:低 ⾵:弱 ⾏く ⾏く ⾏かない ⾵:強 ⾏かない ⾏かない ⾏かない ① ② ① ② 第1ノードは気温の⾼中・低で分岐。 同様にして第2ノード以降も求めていく
  30. 30. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 30 scikit-learnによる機械学習 使⽤するデータセット(iris)の説明をします • 使⽤するirisのデータは分類の例でよく使われるデータセット setosa vergicolor virginica ⽬的変数:アヤメの品種(setosa, vergicolor, virginca) 説明変数:花びら・がく⽚の⼤きさ petal sepal ※画像はwikipedia.org, ja.wikipedia.orgから
  31. 31. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 31 scikit-learnによる機械学習 使⽤するデータセット(iris)の説明をします (⽬的変数) アヤメの品種 (説明変数) 花びら・がく⽚の⼤きさ アヤメの品種種別 データ50件づつ
  32. 32. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 32 scikit-learnによる機械学習 scikit-learnでの決定⽊を紹介します ライブラリ・データを読み込み 学習させます
  33. 33. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 33 scikit-learnによる機械学習 scikit-learnでの決定⽊を紹介します ⽣成した決定⽊を 描画します
  34. 34. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 34 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します やりたいこと: データセットを指定した数のクラスタに分ける • クラスタ数(k)を決める • クラスタの中⼼点を対象データからランダムにk個決める • 繰り返し • 各データを最も近くにある中⼼点のクラスタに割り当てる • クラスタ内のデータの平均値を新たなクラスタの中⼼点にする • クラスタの中⼼点が変化しなくなったら終了 →次のスライドから、 k-means法で最適なクラスタを探索する流れをイメージで⽰します。
  35. 35. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 35 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタリングを⾏いたいデータセットを⽤意する
  36. 36. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 36 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します ✓ ✓ クラスタの中⼼点を対象データからランダムにk個決める(この図では2個)
  37. 37. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 37 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中⼼点のクラスタに割り当てる ✓ ✓
  38. 38. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 38 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中⼼点にする ✓ ✓ ✓ ✓
  39. 39. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 39 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中⼼点のクラスタに割り当てる ✓ ✓ ✓ ✓
  40. 40. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 40 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中⼼点にする ✓ ✓ ✓ ✓ ✓ ✓
  41. 41. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 41 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中⼼点のクラスタに割り当てる ✓ ✓ ✓ ✓ ✓ ✓
  42. 42. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 42 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中⼼点にする ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
  43. 43. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 43 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中⼼点のクラスタに割り当てる ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
  44. 44. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 44 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ クラスタ内のデータの平均値を新たなクラスタの中⼼点にする →クラスタの中⼼点が変化しなくなった ⇒ 終了
  45. 45. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 45 scikit-learnによる機械学習 k-means法の計算で利⽤する距離について説明します ユークリッド距離 コサイン距離 式 式 (2変数 の時) 説明 データ間の直線距離 データをベクトルで表現した時の ⾓度の近さ ※⼀部の変数の⼤きさの偏りに影響を受けない d(Xa − Xb ) = (xaj − xbj )2 j=1 ρ ∑ s(Xa − Xb ) = xaj xbj j=1 ρ ∑ xaj 2 j=1 ρ ∑ xbj 2 j=1 ρ ∑ d(Xa − Xb ) = xa1 − xb1( ) 2 +(xa2 − xb2 )2 s(Xa − Xb ) = xa1xb1 + xa2 xb2 xa1 2 + xa2 2 xb1 2 + xb2 2
  46. 46. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 46 scikit-learnによる機械学習 scikit-learnでのk-meansを紹介します ライブラリ・データを読み込み 学習させます
  47. 47. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 47 scikit-learnによる機械学習 scikit-learnでのk-meansを紹介します クラスタリング結果と 元データのターゲットを表⽰します
  48. 48. takemikamiʼs note ‒ http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 • 次元削減とは変数の数(データの次元数)を削減すること Copyright (C) Takeshi Mikami. All rights reserved. 48 scikit-learnによる機械学習 次元削減(dimensionality reduction)について説明します x1 x2 … xn y #1 1 3 … 1 2 #2 2 5 … 4 4 #3 3 6 … 5 6 #4 4 7 … 4 8 #5 5 8 … 2 10 xʼ1 xʼ2 y #1 4 4 2 #2 3 7 4 #3 6 8 6 #4 5 7 8 #5 6 8 10 元の説明変数 数が多い ⽬的変数 ⽬的変数 次元削減後の 説明変数 →データ圧縮・データの類似性の可視化に利⽤できる ※ PCA = Principal Component Analysis (主成分分析)
  49. 49. takemikamiʼs note ‒ http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 Copyright (C) Takeshi Mikami. All rights reserved. 49 scikit-learnによる機械学習 scikit-learnでのPCA(主成分分析)を紹介します ライブラリ・データを読み込み 学習させます
  50. 50. takemikamiʼs note ‒ http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 Copyright (C) Takeshi Mikami. All rights reserved. 50 scikit-learnによる機械学習 scikit-learnでのPCA(主成分分析)を紹介します 次元削減結果を描画します
  51. 51. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワークとは • パーセプトロンとは、視覚と脳の機能をモデル化したもの • ⼊⼒信号(x)と重み(w)の乗算の総和に対して、出⼒信号(y)が決まる Copyright (C) Takeshi Mikami. All rights reserved. 51 TensorFlowによる機械学習 パーセプトロン・ニューラルネットワークについて説明します 𝑥0 𝑥- 𝑦 𝑤0 𝑤- ⼊⼒層 出⼒層 重み →パーセプトロンを多層に重ね、 中間層を多くしたものが ディープニューラルネットワーク ⼊⼒層 中間層 出⼒層
  52. 52. takemikamiʼs note ‒ http://takemikami.com/ TensorFlowとは • DistBeliefというGoogleのサービスに使われている社内ツールを OpenSourceにしたもの • ニューラルネットワーク/ディープニューラルネットが実装できる • TensorBoardによってモデル・学習状況等を可視化できる • データフローグラフによって、 ⾃由度の⾼いネットワークを記載できる • 画像処理の関数も⽤意されている Copyright (C) Takeshi Mikami. All rights reserved. 52 TensorFlowによる機械学習 TensorFlowの紹介をします オープンソースの機械学習ライブラリ →画像のクラス分類などに利⽤できる (チュートリアルがそれ)
  53. 53. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 53 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します • MNISTデータセットは画像処理の機械学習の例でよく使われるデータ • ⼿書きで書かれた数字を畳み込みニューラルネットを使って分類 ⽬的変数:数字(0〜9) 説明変数:⼿書きの画像データ ↓ ↓ ↓ ↓ 5 0 4 1
  54. 54. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 54 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します ※ CNN = Convolutional Neural Network (畳み込みニューラルネット) ライブラリの読み込みと パラメータの設定 ※ここでは⼿短にコードを書くため、 kerasという、tensorflow上で動作する ⾼⽔準ニューラルネットライブラリを使⽤しています。
  55. 55. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 55 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します テストデータの準備
  56. 56. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 56 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します ニューラルネットワークの作成
  57. 57. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 57 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します 学習の実⾏
  58. 58. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 58 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します TensorBoardでの可視化 ネットワークの可視化 学習の進⾏と 精度の変化
  59. 59. takemikamiʼs note ‒ http://takemikami.com/ レコメンドアルゴリズムの基礎 レコメンドとは レコメンドの⼿法 協調フィルタリングのアルゴリズム ユーザベース、アイテムベース、ALS(交互最⼩⼆乗法) Copyright (C) Takeshi Mikami. All rights reserved. 59
  60. 60. takemikamiʼs note ‒ http://takemikami.com/ レコメンドエンジンとは • レコメンドエンジンとは Copyright (C) Takeshi Mikami. All rights reserved. 60 レコメンドとは レコメンドエンジンの説明、パーソナライズについて⽰します 「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」 Amazon Googleニュース 閲覧中の本を買った⼈が、 買ったことがある本 地域に合わせたニュース ユーザ属性や⾏動に あわせたニュース
  61. 61. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの⼿法:パーソナライズ Copyright (C) Takeshi Mikami. All rights reserved. 61 レコメンドとは レコメンドの⼿法「パーソナライズ」について説明します パーソナライズ ⾮パーソナライズ 説明 ユーザの特徴にもとづいた推薦 →ユーザ毎に推薦されるアイテムが異なる 万⼈に向けたおすすめ →全ユーザに同じアイテムが推薦される アルゴ リズム 協調フィルタリング 内容ベース型フィルタリング 閲覧履歴 etc ベストセラー 新着 販売店担当者のおすすめ etc レコメンドというとパーソナライズを指すことが多いが、 ユーザ属性不明の場合などに対応する為、⾮パーソナライズの⼿法も組み合わせる。
  62. 62. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの⼿法:協調型・内容ベース型 Copyright (C) Takeshi Mikami. All rights reserved. 62 レコメンドとは レコメンドの⼿法「協調型」と「内容ベース型」の違いについて説明します 協調型 (collaborative filtering) 内容ベース型 (content based filtering) 説明 他のユーザの嗜好⾏動を元に、 対象ユーザへのアイテムを推薦 アイテムの特徴・説明と、 ユーザの特徴・⾏動を⽤いて推薦 イメージ 他のユーザの嗜好から、 対象ユーザへアイテムを推薦 アイテム・ユーザの特徴を⽤いて推薦 課題 ある程度の量の他のユーザのデータが必要 新規アイテム・ユーザに適切な推薦ができない アイテムの特徴データのメンテナンスが必要 →各⼿法に課題があるため、これらを組み合わせたハイブリッドアプローチをとることも多い。 コールドスタート問題 ・ ・ ・ ○ × × × × ○ ○ ○ ? 特徴A 特徴B 特徴C 特徴Aʼ
  63. 63. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの⼿法:リアルタイム・バッチ処理 Copyright (C) Takeshi Mikami. All rights reserved. 63 レコメンドとは レコメンドの⼿法「リアルタイム」「バッチ処理」について説明します バッチ処理 リアルタイム 説明 ユーザ・アイテムの特徴・⾏動を元に、 事前に推薦アイテムのリストを作成しておく ユーザの⾏動を元にして、 リアルタイムにアイテムを推薦する 適⽤例 パーソナライズおすすめアイテムメール マイページでのおすすめアイテム掲出 etc はじめて訪問したユーザへのおすすめアイテム 掲出 etc 特徴A 特徴B 特徴C 特徴収集 特徴Aʼ 推 薦 事前に処理 インタラクション 特徴A 特徴B 特徴C 特徴Aʼ
  64. 64. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 64 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージを⽰します やりたいこと: 「ユーザ1〜4のアイテムの評価」と「対象ユーザのアイテムA〜Dの評価」 →「対象ユーザのアイテムEの評価」を予測 アイテムA アイテムB アイテムC アイテムD アイテムE 対象ユーザ 5 3 4 4 ? ユーザ1 3 1 2 3 3 ユーザ2 4 3 4 3 5 ユーザ3 3 3 1 5 4 ユーザ4 1 5 5 2 1 予測 1(最も好まない)〜5(最も好む)
  65. 65. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)の⼿続き • 対象ユーザ以外のユーザに対して、 対象ユーザとの類似度を求める • 類似するユーザを選ぶ • 類似ユーザの対象アイテムの評価から、加重平均を算出 Copyright (C) Takeshi Mikami. All rights reserved. 65 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングを⾏う⼿続きを⽰します →次のスライドから、 ユーザベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
  66. 66. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)の⼿続き 〜イメージ1 Copyright (C) Takeshi Mikami. All rights reserved. 66 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージ アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 ? 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 アイテムA〜Dの評価値を使って、 対象ユーザとの類似度を計算 ※ここでは、ピアソンの相関係数(Pearson correlation coefficient)を使って類似度を計算しています。
  67. 67. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)の⼿続き 〜イメージ2 Copyright (C) Takeshi Mikami. All rights reserved. 67 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージ アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 ? 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 類似度をみて、 類似するユーザを選ぶ
  68. 68. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)の⼿続き 〜イメージ3 Copyright (C) Takeshi Mikami. All rights reserved. 68 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージ アイテムA アイテムB アイテムC アイテムD アイテムE 類似度 対象ユーザ 5 3 4 4 4.87 1 ユーザ1 3 1 2 3 3 0.85 ユーザ2 4 3 4 3 5 0.70 ユーザ3 3 3 1 5 4 0.00 ユーザ4 1 5 5 2 1 -0.79 類似ユーザの「アイテムEの評価」と「類似度」 から加重平均を計算し →対象ユーザのアイテムEの評価を予測
  69. 69. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 69 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージを⽰します やりたいこと: 「旅⾏者1〜5の旅先別の旅⾏回数」と「対象ユーザの旅先別の旅⾏回数」 →「対象ユーザが⾏く可能性が⾼い旅先」を予測 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅⾏者1 2 1 0 0 旅⾏者2 1 0 0 0 旅⾏者3 0 0 3 2 旅⾏者4 2 3 1 0 旅⾏者5 1 0 2 5 ⾏く可能性が⾼い 旅先を予測 旅⾏回数
  70. 70. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)の⼿続き • 対象ユーザ以外のユーザの評価値から、 各アイテム間の類似度を求め、類似度⾏列を算出する • 対象ユーザの評価値と類似度⾏列の積を求める Copyright (C) Takeshi Mikami. All rights reserved. 70 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングを⾏う⼿続きを⽰します →次のスライドから、 アイテムベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
  71. 71. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)の⼿続き 〜イメージ1 Copyright (C) Takeshi Mikami. All rights reserved. 71 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅⾏者1 2 1 0 0 旅⾏者2 1 0 0 0 旅⾏者3 0 0 3 2 旅⾏者4 2 3 1 0 旅⾏者5 1 0 2 5 台北との 類似度 1 0.8 0.34 0.29 旅⾏者1〜5の旅⾏回数を使って、 台北との類似度を計算 ※ここでは、コサイン類似度(cosine similarity)を使って類似度を計算しています。
  72. 72. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)の⼿続き 〜イメージ2 Copyright (C) Takeshi Mikami. All rights reserved. 72 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 対象ユーザ 0 1 0 0 旅⾏者1 2 1 0 0 旅⾏者2 1 0 0 0 旅⾏者3 0 0 3 2 旅⾏者4 2 3 1 0 旅⾏者5 1 0 2 5 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 類似度⾏列が出来る 同様に、 バンコク,ホノルル,グァムについても計算
  73. 73. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)の⼿続き 〜イメージ3 Copyright (C) Takeshi Mikami. All rights reserved. 73 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 台北 バンコ ク ホノルル グァム 対象ユーザ 0 1 0 0 × = 台北 0.8 バンコク 1 ホノルル 0.25 グァム 0.0 「対象ユーザの旅先訪問回数」 「類似度⾏列」の積 訪問したことがあるバンコクを除くと、 台北を旅先に選ぶ可能性が⾼い
  74. 74. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)のメリット Copyright (C) Takeshi Mikami. All rights reserved. 74 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 台北 1 0.8 0.34 0.29 バンコク 0.8 1 0.25 0.25 ホノルル 0.34 0.25 1 0.79 グァム 0.29 0.0 0.79 1 台北 バンコ ク ホノルル グァム 対象ユーザ 0 1 0 0 × = 台北 0.8 バンコク 1 ホノルル 0.25 グァム 0.0 アイテム間の「類似度⾏列」は、 事前にバッチで作成が可能 新たなユーザに対しても、 類似度⾏列の再作成なしに、レコメンドが可能
  75. 75. takemikamiʼs note ‒ http://takemikami.com/ 類似度の計算 Copyright (C) Takeshi Mikami. All rights reserved. 75 協調フィルタリングのアルゴリズム 協調フィルタリングの⼿続きで⽤いた類似度について説明します ピアソンの相関係数 コサイン類似度 式 説明 ユーザベース向きの尺度 アイテムベース向きの尺度 データをベクトルで表現した時の⾓度の近さ ※⼀部の変数の⼤きさの偏りに影響を受けな い X: 評価値⾏列 ρ: 要素数 Xa, Xb: 類似度の⽐較対象
  76. 76. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 76 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージを⽰します やりたいこと: 「評価値⾏列」を使って、ユーザとアイテムをk個の特徴量で表す A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 アイテムの 特徴量⾏列 ユーザの 特徴量⾏列 ユーザ 「評価値⾏列」から、 ユーザ・アイテムの特徴量⾏列を求める (k個の因⼦でユーザ・アイテムを説明したい) アイテム ※ ALS = Alternative Least Squares (交互最⼩⼆乗法)
  77. 77. takemikamiʼs note ‒ http://takemikami.com/ 最⼩⼆乗法について 〜ALS(『交互』最⼩⼆乗法)の前に • 最⼩⼆乗法とは 「残差の⼆乗和が最⼩になる係数を決定する⼿法」 Copyright (C) Takeshi Mikami. All rights reserved. 77 協調フィルタリングのアルゴリズム 最⼩⼆乗法について説明します 線形回帰の例 標本回帰直線からの残差の⼆乗和 これを最⼩にする、a,bを求める
  78. 78. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き • 特徴量の数を決める • アイテムの特徴量⾏列を初期化する • 収束するまで以下を繰り返す • 評価値⾏列・アイテムの特徴量⾏列から、 ユーザの特徴量を最⼩⾃乗法で計算 • 評価値⾏列・ユーザの特徴量⾏列から、 アイテムの特徴量を最⼩⾃乗法で計算 Copyright (C) Takeshi Mikami. All rights reserved. 78 協調フィルタリングのアルゴリズム ALS (交互最⼩⼆乗法)による協調フィルタリングの⼿続きを⽰します →次のスライドから、 ALS(交互最⼩⼆乗法)による協調フィルタリングの流れをイメージで⽰します。
  79. 79. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き 〜イメージ1 Copyright (C) Takeshi Mikami. All rights reserved. 79 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 列数 特徴量の数を決める アイテムの 特徴量⾏列 ⾏数 ユーザの特徴量⾏列
  80. 80. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き 〜イメージ2 Copyright (C) Takeshi Mikami. All rights reserved. 80 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 アイテムの 特徴量⾏列 ユーザの特徴量⾏列 アイテム毎の評価値の平均を算出 ⼗分に⼩さい値で乱数をふる
  81. 81. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き 〜イメージ3 Copyright (C) Takeshi Mikami. All rights reserved. 81 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 アイテムの特徴量⾏列ユーザの特徴量⾏列 =× 線形回帰の例で「a,b」にあたる 線形回帰の例で「x」にあたる 線形回帰の例で「y」にあたる 以下の誤差が最⼩になるようにユーザの特徴量を計算 ・「ユーザの特徴量⾏列」と「アイテムの特徴量」の積 ・「評価値⾏列」
  82. 82. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き 〜イメージ4 Copyright (C) Takeshi Mikami. All rights reserved. 82 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 アイテムの特徴量⾏列ユーザの特徴量⾏列 =× 線形回帰の例で「x」にあたる 線形回帰の例で「a,b」にあたる 線形回帰の例で「y」にあたる 以下の誤差が最⼩になるようにユーザの特徴量を計算 ・「ユーザの特徴量⾏列」と「アイテムの特徴量」の積 ・「評価値⾏列」
  83. 83. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き 〜イメージ5 Copyright (C) Takeshi Mikami. All rights reserved. 83 協調フィルタリングのアルゴリズム ALS(交互最⼩⼆乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値⾏列 アイテムの特徴量⾏列ユーザの特徴量⾏列 =× 誤差が収束するまで、 これらの特徴量の再計算を繰り返す 誤差が収束するまで、 これらの特徴量の再計算を繰り返す
  84. 84. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの周辺知識と実装⽅法 システム構成と周辺知識 ライブラリを⽤いた協調フィルタリングの実装 協調フィルタリングの応⽤例 Copyright (C) Takeshi Mikami. All rights reserved. 84
  85. 85. takemikamiʼs note ‒ http://takemikami.com/ マーケティングデータ分析と機械学習 Copyright (C) Takeshi Mikami. All rights reserved. 85 システム構成と周辺知識 マーケティングデータ分析における、機械学習の位置づけを⽰します 顧客との チャネル データ分析 顧客 社会・ 業界 リアル広告 イベント ・・・ Data Warehouse SNS 収集施策 実店舗 収 集 DataMart Web広告ECサイト BIツール 機械学習 加⼯マーケター データサイエンティスト 施策の検討・意思決定を機械学習で⽀援
  86. 86. takemikamiʼs note ‒ http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 86 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 ⾏動 ログ ⾏動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度⾏列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch)
  87. 87. takemikamiʼs note ‒ http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 87 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 ⾏動 ログ ⾏動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度⾏列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch) ユーザの⾏動を収集し 学習する流れ
  88. 88. takemikamiʼs note ‒ http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 88 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 ⾏動 ログ ⾏動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度⾏列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch) リアルタイムに ユーザの⾏動を収集する流れ ユーザの⾏動を応じた レコメンド情報を表出する流れ ユーザの⾏動は Key-Value Store でユーザ単位に管理 アイテムベースでのレコメンド
  89. 89. takemikamiʼs note ‒ http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 89 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 ⾏動 ログ ⾏動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度⾏列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch) バッチ処理での レコメンド情報表出の流れ (メール配信など) ユーザベースでのレコメンド
  90. 90. takemikamiʼs note ‒ http://takemikami.com/ Apache Hadoopとは • 「データ保存のための分散ファイルシステム」 「データ処理のための並列処理システム」 によってビッグデータの分散処理を実現する • 4つのモジュールで構成される • 共通ユーティリティ (Hadoop Common) • 分散ファイルシステム (Hadoop HDFS) • クラスタリソース・ジョブ管理 (Hadoop YARN) • 並列データ処理システム (Hadoop MapReduce) Copyright (C) Takeshi Mikami. All rights reserved. 90 システム構成と周辺知識 Apache Hadoopの紹介をします ビッグデータ分散処理のフレームワーク レコメンドでは、 たくさんのデータ(ユーザ×アイテム)を扱うため ビッグデータ処理を考える必要がある
  91. 91. takemikamiʼs note ‒ http://takemikami.com/ Hadoop Clusterの全体像 • Hadoop Clusterは『分散ファイルシステム』『並列処理システム』の組 み合わせ構造になる Copyright (C) Takeshi Mikami. All rights reserved. 91 システム構成と周辺知識 Hadoop Clusterの全体像を⽰します Hadoop Cluster Client NameNode ResourceManager DataNode NodeManager DataNode NodeManager DataNode NodeManager Job Job Job Job Job Job Job Job Job Master node Slave node 各Nodeにある データを処理 Hadoop Clusterは、 各Nodeに分散保存されているデータに対して、 そのNode上で処理を実施できるので効率が良い。 (処理対象データを取得するための通信が不要)
  92. 92. takemikamiʼs note ‒ http://takemikami.com/ Apache Sparkとは • ⾼速に動作する(Apache HadoopのMapreduceよりも) • メモリ上にデータを持つので反復処理に強い • SparkSQL, Streaming, MachineLearning(MLlib), Graph(GraphX) など の応⽤利⽤が出来る • Hadoop, Standalone, Mesosなどの様々な環境で動作する Copyright (C) Takeshi Mikami. All rights reserved. 92 システム構成と周辺知識 Apache Sparkの紹介をします ⾼速な並列データ処理システム
  93. 93. takemikamiʼs note ‒ http://takemikami.com/ Apache Hadoop上でのSpark Copyright (C) Takeshi Mikami. All rights reserved. 93 システム構成と周辺知識 Apache Hadoop上でのSparkの利⽤イメージを⽰します Hadoop Cluster Client NameNode ResourceManager DataNode NodeManager DataNode NodeManager DataNode NodeManager Job Job Job Job Job Job Job Job Job Master node Slave node 各Nodeにある データを処理 Hadoop Clusterは、 各Nodeに分散保存されているデータに対して、 そのNode上で処理を実施できるので効率が良い。 (処理対象データを取得するための通信が不要) • Hadoop Cluster上のJobをSparkによって実⾏することが出来る
  94. 94. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 94 ライブラリを⽤いた協調フィルタリングの実装 使⽤するデータセット(MovieLens)の説明をします • 使⽤するMovieLensデータは、協調フィルタリングの例でよく使われる データセット 以下の対応が⼊っている ・ユーザID (userId) ・映画ID (movieId) ・評価 (rating)
  95. 95. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 95 ライブラリを⽤いた協調フィルタリングの実装 Spark MLlibでのALSを紹介します 学習 検証 データ準備 ライブラリ読込
  96. 96. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 96 ライブラリを⽤いた協調フィルタリングの実装 Spark MLlibでのALSを紹介します 検証データ 予測データ
  97. 97. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリングの応⽤例 アイテムベースの組み合わせ • 海外旅⾏航空券の推薦 • ⽬的地と出発空港を組み合わせたアイテムベースの協調フィルタリング • ⼿続き • 事前に、過去のユーザの渡航履歴から以下を算出 • 出発空港利⽤履歴の類似度⾏列 • ⽬的地利⽤履歴の類似度⾏列 • サイトに訪問したユーザの出発空港利⽤履歴と⽬的地利⽤履歴を取得 • 以下を計算 • 出発空港利⽤履歴と出発空港利⽤履歴の類似度⾏列の積 • ⽬的地利⽤履歴と⽬的地利⽤履歴の類似度⾏列の積 • スコアの⾼い⽬的地順に並べ、 その⽬的地に対してスコアが最も⾼い出発空港を紐付け、 さらに最も価格が安い航空券の情報を推薦 Copyright (C) Takeshi Mikami. All rights reserved. 97 協調フィルタリングの応⽤例 協調フィルタリングの応⽤例を⽰します →アイテムではなく「属性」の類似度⾏列を作ることで、 類似度⾏列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
  98. 98. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリングの応⽤例 メルマガタイトルの最適化 • メルマガタイトルの最適化 • メルマガ内に掲載されているアイテムの中で もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む • ⼿続き • 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く • 協調フィルタリングで、 メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出 • 推薦スコアがトップの商品名をメルマガタイトルに差し込む Copyright (C) Takeshi Mikami. All rights reserved. 98 協調フィルタリングの応⽤例 協調フィルタリングの応⽤例を⽰します →ライターが作成したコンテンツの⾒やすさ・わかりやすさなどを⽣かしたまま、 パーソナライズによって、よりユーザの関⼼を引く⽅法の例 ※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が⾒込める
  99. 99. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの適⽤で気をつけたいこと • レコメンド導⼊の⽬的・評価指標を決めておく • 単純に売上増などを⽬的にすると、サイトの特性によっては成果が出にくい その場合、売れ筋商品のランキングに反応しなかったユーザが反応したか等を評 価するようにする ※売れ筋に反応しないユーザに対する処置を⾏っていなかったサイトは、売れ筋 に反応する顧客しか来なくなっている可能性が⾼いので、成果が出るまでに時間 がかかる • モデルを破壊するユーザに気をつける • 社内でのテストバイ、業者の⼤量購⼊などに引きずられて相関が崩れることがあ るので学習対象から除いておく • 他の⼿法も検討する • 顧客の分類(classification)によるパーソナライズで要件を満たせることも多い Copyright (C) Takeshi Mikami. All rights reserved. 99 協調フィルタリングの応⽤例 レコメンドの適⽤で気をつけたいことを紹介します
  100. 100. takemikamiʼs note ‒ http://takemikami.com/ 付録 環境構築の⽅法 参考⽂献リスト Copyright (C) Takeshi Mikami. All rights reserved. 100
  101. 101. takemikamiʼs note ‒ http://takemikami.com/ 環境構築の⽅法 • scikit-learn/tensorflowの環境構築 • Anacondaをインストールします (pyenvを利⽤している場合) • 決定⽊のサンプルを動かす場合はgraphviz, pydotplusをインストール (homebrewを利⽤している場合) • TensorFlowのサンプルを動かす場合はtensorflow, kerasをインストール Copyright (C) Takeshi Mikami. All rights reserved. 101 付録 本資料の内容を実⾏するための環境構築について説明します $ pyenv install anaconda3-4.3.0 $ brew install graphviz $ conda install -c conda-forge pydotplus $ conda install -c conda-forge tensorflow $ conda install -c conda-forge keras
  102. 102. takemikamiʼs note ‒ http://takemikami.com/ 環境構築の⽅法 • ApacheSpark/MLlibの環境構築 ※python環境は前提です • ApacheSparkをインストールします (homebrewを利⽤している場合) Copyright (C) Takeshi Mikami. All rights reserved. 102 付録 本資料の内容を実⾏するための環境構築について説明します $ brew install apache-spark
  103. 103. takemikamiʼs note ‒ http://takemikami.com/ 環境構築の⽅法 • jupyter notebookの起動 • tensorboardの起動 • pysparkの起動 Copyright (C) Takeshi Mikami. All rights reserved. 103 付録 本資料の内容を実⾏するための環境構築について説明します $ jupyter notebook $ tensorboard $ pyspark →http://localhost:8888/ でアクセス →http://localhost:6006/ でアクセス
  104. 104. takemikamiʼs note ‒ http://takemikami.com/ 参考⽂献リスト • 斎藤康毅「ゼロから作るDeepLearning」オライリージャパン 2016 • 丸⼭宏、神⾕直樹、⼭⽥敦「データサイエンティスト・ハンドブック」近代科学社 2015 • Dietmar Jannach・Markus Zanker・Alexander Felfernig・Gerhard Friedrich・⽥中克⼰・⾓⾕和俊 「情報推薦システム⼊⾨〜理論と実践」共⽴出版 2012 • 兼⼦毅「Rで学ぶ多変量解析」⽇科技連出版社 2011 • Sean Owen・Robin Anil・Ted Dunning・Ellen Friedman「Mahout in Action」Manning Pubns Co. 2011 • 宮本定明 「クラスター分析⼊⾨ -ファジィクラスタリングの理論と応⽤」森北出版 2010 • ⾦明哲「Rによるデータサイエンス データ解析の基礎から最新⼿法まで」森北出版 2007 • 朝野煕彦 「⼊⾨ 多変量解析の実際」講談社 1996 • 稲垣宣⽣・⼭根芳知・吉⽥光雄「統計学⼊⾨」裳華房 1992 Copyright (C) Takeshi Mikami. All rights reserved. 104 付録 本資料作成にあたって参考にした⽂献リストです
  105. 105. takemikamiʼs note ‒ http://takemikami.com/ 参考Webサイトリスト • 奥健太「情報推薦システム⼊⾨:講義スライド」 http://www.slideshare.net/KentaOku/ss-50762836 • @soonraah「Apache Spark による推薦システム案件例」 https://speakerdeck.com/soonraah/apache-spark-niyorutui-jian-sisutemuan-jian-li • Bugra Akyildiz「Alternating Least Squares Method for Collaborative Filtering」 http://bugra.github.io/work/notes/2014-04-19/alternating-least-squares-method-for- collaborative-filtering/ • Apache Mahout「Recommender Architecture」 https://mahout.apache.org/users/algorithms/recommender-overview.html Copyright (C) Takeshi Mikami. All rights reserved. 105 付録 本資料作成にあたって参考にしたWebサイトリストです

×