SlideShare a Scribd company logo
6/10(土)開催
TECH & BRIDGE MEETING 〜講演会〜
テーマ:人工知能・機械学習・ディープラーニング Vol.2
講演会主催・運営会社:株式会社エージェントゲート
講演者:三上 威様(フリーランスITエンジニア)
#techandbridge
takemikami’s note – http://takemikami.com/
レコメンドアルゴリズムの基礎
及び、応用のための周辺知識と実装方法
TECH & BRIDGE MEETING 〜エンジニア講演会〜
第2回 人工知能・機械学習・ディープラーニング 〜初級者向け〜
Copyright (C) Takeshi Mikami. All rights reserved. 2
三上威(フリーランスITエンジニア) twitter: @takemikami
2017.6.10 TKPガーデンシティ渋谷 ホールB
機械学習 レコメンド
takemikami’s note – http://takemikami.com/
はじめに
• 対象: 機械学習未経験のエンジニア
• テーマ:レコメンドアルゴリズムとその応用
• 内容
• Pythonを使った機械学習の紹介
• レコメンドアルゴリズムの基礎
• レコメンドの周辺知識と実装方法
Copyright (C) Takeshi Mikami. All rights reserved. 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. 4
発表者のプロフィールを紹介します
takemikami’s note – http://takemikami.com/
機械学習を応用するためのスキル
Copyright (C) Takeshi Mikami. All rights reserved. 5
※丸山宏・山田敦・神谷直樹共著「データサイエンティスト・ハンドブック」(近代科学社)を参考に作成
ビジネス力
(business problem solving)
データエンジニアリング力
(data engineering)
データサイエンス力
(data science)
ビジネス課題を
理解・解決するスキル
統計・機械学習等の情報科学を
理解・活用するスキル
データの加工・運用環境
を実装するスキル
機械学習を応用するために必要なスキルを紹介します
データサイエンティスト
に求められるスキルとして
よく示されるものです
takemikami’s note – http://takemikami.com/
ビジネス力とは
• ビジネス課題を整理する
「このデータ分析によって解きたいビジネス課題は何か」を考える
→課題を明確にしておかないと成果に結びつかない
• ビジネス課題を説明する
レポーティングやプレゼンスキル
→意思決定者が理解出来ないと実行できない
Copyright (C) Takeshi Mikami. All rights reserved. 6
機械学習を応用するためのビジネス力について説明します
takemikami’s note – http://takemikami.com/
データサイエンス力とは
• アルゴリズムを理解する
統計学や機械学習のアルゴリズムの理解
→理解していないとチューニングが行えない
• データ・アルゴリズムの特性を理解する
データの特性、それらを計算するための計算資源の見
→実用的にデータを活用するための設計に必要
Copyright (C) Takeshi Mikami. All rights reserved. 7
機械学習を応用するためのデータサイエンス力について説明します
takemikami’s note – http://takemikami.com/
データエンジニアリング力とは
• アルゴリズムの実装スキル
ライブラリの活用スキル、アルゴリズムの実装スキル
→システム化するために必要
• システムインフラの運用スキル
ビッグデータ、並列分散処理などの理解と運用スキル
→大量のデータを扱う場合に必要
Copyright (C) Takeshi Mikami. All rights reserved. 8
機械学習を応用するためのデータエンジニアリング力について説明します
takemikami’s note – http://takemikami.com/
本日扱う分野 (機械学習を応用するためのスキル)
Copyright (C) Takeshi Mikami. All rights reserved. 9
ビジネス力
(business problem solving)
データエンジニアリング力
(data engineering)
データサイエンス力
(data science)
データサイエンス・エンジニアリング
を中心にお話しします
機械学習を応用するためのスキルの中で、本日お話する分野を示します
takemikami’s note – http://takemikami.com/
Pythonを使った機械学習の紹介
scikit-learnによる機械学習
回帰、分類、クラスタリング、次元削減
TensorFlowによる機械学習
画像のクラス分類
Copyright (C) Takeshi Mikami. All rights reserved. 10
takemikami’s note – http://takemikami.com/
データ分析のアプローチ
• データ分析のアプーチは以下の3つに分類できる
Copyright (C) Takeshi Mikami. All rights reserved. 11
scikit-learnによる機械学習
アプローチ 説明 例 手法
説明的データ分析
(descriptive)
事実を説明する・見
つける
・どんな人が何を買っているか?
・ある広告がどれだけ売上に貢献して
いるか?
BI、クラスタリン
グ、アソシエー
ション分析
予測的データ分析
(predictive)
(未来や欠測値を)予
測する
・ある商品群を閲覧した人の性別は?
・広告を出稿したら、どれだけ売上が
上がるか?
分類・回帰、統計
的機械学習
指示的データ分析
(prescriptive)
最適解を探す ・利益を最大化するための、最適な仕
入れ量は?
・売上を最大化するには、どこに広告
を出稿すべきか?
最適化、実験計画
→ 実施したい「分析のアプローチ」が何かを認識し、適切な「手法」を適用する
3つのデータ分析のアプローチを紹介します
takemikami’s note – http://takemikami.com/
代表的な機械学習の手法
Copyright (C) Takeshi Mikami. All rights reserved. 12
scikit-learnによる機械学習
教師 種類 手法 活用方法
教師あり
(supervised
learning)
分類
(classification)
ロジスティック回帰
決定木
SVM
ニューラルネットワーク
離脱顧客判定
スパムメールの判定
回帰
(regression)
線形回帰分析
ベイズ線形回帰分析
販売予測
教師なし
(unsupervised
learning)
クラスタリング
(clustering)
k-means法
混合正規分布モデル
顧客のセグメント分け
次元削減
(dimentionality reduction)
主成分分析
特異値分解
商品の類似性を可視化
※教師あり/なし以外にも強化学習(reinforcement learning)という手法もあります
代表的な機械学習の手法を紹介します
takemikami’s note – http://takemikami.com/
クラスタリング(clustering)と分類(classification)
Copyright (C) Takeshi Mikami. All rights reserved. 13
scikit-learnによる機械学習
分類(classification) クラスタリング(clustering)
教師 教師あり 教師なし
説明 与えられたデータを
適切なクラスに振り分ける
与えられたデータを
複数のグループ分ける
イメージ
既存データを元に作ったルールで
新規データを振り分ける
データの特徴を元に
意味あるグループが無いか見つける
A
ルール
B C
クラスタリングと分類(教師あり学習と教師なし学習)の違いを示します
takemikami’s note – http://takemikami.com/
scikit-learnの紹介をします
scikit-learnとは
• Pythonの代表的な機械学習ライブラリ
• 分類・回帰、クラスタリング・次元削減などのアルゴリズムを多数備え
る
• NumPy, SciPyというPythonの数値計算ライブラリと連携動作する
Copyright (C) Takeshi Mikami. All rights reserved. 14
scikit-learnによる機械学習
scikit-learnで試しながら
それぞれの手法を紹介していきます
Pythonのオープンソースの機械学習ライブラリ
takemikami’s note – http://takemikami.com/
scikit-learnで利用できるアルゴリズムを紹介します
scikit-learnで利用できるアルゴリズム
Copyright (C) Takeshi Mikami. All rights reserved. 15
scikit-learnによる機械学習
分類
クラスタリング
回帰
次元削減
引用元: http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
アルゴリズム選択
のチャート図
takemikami’s note – http://takemikami.com/
可視化・レポーティング環境 〜jupyter notebook, matplotlib
Copyright (C) Takeshi Mikami. All rights reserved. 16
scikit-learnによる機械学習
可視化・レポーティング用ツールとしてjupyter notebook, matplotlibを紹介します
Pythonのコード
(分析のプロセス)
Pythonの処理結果
(分析の結果)
jupyter notebook
→ 分析のプロセスと結果の記録
matplotlibによる可視化
matplotlib
→ 分析の結果の可視化
Pythonのコード
(分析のプロセス)
Pythonの処理結果
(分析の結果)
takemikami’s note – http://takemikami.com/
教師あり学習の基本
Copyright (C) Takeshi Mikami. All rights reserved. 17
scikit-learnによる機械学習
教師あり学習の基本的な考え方を説明します
やりたいこと:
「xの値」が与えられた時に「yの値」を予測したい
→ 𝑦 = 𝑓 𝑥 という関数を求めたい
𝑦 = 𝑓(𝑥)
目的変数 説明変数
予測モデル目的変数が離散値→分類
目的変数が連続値→回帰
takemikami’s note – http://takemikami.com/
教師あり学習の基本
Copyright (C) Takeshi Mikami. All rights reserved. 18
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)
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
• 最小二乗法とは
「残差の二乗和が最小になる係数を決定する手法」
Copyright (C) Takeshi Mikami. All rights reserved. 19
scikit-learnによる機械学習
線形回帰分析を例に分類のアルゴリズムを紹介します
線形回帰の例
標本回帰直線からの残差の二乗和
これを最小にする、a,bを求める
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
• 残差平方和を最小にする𝑎, 𝑏を求める
𝑖=1
𝑛
𝑒𝑖
2
= 𝑖=1
𝑛
{𝑦𝑖 − (𝑎 + 𝑏𝑥𝑖)}2
• 残差平方和を𝑎, 𝑏で偏微分すると
𝑛𝑎 + 𝑏 𝑥𝑖 = 𝑦𝑖 , 𝑎 𝑥𝑖 + 𝑏 𝑦𝑖
2
= 𝑥𝑖 𝑦𝑖
• この連立一次方程式を解くと
𝑏 =
𝑛 𝑥 𝑖 𝑦 𝑖−( 𝑥 𝑖)( 𝑦 𝑖)
𝑛 𝑥 𝑖
2−( 𝑥 𝑖)2 , 𝑎 =
1
𝑛
𝑦𝑖 − 𝑏
1
𝑛
𝑥𝑖
Copyright (C) Takeshi Mikami. All rights reserved. 20
scikit-learnによる機械学習
線形回帰分析を例に分類のアルゴリズムを紹介します
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 21
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
ライブラリ・データを読み込みます
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 22
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
データを描画してみます
x: 説明変数
y: 目的変数
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 23
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
学習・検証データに分割し
学習させます
takemikami’s note – http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 24
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
回帰直線と検証データを
描画します
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
Copyright (C) Takeshi Mikami. All rights reserved. 25
scikit-learnによる機械学習
決定木を例に分類のアルゴリズムを紹介します
No 風 気温 海水浴
1 弱 高 行く
2 弱 低 行かない
3 弱 高 行く
4 弱 中 行く
5 弱 低 行かない
6 弱 高 行かない
7 強 高 行かない
8 強 低 行かない
9 強 中 行かない
10 強 高 行く
気温:高 気温:中 気温:低
風:弱 行く 行く 行かない
風:強 行かない 行かない 行かない
目的変数:海水浴行く・行かない
説明変数:風・気温
これを樹木モデルに
当てはめて考えてみる
元データ 行動パターン判断結果
やりたいこと: 風・気温から海水浴に行くかを判断する
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
• ジニ係数(Gini Index)を用いて分岐点を計算
• 分布の不純度の尺度
値が大きいほど、不純度が高い(データがばらついている)と判断
• 値が大きい点から枝を分岐していく
Copyright (C) Takeshi Mikami. All rights reserved. 26
scikit-learnによる機械学習
決定木を例に分類のアルゴリズムを紹介します
t:ノード数 i:クラス p:比率
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-[(4/10)2 + (6/10)2] = 0.48
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-[(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
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
• 気温の高中低を分岐点とするジニ係数算出
Copyright (C) Takeshi Mikami. All rights reserved. 29
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
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
• (最も大きい)ジニ係数から分岐点を決める
Copyright (C) Takeshi Mikami. All rights reserved. 30
scikit-learnによる機械学習
決定木を例に分類のアルゴリズムを紹介します
GI(風=強・弱) = 0.032
GI(気温=高・中低) = 0.08
GI(気温=中・高低) = 0.05
GI(気温=低・高中) = 0.137
気温:高 気温:中 気温:低
風:弱 行く 行く 行かない
風:強 行かない 行かない 行かない
①
②
①
②
第1ノードは気温の高中・低で分岐。
同様にして第2ノード以降も求めていく
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
Copyright (C) Takeshi Mikami. All rights reserved. 31
scikit-learnによる機械学習
使用するデータセット(iris)の説明をします
• 使用するirisのデータは分類の例でよく使われるデータセット
setosa vergicolor virginica
目的変数:アヤメの品種(setosa, vergicolor, virginca)
説明変数:花びら・がく片の大きさ
petal
sepal
※画像はwikipedia.org, ja.wikipedia.orgから
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
Copyright (C) Takeshi Mikami. All rights reserved. 32
scikit-learnによる機械学習
使用するデータセット(iris)の説明をします
(目的変数)
アヤメの品種
(説明変数)
花びら・がく片の大きさ
アヤメの品種種別
データ50件づつ
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
Copyright (C) Takeshi Mikami. All rights reserved. 33
scikit-learnによる機械学習
scikit-learnでの決定木を紹介します
ライブラリ・データを読み込み
学習させます
takemikami’s note – http://takemikami.com/
分類(classification) 決定木の例
Copyright (C) Takeshi Mikami. All rights reserved. 34
scikit-learnによる機械学習
scikit-learnでの決定木を紹介します
生成した決定木を
描画します
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 35
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
やりたいこと: データセットを指定した数のクラスタに分ける
• クラスタ数(k)を決める
• クラスタの中心点を対象データからランダムにk個決める
• 繰り返し
• 各データを最も近くにある中心点のクラスタに割り当てる
• クラスタ内のデータの平均値を新たなクラスタの中心点にする
• クラスタの中心点が変化しなくなったら終了
→次のスライドから、
k-means法で最適なクラスタを探索する流れをイメージで示します。
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 36
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
クラスタリングを行いたいデータセットを用意する
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 37
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
✓
✓
クラスタの中心点を対象データからランダムにk個決める(この図では2個)
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 38
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
各データを最も近くにある中心点のクラスタに割り当てる
✓
✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 39
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
クラスタ内のデータの平均値を新たなクラスタの中心点にする
✓
✓
✓
✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 40
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
各データを最も近くにある中心点のクラスタに割り当てる
✓
✓
✓
✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 41
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
クラスタ内のデータの平均値を新たなクラスタの中心点にする
✓
✓
✓
✓
✓
✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 42
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
各データを最も近くにある中心点のクラスタに割り当てる
✓
✓
✓
✓
✓
✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 43
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
クラスタ内のデータの平均値を新たなクラスタの中心点にする
✓
✓
✓
✓
✓
✓
✓ ✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 44
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
各データを最も近くにある中心点のクラスタに割り当てる
✓
✓
✓
✓
✓
✓
✓ ✓
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 45
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
✓
✓
✓
✓
✓
✓
✓ ✓
クラスタ内のデータの平均値を新たなクラスタの中心点にする
→クラスタの中心点が変化しなくなった ⇒ 終了
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 46
scikit-learnによる機械学習
k-means法の計算で利用する距離について説明します
ユークリッド距離 コサイン距離
式
式
(2変数
の時)
説明 データ間の直線距離 データをベクトルで表現した時の
角度の近さ
※一部の変数の大きさの偏りに影響を受けない
d(Xa - Xb ) = (xaj - xbj )2
j=1
r
å s(Xa - Xb ) =
xaj xbj
j=1
r
å
xaj
2
j=1
r
å xbj
2
j=1
r
å
d(Xa - Xb ) = xa1 - xb1( )
2
+(xa2 - xb2 )2 s(Xa - Xb ) =
xa1xb1 + xa2 xb2
xa1
2
+ xa2
2
xb1
2
+ xb2
2
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 47
scikit-learnによる機械学習
scikit-learnでのk-meansを紹介します
ライブラリ・データを読み込み
学習させます
takemikami’s note – http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 48
scikit-learnによる機械学習
scikit-learnでのk-meansを紹介します
クラスタリング結果と
元データのターゲットを表示します
takemikami’s note – http://takemikami.com/
次元削減(dimensionality reduction) PCAの例
• 次元削減とは変数の数(データの次元数)を削減すること
Copyright (C) Takeshi Mikami. All rights reserved. 49
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 (主成分分析)
takemikami’s note – http://takemikami.com/
次元削減(dimensionality reduction) PCAの例
Copyright (C) Takeshi Mikami. All rights reserved. 50
scikit-learnによる機械学習
scikit-learnでのPCA(主成分分析)を紹介します
ライブラリ・データを読み込み
学習させます
takemikami’s note – http://takemikami.com/
次元削減(dimensionality reduction) PCAの例
Copyright (C) Takeshi Mikami. All rights reserved. 51
scikit-learnによる機械学習
scikit-learnでのPCA(主成分分析)を紹介します
次元削減結果を描画します
takemikami’s note – http://takemikami.com/
ニューラルネットワークとは
• パーセプトロンとは、視覚と脳の機能をモデル化したもの
• 入力信号(x)と重み(w)の乗算の総和に対して、出力信号(y)が決まる
Copyright (C) Takeshi Mikami. All rights reserved. 52
TensorFlowによる機械学習
パーセプトロン・ニューラルネットワークについて説明します
𝑥1
𝑥2
𝑦
𝑤1
𝑤2
入力層 出力層
重み
→パーセプトロンを多層に重ね、
中間層を多くしたものが
ディープニューラルネットワーク
入力層 中間層 出力層
takemikami’s note – http://takemikami.com/
TensorFlowとは
• DistBeliefというGoogleのサービスに使われている社内ツールを
OpenSourceにしたもの
• ニューラルネットワーク/ディープニューラルネットが実装できる
• TensorBoardによってモデル・学習状況等を可視化できる
• データフローグラフによって、
自由度の高いネットワークを記載できる
• 画像処理の関数も用意されている
Copyright (C) Takeshi Mikami. All rights reserved. 53
TensorFlowによる機械学習
TensorFlowの紹介をします
オープンソースの機械学習ライブラリ
→画像のクラス分類などに利用できる (チュートリアルがそれ)
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 54
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
• MNISTデータセットは画像処理の機械学習の例でよく使われるデータ
• 手書きで書かれた数字を畳み込みニューラルネットを使って分類
目的変数:数字(0〜9)
説明変数:手書きの画像データ
↓ ↓ ↓ ↓
5 0 4 1
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 55
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
※ CNN = Convolutional Neural Network (畳み込みニューラルネット)
ライブラリの読み込みと
パラメータの設定
※ここでは手短にコードを書くため、
kerasという、tensorflow上で動作する
高水準ニューラルネットライブラリを使用しています。
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 56
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
テストデータの準備
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 57
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
ニューラルネットワークの作成
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 58
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
学習の実行
takemikami’s note – http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 59
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
TensorBoardでの可視化
ネットワークの可視化
学習の進行と
精度の変化
takemikami’s note – http://takemikami.com/
レコメンドアルゴリズムの基礎
レコメンドとは
レコメンドの手法
協調フィルタリングのアルゴリズム
ユーザベース、アイテムベース、ALS(交互最小二乗法)
Copyright (C) Takeshi Mikami. All rights reserved. 60
takemikami’s note – http://takemikami.com/
レコメンドエンジンとは
• レコメンドエンジンとは
Copyright (C) Takeshi Mikami. All rights reserved. 61
レコメンドとは
レコメンドエンジンの説明、パーソナライズについて示します
「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」
Amazon Googleニュース
閲覧中の本を買った人が、
買ったことがある本
地域に合わせたニュース
ユーザ属性や行動に
あわせたニュース
takemikami’s note – http://takemikami.com/
レコメンドの手法:パーソナライズ
Copyright (C) Takeshi Mikami. All rights reserved. 62
レコメンドとは
レコメンドの手法「パーソナライズ」について説明します
パーソナライズ 非パーソナライズ
説明 ユーザの特徴にもとづいた推薦
→ユーザ毎に推薦されるアイテムが異なる
万人に向けたおすすめ
→全ユーザに同じアイテムが推薦される
アルゴ
リズム
協調フィルタリング
内容ベース型フィルタリング
閲覧履歴 etc
ベストセラー
新着
販売店担当者のおすすめ etc
レコメンドというとパーソナライズを指すことが多いが、
ユーザ属性不明の場合などに対応する為、非パーソナライズの手法も組み合わせる。
takemikami’s note – http://takemikami.com/
レコメンドの手法:協調型・内容ベース型
Copyright (C) Takeshi Mikami. All rights reserved. 63
レコメンドとは
レコメンドの手法「協調型」と「内容ベース型」の違いについて説明します
協調型 (collaborative filtering) 内容ベース型 (content based filtering)
説明 他のユーザの嗜好行動を元に、
対象ユーザへのアイテムを推薦
アイテムの特徴・説明と、
ユーザの特徴・行動を用いて推薦
イメージ
他のユーザの嗜好から、
対象ユーザへアイテムを推薦
アイテム・ユーザの特徴を用いて推薦
課題 ある程度の量の他のユーザのデータが必要
新規アイテム・ユーザに適切な推薦ができない
アイテムの特徴データのメンテナンスが必要
→各手法に課題があるため、これらを組み合わせたハイブリッドアプローチをとることも多い。
コールドスタート問題
・
・
・
○
×
×
×
×
○
○
○ ?
特徴A
特徴B
特徴C
特徴A’
takemikami’s note – http://takemikami.com/
レコメンドの手法:リアルタイム・バッチ処理
Copyright (C) Takeshi Mikami. All rights reserved. 64
レコメンドとは
レコメンドの手法「リアルタイム」「バッチ処理」について説明します
バッチ処理 リアルタイム
説明 ユーザ・アイテムの特徴・行動を元に、
事前に推薦アイテムのリストを作成しておく
ユーザの行動を元にして、
リアルタイムにアイテムを推薦する
適用例 パーソナライズおすすめアイテムメール
マイページでのおすすめアイテム掲出 etc
はじめて訪問したユーザへのおすすめアイテム
掲出 etc
特徴A
特徴B
特徴C
特徴収集
特徴A’
推
薦
事前に処理
インタラクション
特徴A
特徴B
特徴C
特徴A’
takemikami’s note – http://takemikami.com/
協調フィルタリング(ユーザベース)のイメージ
Copyright (C) Takeshi Mikami. All rights reserved. 65
協調フィルタリングのアルゴリズム
ユーザベースの協調フィルタリングのイメージを示します
やりたいこと:
「ユーザ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(最も好む)
takemikami’s note – http://takemikami.com/
協調フィルタリング(ユーザベース)の手続き
• 対象ユーザ以外のユーザに対して、
対象ユーザとの類似度を求める
• 類似するユーザを選ぶ
• 類似ユーザの対象アイテムの評価から、加重平均を算出
Copyright (C) Takeshi Mikami. All rights reserved. 66
協調フィルタリングのアルゴリズム
ユーザベースの協調フィルタリングを行う手続きを示します
→次のスライドから、
ユーザベースの協調フィルタリングで予測を行う流れをイメージで示します。
takemikami’s note – http://takemikami.com/
協調フィルタリング(ユーザベース)の手続き 〜イメージ1
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
アイテムA〜Dの評価値を使って、
対象ユーザとの類似度を計算
※ここでは、ピアソンの相関係数(Pearson correlation coefficient)を使って類似度を計算しています。
takemikami’s note – http://takemikami.com/
協調フィルタリング(ユーザベース)の手続き 〜イメージ2
Copyright (C) Takeshi Mikami. All rights reserved. 68
協調フィルタリングのアルゴリズム
ユーザベースの協調フィルタリングのイメージ
アイテム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
類似度をみて、
類似するユーザを選ぶ
takemikami’s note – http://takemikami.com/
協調フィルタリング(ユーザベース)の手続き 〜イメージ3
Copyright (C) Takeshi Mikami. All rights reserved. 69
協調フィルタリングのアルゴリズム
ユーザベースの協調フィルタリングのイメージ
アイテム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の評価を予測
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)のイメージ
Copyright (C) Takeshi Mikami. All rights reserved. 70
協調フィルタリングのアルゴリズム
アイテムベースの協調フィルタリングのイメージを示します
やりたいこと:
「旅行者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
行く可能性が高い
旅先を予測
旅行回数
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)の手続き
• 対象ユーザ以外のユーザの評価値から、
各アイテム間の類似度を求め、類似度行列を算出する
• 対象ユーザの評価値と類似度行列の積を求める
Copyright (C) Takeshi Mikami. All rights reserved. 71
協調フィルタリングのアルゴリズム
アイテムベースの協調フィルタリングを行う手続きを示します
→次のスライドから、
アイテムベースの協調フィルタリングで予測を行う流れをイメージで示します。
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)の手続き 〜イメージ1
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
旅行者1〜5の旅行回数を使って、
台北との類似度を計算
※ここでは、コサイン類似度(cosine similarity)を使って類似度を計算しています。
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)の手続き 〜イメージ2
Copyright (C) Takeshi Mikami. All rights reserved. 73
協調フィルタリングのアルゴリズム
アイテムベースの協調フィルタリングのイメージ
台北 バンコク ホノルル グァム
対象ユーザ 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
類似度行列が出来る
同様に、
バンコク,ホノルル,グァムについても計算
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)の手続き 〜イメージ3
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
「対象ユーザの旅先訪問回数」
「類似度行列」の積
訪問したことがあるバンコクを除くと、
台北を旅先に選ぶ可能性が高い
takemikami’s note – http://takemikami.com/
協調フィルタリング(アイテムベース)のメリット
Copyright (C) Takeshi Mikami. All rights reserved. 75
協調フィルタリングのアルゴリズム
アイテムベースの協調フィルタリングのイメージ
台北 バンコク ホノルル グァム
台北 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
アイテム間の「類似度行列」は、
事前にバッチで作成が可能
新たなユーザに対しても、
類似度行列の再作成なしに、レコメンドが可能
takemikami’s note – http://takemikami.com/
類似度の計算
Copyright (C) Takeshi Mikami. All rights reserved. 76
協調フィルタリングのアルゴリズム
協調フィルタリングの手続きで用いた類似度について説明します
ピアソンの相関係数 コサイン類似度
式
説明 ユーザベース向きの尺度 アイテムベース向きの尺度
データをベクトルで表現した時の角度の近さ
※一部の変数の大きさの偏りに影響を受けな
い
X: 評価値行列
ρ: 要素数
Xa, Xb: 類似度の比較対象
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)のイメージ
Copyright (C) Takeshi Mikami. All rights reserved. 77
協調フィルタリングのアルゴリズム
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 (交互最小二乗法)
takemikami’s note – http://takemikami.com/
最小二乗法について 〜ALS(『交互』最小二乗法)の前に
• 最小二乗法とは
「残差の二乗和が最小になる係数を決定する手法」
Copyright (C) Takeshi Mikami. All rights reserved. 78
協調フィルタリングのアルゴリズム
最小二乗法について説明します
線形回帰の例
標本回帰直線からの残差の二乗和
これを最小にする、a,bを求める
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き
• 特徴量の数を決める
• アイテムの特徴量行列を初期化する
• 収束するまで以下を繰り返す
• 評価値行列・アイテムの特徴量行列から、
ユーザの特徴量を最小自乗法で計算
• 評価値行列・ユーザの特徴量行列から、
アイテムの特徴量を最小自乗法で計算
Copyright (C) Takeshi Mikami. All rights reserved. 79
協調フィルタリングのアルゴリズム
ALS (交互最小二乗法)による協調フィルタリングの手続きを示します
→次のスライドから、
ALS(交互最小二乗法)による協調フィルタリングの流れをイメージで示します。
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き 〜イメージ1
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
評価値行列
列数
特徴量の数を決める
アイテムの
特徴量行列
行数
ユーザの特徴量行列
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き 〜イメージ2
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
評価値行列
アイテムの
特徴量行列
ユーザの特徴量行列
アイテム毎の評価値の平均を算出
十分に小さい値で乱数をふる
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き 〜イメージ3
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
評価値行列
アイテムの特徴量行列ユーザの特徴量行列
=×
線形回帰の例で「a,b」にあたる 線形回帰の例で「x」にあたる 線形回帰の例で「y」にあたる
以下の誤差が最小になるようにユーザの特徴量を計算
・「ユーザの特徴量行列」と「アイテムの特徴量」の積
・「評価値行列」
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き 〜イメージ4
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
評価値行列
アイテムの特徴量行列ユーザの特徴量行列
=×
線形回帰の例で「x」にあたる 線形回帰の例で「a,b」にあたる 線形回帰の例で「y」にあたる
以下の誤差が最小になるようにユーザの特徴量を計算
・「ユーザの特徴量行列」と「アイテムの特徴量」の積
・「評価値行列」
takemikami’s note – http://takemikami.com/
協調フィルタリング(ALS)の手続き 〜イメージ5
Copyright (C) Takeshi Mikami. All rights reserved. 84
協調フィルタリングのアルゴリズム
ALS(交互最小二乗法)による協調フィルタリングのイメージ
A B C D E
1
2
3
4
A B C D E
1
2
3
4
評価値行列
アイテムの特徴量行列ユーザの特徴量行列
=×
誤差が収束するまで、
これらの特徴量の再計算を繰り返す
誤差が収束するまで、
これらの特徴量の再計算を繰り返す
takemikami’s note – http://takemikami.com/
レコメンドの周辺知識と実装方法
システム構成と周辺知識
ライブラリを用いた協調フィルタリングの実装
協調フィルタリングの応用例
Copyright (C) Takeshi Mikami. All rights reserved. 85
takemikami’s note – http://takemikami.com/
マーケティングデータ分析と機械学習
Copyright (C) Takeshi Mikami. All rights reserved. 86
システム構成と周辺知識
マーケティングデータ分析における、機械学習の位置づけを示します
顧客との
チャネル
データ分析
顧客
社会・
業界
リアル広告 イベント
・・・
Data Warehouse
SNS
収集施策
実店舗
収
集
DataMart
Web広告ECサイト
BIツール
機械学習
加工マーケター
データサイエンティスト
施策の検討・意思決定を機械学習で支援
takemikami’s note – http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 87
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
Webサイト
販売系
システム
backend db
datalake
recommendDB
user interaction DB
アイテム
情報
売上
情報
行動
ログ
行動ログ
データ収集
サーバ
ログ収集
サーバ
アイテム情報
ランキング情報
類似度行列
アイテム情報
レコメンド
サーバ
(online)
アイテム
類似度計算
ログ・売上
集計
ユーザ情報
レコメンド
サーバ
(batch)
takemikami’s note – http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 88
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
Webサイト
販売系
システム
backend db
datalake
recommendDB
user interaction DB
アイテム
情報
売上
情報
行動
ログ
行動ログ
データ収集
サーバ
ログ収集
サーバ
アイテム情報
ランキング情報
類似度行列
アイテム情報
レコメンド
サーバ
(online)
アイテム
類似度計算
ログ・売上
集計
ユーザ情報
レコメンド
サーバ
(batch)
ユーザの行動を収集し
学習する流れ
takemikami’s note – http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 89
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
Webサイト
販売系
システム
backend db
datalake
recommendDB
user interaction DB
アイテム
情報
売上
情報
行動
ログ
行動ログ
データ収集
サーバ
ログ収集
サーバ
アイテム情報
ランキング情報
類似度行列
アイテム情報
レコメンド
サーバ
(online)
アイテム
類似度計算
ログ・売上
集計
ユーザ情報
レコメンド
サーバ
(batch)
リアルタイムに
ユーザの行動を収集する流れ
ユーザの行動を応じた
レコメンド情報を表出する流れ
ユーザの行動は
Key-Value Store
でユーザ単位に管理
アイテムベースでのレコメンド
takemikami’s note – http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 90
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
Webサイト
販売系
システム
backend db
datalake
recommendDB
user interaction DB
アイテム
情報
売上
情報
行動
ログ
行動ログ
データ収集
サーバ
ログ収集
サーバ
アイテム情報
ランキング情報
類似度行列
アイテム情報
レコメンド
サーバ
(online)
アイテム
類似度計算
ログ・売上
集計
ユーザ情報
レコメンド
サーバ
(batch)
バッチ処理での
レコメンド情報表出の流れ
(メール配信など)
ユーザベースでのレコメンド
takemikami’s note – http://takemikami.com/
Apache Hadoopとは
• 「データ保存のための分散ファイルシステム」
「データ処理のための並列処理システム」
によってビッグデータの分散処理を実現する
• 4つのモジュールで構成される
• 共通ユーティリティ (Hadoop Common)
• 分散ファイルシステム (Hadoop HDFS)
• クラスタリソース・ジョブ管理 (Hadoop YARN)
• 並列データ処理システム (Hadoop MapReduce)
Copyright (C) Takeshi Mikami. All rights reserved. 91
システム構成と周辺知識
Apache Hadoopの紹介をします
ビッグデータ分散処理のフレームワーク
レコメンドでは、
たくさんのデータ(ユーザ×アイテム)を扱うため
ビッグデータ処理を考える必要がある
takemikami’s note – http://takemikami.com/
Hadoop Clusterの全体像
• Hadoop Clusterは『分散ファイルシステム』『並列処理システム』の組
み合わせ構造になる
Copyright (C) Takeshi Mikami. All rights reserved. 92
システム構成と周辺知識
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上で処理を実施できるので効率が良い。
(処理対象データを取得するための通信が不要)
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. 93
システム構成と周辺知識
Apache Sparkの紹介をします
高速な並列データ処理システム
takemikami’s note – http://takemikami.com/
Apache Hadoop上でのSpark
Copyright (C) Takeshi Mikami. All rights reserved. 94
システム構成と周辺知識
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によって実行することが出来る
takemikami’s note – http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 95
ライブラリを用いた協調フィルタリングの実装
使用するデータセット(MovieLens)の説明をします
• 使用するMovieLensデータは、協調フィルタリングの例でよく使われる
データセット
以下の対応が入っている
・ユーザID (userId)
・映画ID (movieId)
・評価 (rating)
takemikami’s note – http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 96
ライブラリを用いた協調フィルタリングの実装
Spark MLlibでのALSを紹介します
学習
検証
データ準備
ライブラリ読込
takemikami’s note – http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 97
ライブラリを用いた協調フィルタリングの実装
Spark MLlibでのALSを紹介します
検証データ
予測データ
takemikami’s note – http://takemikami.com/
協調フィルタリングの応用例 アイテムベースの組み合わせ
• 海外旅行航空券の推薦
• 目的地と出発空港を組み合わせたアイテムベースの協調フィルタリング
• 手続き
• 事前に、過去のユーザの渡航履歴から以下を算出
• 出発空港利用履歴の類似度行列
• 目的地利用履歴の類似度行列
• サイトに訪問したユーザの出発空港利用履歴と目的地利用履歴を取得
• 以下を計算
• 出発空港利用履歴と出発空港利用履歴の類似度行列の積
• 目的地利用履歴と目的地利用履歴の類似度行列の積
• スコアの高い目的地順に並べ、
その目的地に対してスコアが最も高い出発空港を紐付け、
さらに最も価格が安い航空券の情報を推薦
Copyright (C) Takeshi Mikami. All rights reserved. 98
協調フィルタリングの応用例
協調フィルタリングの応用例を示します
→アイテムではなく「属性」の類似度行列を作ることで、
類似度行列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
takemikami’s note – http://takemikami.com/
協調フィルタリングの応用例 メルマガタイトルの最適化
• メルマガタイトルの最適化
• メルマガ内に掲載されているアイテムの中で
もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む
• 手続き
• 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く
• 協調フィルタリングで、
メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出
• 推薦スコアがトップの商品名をメルマガタイトルに差し込む
Copyright (C) Takeshi Mikami. All rights reserved. 99
協調フィルタリングの応用例
協調フィルタリングの応用例を示します
→ライターが作成したコンテンツの見やすさ・わかりやすさなどを生かしたまま、
パーソナライズによって、よりユーザの関心を引く方法の例
※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が見込める
takemikami’s note – http://takemikami.com/
レコメンドの適用で気をつけたいこと
• レコメンド導入の目的・評価指標を決めておく
• 単純に売上増などを目的にすると、サイトの特性によっては成果が出にくい
その場合、売れ筋商品のランキングに反応しなかったユーザが反応したか等を評
価するようにする
※売れ筋に反応しないユーザに対する処置を行っていなかったサイトは、売れ筋
に反応する顧客しか来なくなっている可能性が高いので、成果が出るまでに時間
がかかる
• モデルを破壊するユーザに気をつける
• 社内でのテストバイ、業者の大量購入などに引きずられて相関が崩れることがあ
るので学習対象から除いておく
• 他の手法も検討する
• 顧客の分類(classification)によるパーソナライズで要件を満たせることも多い
Copyright (C) Takeshi Mikami. All rights reserved. 100
協調フィルタリングの応用例
レコメンドの適用で気をつけたいことを紹介します
takemikami’s note – http://takemikami.com/
付録
環境構築の方法
参考文献リスト
Copyright (C) Takeshi Mikami. All rights reserved. 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. 102
付録
本資料の内容を実行するための環境構築について説明します
$ 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
takemikami’s note – http://takemikami.com/
環境構築の方法
• ApacheSpark/MLlibの環境構築 ※python環境は前提です
• ApacheSparkをインストールします
(homebrewを利用している場合)
Copyright (C) Takeshi Mikami. All rights reserved. 103
付録
本資料の内容を実行するための環境構築について説明します
$ brew install apache-spark
takemikami’s note – http://takemikami.com/
環境構築の方法
• jupyter notebookの起動
• tensorboardの起動
• pysparkの起動
Copyright (C) Takeshi Mikami. All rights reserved. 104
付録
本資料の内容を実行するための環境構築について説明します
$ jupyter notebook
$ tensorboard
$ pyspark
→http://localhost:8888/ でアクセス
→http://localhost:6006/ でアクセス
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. 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. 106
付録
本資料作成にあたって参考にしたWebサイトリストです

More Related Content

Similar to 0610 TECH & BRIDGE MEETING

Show and tell takmin
Show and tell takminShow and tell takmin
Show and tell takmin
Takuya Minagawa
 
1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING
健司 亀本
 
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
ShigekiInatama
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
Project Samurai
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
terahide
 
JAWSUG 20210128
JAWSUG 20210128JAWSUG 20210128
JAWSUG 20210128
陽平 山口
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
Koichi Hamada
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
Hiroshi Watanabe
 
学生フォーミュラの組織論
学生フォーミュラの組織論学生フォーミュラの組織論
学生フォーミュラの組織論
Yuya Yamada
 
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
i35_267 Ishigaki
 
明治大の活動2
明治大の活動2明治大の活動2
明治大の活動2
Kazuhiro Hishinuma
 
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶ
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶColdfusionを活かすシステム企画をリーンスタートアップに学ぶ
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶ
masashi takehara
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
典子 松本
 
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
asa88
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
NTT DATA Technology & Innovation
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
Taiji Tsuchiya
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
tak9029
 

Similar to 0610 TECH & BRIDGE MEETING (20)

Show and tell takmin
Show and tell takminShow and tell takmin
Show and tell takmin
 
1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING
 
20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.20240519 Nagoya Embeded Study session / About the development process.
20240519 Nagoya Embeded Study session / About the development process.
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
 
JAWSUG 20210128
JAWSUG 20210128JAWSUG 20210128
JAWSUG 20210128
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
 
学生フォーミュラの組織論
学生フォーミュラの組織論学生フォーミュラの組織論
学生フォーミュラの組織論
 
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
VSM(ValueStreamMapping)によって 実現できたリリースまでに268.5hかかっていた時間を54.5hに短縮できた秘訣
 
明治大の活動2
明治大の活動2明治大の活動2
明治大の活動2
 
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶ
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶColdfusionを活かすシステム企画をリーンスタートアップに学ぶ
Coldfusionを活かすシステム企画をリーンスタートアップに学ぶ
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
【Logic Apps編】ノンコーディングでデキる!お問い合わせフォーム機能拡張
 
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 

0610 TECH & BRIDGE MEETING

  • 1. 6/10(土)開催 TECH & BRIDGE MEETING 〜講演会〜 テーマ:人工知能・機械学習・ディープラーニング Vol.2 講演会主催・運営会社:株式会社エージェントゲート 講演者:三上 威様(フリーランスITエンジニア) #techandbridge
  • 2. takemikami’s note – http://takemikami.com/ レコメンドアルゴリズムの基礎 及び、応用のための周辺知識と実装方法 TECH & BRIDGE MEETING 〜エンジニア講演会〜 第2回 人工知能・機械学習・ディープラーニング 〜初級者向け〜 Copyright (C) Takeshi Mikami. All rights reserved. 2 三上威(フリーランスITエンジニア) twitter: @takemikami 2017.6.10 TKPガーデンシティ渋谷 ホールB 機械学習 レコメンド
  • 3. takemikami’s note – http://takemikami.com/ はじめに • 対象: 機械学習未経験のエンジニア • テーマ:レコメンドアルゴリズムとその応用 • 内容 • Pythonを使った機械学習の紹介 • レコメンドアルゴリズムの基礎 • レコメンドの周辺知識と実装方法 Copyright (C) Takeshi Mikami. All rights reserved. 3 本日の勉強会でお話しする内容について説明します
  • 4. 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. 4 発表者のプロフィールを紹介します
  • 5. takemikami’s note – http://takemikami.com/ 機械学習を応用するためのスキル Copyright (C) Takeshi Mikami. All rights reserved. 5 ※丸山宏・山田敦・神谷直樹共著「データサイエンティスト・ハンドブック」(近代科学社)を参考に作成 ビジネス力 (business problem solving) データエンジニアリング力 (data engineering) データサイエンス力 (data science) ビジネス課題を 理解・解決するスキル 統計・機械学習等の情報科学を 理解・活用するスキル データの加工・運用環境 を実装するスキル 機械学習を応用するために必要なスキルを紹介します データサイエンティスト に求められるスキルとして よく示されるものです
  • 6. takemikami’s note – http://takemikami.com/ ビジネス力とは • ビジネス課題を整理する 「このデータ分析によって解きたいビジネス課題は何か」を考える →課題を明確にしておかないと成果に結びつかない • ビジネス課題を説明する レポーティングやプレゼンスキル →意思決定者が理解出来ないと実行できない Copyright (C) Takeshi Mikami. All rights reserved. 6 機械学習を応用するためのビジネス力について説明します
  • 7. takemikami’s note – http://takemikami.com/ データサイエンス力とは • アルゴリズムを理解する 統計学や機械学習のアルゴリズムの理解 →理解していないとチューニングが行えない • データ・アルゴリズムの特性を理解する データの特性、それらを計算するための計算資源の見 →実用的にデータを活用するための設計に必要 Copyright (C) Takeshi Mikami. All rights reserved. 7 機械学習を応用するためのデータサイエンス力について説明します
  • 8. takemikami’s note – http://takemikami.com/ データエンジニアリング力とは • アルゴリズムの実装スキル ライブラリの活用スキル、アルゴリズムの実装スキル →システム化するために必要 • システムインフラの運用スキル ビッグデータ、並列分散処理などの理解と運用スキル →大量のデータを扱う場合に必要 Copyright (C) Takeshi Mikami. All rights reserved. 8 機械学習を応用するためのデータエンジニアリング力について説明します
  • 9. takemikami’s note – http://takemikami.com/ 本日扱う分野 (機械学習を応用するためのスキル) Copyright (C) Takeshi Mikami. All rights reserved. 9 ビジネス力 (business problem solving) データエンジニアリング力 (data engineering) データサイエンス力 (data science) データサイエンス・エンジニアリング を中心にお話しします 機械学習を応用するためのスキルの中で、本日お話する分野を示します
  • 10. takemikami’s note – http://takemikami.com/ Pythonを使った機械学習の紹介 scikit-learnによる機械学習 回帰、分類、クラスタリング、次元削減 TensorFlowによる機械学習 画像のクラス分類 Copyright (C) Takeshi Mikami. All rights reserved. 10
  • 11. takemikami’s note – http://takemikami.com/ データ分析のアプローチ • データ分析のアプーチは以下の3つに分類できる Copyright (C) Takeshi Mikami. All rights reserved. 11 scikit-learnによる機械学習 アプローチ 説明 例 手法 説明的データ分析 (descriptive) 事実を説明する・見 つける ・どんな人が何を買っているか? ・ある広告がどれだけ売上に貢献して いるか? BI、クラスタリン グ、アソシエー ション分析 予測的データ分析 (predictive) (未来や欠測値を)予 測する ・ある商品群を閲覧した人の性別は? ・広告を出稿したら、どれだけ売上が 上がるか? 分類・回帰、統計 的機械学習 指示的データ分析 (prescriptive) 最適解を探す ・利益を最大化するための、最適な仕 入れ量は? ・売上を最大化するには、どこに広告 を出稿すべきか? 最適化、実験計画 → 実施したい「分析のアプローチ」が何かを認識し、適切な「手法」を適用する 3つのデータ分析のアプローチを紹介します
  • 12. takemikami’s note – http://takemikami.com/ 代表的な機械学習の手法 Copyright (C) Takeshi Mikami. All rights reserved. 12 scikit-learnによる機械学習 教師 種類 手法 活用方法 教師あり (supervised learning) 分類 (classification) ロジスティック回帰 決定木 SVM ニューラルネットワーク 離脱顧客判定 スパムメールの判定 回帰 (regression) 線形回帰分析 ベイズ線形回帰分析 販売予測 教師なし (unsupervised learning) クラスタリング (clustering) k-means法 混合正規分布モデル 顧客のセグメント分け 次元削減 (dimentionality reduction) 主成分分析 特異値分解 商品の類似性を可視化 ※教師あり/なし以外にも強化学習(reinforcement learning)という手法もあります 代表的な機械学習の手法を紹介します
  • 13. takemikami’s note – http://takemikami.com/ クラスタリング(clustering)と分類(classification) Copyright (C) Takeshi Mikami. All rights reserved. 13 scikit-learnによる機械学習 分類(classification) クラスタリング(clustering) 教師 教師あり 教師なし 説明 与えられたデータを 適切なクラスに振り分ける 与えられたデータを 複数のグループ分ける イメージ 既存データを元に作ったルールで 新規データを振り分ける データの特徴を元に 意味あるグループが無いか見つける A ルール B C クラスタリングと分類(教師あり学習と教師なし学習)の違いを示します
  • 14. takemikami’s note – http://takemikami.com/ scikit-learnの紹介をします scikit-learnとは • Pythonの代表的な機械学習ライブラリ • 分類・回帰、クラスタリング・次元削減などのアルゴリズムを多数備え る • NumPy, SciPyというPythonの数値計算ライブラリと連携動作する Copyright (C) Takeshi Mikami. All rights reserved. 14 scikit-learnによる機械学習 scikit-learnで試しながら それぞれの手法を紹介していきます Pythonのオープンソースの機械学習ライブラリ
  • 15. takemikami’s note – http://takemikami.com/ scikit-learnで利用できるアルゴリズムを紹介します scikit-learnで利用できるアルゴリズム Copyright (C) Takeshi Mikami. All rights reserved. 15 scikit-learnによる機械学習 分類 クラスタリング 回帰 次元削減 引用元: http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html アルゴリズム選択 のチャート図
  • 16. takemikami’s note – http://takemikami.com/ 可視化・レポーティング環境 〜jupyter notebook, matplotlib Copyright (C) Takeshi Mikami. All rights reserved. 16 scikit-learnによる機械学習 可視化・レポーティング用ツールとしてjupyter notebook, matplotlibを紹介します Pythonのコード (分析のプロセス) Pythonの処理結果 (分析の結果) jupyter notebook → 分析のプロセスと結果の記録 matplotlibによる可視化 matplotlib → 分析の結果の可視化 Pythonのコード (分析のプロセス) Pythonの処理結果 (分析の結果)
  • 17. takemikami’s note – http://takemikami.com/ 教師あり学習の基本 Copyright (C) Takeshi Mikami. All rights reserved. 17 scikit-learnによる機械学習 教師あり学習の基本的な考え方を説明します やりたいこと: 「xの値」が与えられた時に「yの値」を予測したい → 𝑦 = 𝑓 𝑥 という関数を求めたい 𝑦 = 𝑓(𝑥) 目的変数 説明変数 予測モデル目的変数が離散値→分類 目的変数が連続値→回帰
  • 18. takemikami’s note – http://takemikami.com/ 教師あり学習の基本 Copyright (C) Takeshi Mikami. All rights reserved. 18 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)
  • 19. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 • 最小二乗法とは 「残差の二乗和が最小になる係数を決定する手法」 Copyright (C) Takeshi Mikami. All rights reserved. 19 scikit-learnによる機械学習 線形回帰分析を例に分類のアルゴリズムを紹介します 線形回帰の例 標本回帰直線からの残差の二乗和 これを最小にする、a,bを求める
  • 20. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 • 残差平方和を最小にする𝑎, 𝑏を求める 𝑖=1 𝑛 𝑒𝑖 2 = 𝑖=1 𝑛 {𝑦𝑖 − (𝑎 + 𝑏𝑥𝑖)}2 • 残差平方和を𝑎, 𝑏で偏微分すると 𝑛𝑎 + 𝑏 𝑥𝑖 = 𝑦𝑖 , 𝑎 𝑥𝑖 + 𝑏 𝑦𝑖 2 = 𝑥𝑖 𝑦𝑖 • この連立一次方程式を解くと 𝑏 = 𝑛 𝑥 𝑖 𝑦 𝑖−( 𝑥 𝑖)( 𝑦 𝑖) 𝑛 𝑥 𝑖 2−( 𝑥 𝑖)2 , 𝑎 = 1 𝑛 𝑦𝑖 − 𝑏 1 𝑛 𝑥𝑖 Copyright (C) Takeshi Mikami. All rights reserved. 20 scikit-learnによる機械学習 線形回帰分析を例に分類のアルゴリズムを紹介します
  • 21. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 21 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します ライブラリ・データを読み込みます
  • 22. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 22 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します データを描画してみます x: 説明変数 y: 目的変数
  • 23. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 23 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します 学習・検証データに分割し 学習させます
  • 24. takemikami’s note – http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 24 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します 回帰直線と検証データを 描画します
  • 25. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 Copyright (C) Takeshi Mikami. All rights reserved. 25 scikit-learnによる機械学習 決定木を例に分類のアルゴリズムを紹介します No 風 気温 海水浴 1 弱 高 行く 2 弱 低 行かない 3 弱 高 行く 4 弱 中 行く 5 弱 低 行かない 6 弱 高 行かない 7 強 高 行かない 8 強 低 行かない 9 強 中 行かない 10 強 高 行く 気温:高 気温:中 気温:低 風:弱 行く 行く 行かない 風:強 行かない 行かない 行かない 目的変数:海水浴行く・行かない 説明変数:風・気温 これを樹木モデルに 当てはめて考えてみる 元データ 行動パターン判断結果 やりたいこと: 風・気温から海水浴に行くかを判断する
  • 26. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 • ジニ係数(Gini Index)を用いて分岐点を計算 • 分布の不純度の尺度 値が大きいほど、不純度が高い(データがばらついている)と判断 • 値が大きい点から枝を分岐していく Copyright (C) Takeshi Mikami. All rights reserved. 26 scikit-learnによる機械学習 決定木を例に分類のアルゴリズムを紹介します t:ノード数 i:クラス p:比率
  • 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-[(4/10)2 + (6/10)2] = 0.48
  • 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-[(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
  • 29. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 • 気温の高中低を分岐点とするジニ係数算出 Copyright (C) Takeshi Mikami. All rights reserved. 29 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
  • 30. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 • (最も大きい)ジニ係数から分岐点を決める Copyright (C) Takeshi Mikami. All rights reserved. 30 scikit-learnによる機械学習 決定木を例に分類のアルゴリズムを紹介します GI(風=強・弱) = 0.032 GI(気温=高・中低) = 0.08 GI(気温=中・高低) = 0.05 GI(気温=低・高中) = 0.137 気温:高 気温:中 気温:低 風:弱 行く 行く 行かない 風:強 行かない 行かない 行かない ① ② ① ② 第1ノードは気温の高中・低で分岐。 同様にして第2ノード以降も求めていく
  • 31. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 Copyright (C) Takeshi Mikami. All rights reserved. 31 scikit-learnによる機械学習 使用するデータセット(iris)の説明をします • 使用するirisのデータは分類の例でよく使われるデータセット setosa vergicolor virginica 目的変数:アヤメの品種(setosa, vergicolor, virginca) 説明変数:花びら・がく片の大きさ petal sepal ※画像はwikipedia.org, ja.wikipedia.orgから
  • 32. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 Copyright (C) Takeshi Mikami. All rights reserved. 32 scikit-learnによる機械学習 使用するデータセット(iris)の説明をします (目的変数) アヤメの品種 (説明変数) 花びら・がく片の大きさ アヤメの品種種別 データ50件づつ
  • 33. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 Copyright (C) Takeshi Mikami. All rights reserved. 33 scikit-learnによる機械学習 scikit-learnでの決定木を紹介します ライブラリ・データを読み込み 学習させます
  • 34. takemikami’s note – http://takemikami.com/ 分類(classification) 決定木の例 Copyright (C) Takeshi Mikami. All rights reserved. 34 scikit-learnによる機械学習 scikit-learnでの決定木を紹介します 生成した決定木を 描画します
  • 35. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 35 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します やりたいこと: データセットを指定した数のクラスタに分ける • クラスタ数(k)を決める • クラスタの中心点を対象データからランダムにk個決める • 繰り返し • 各データを最も近くにある中心点のクラスタに割り当てる • クラスタ内のデータの平均値を新たなクラスタの中心点にする • クラスタの中心点が変化しなくなったら終了 →次のスライドから、 k-means法で最適なクラスタを探索する流れをイメージで示します。
  • 36. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 36 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタリングを行いたいデータセットを用意する
  • 37. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 37 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します ✓ ✓ クラスタの中心点を対象データからランダムにk個決める(この図では2個)
  • 38. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 38 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中心点のクラスタに割り当てる ✓ ✓
  • 39. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 39 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中心点にする ✓ ✓ ✓ ✓
  • 40. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 40 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中心点のクラスタに割り当てる ✓ ✓ ✓ ✓
  • 41. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 41 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中心点にする ✓ ✓ ✓ ✓ ✓ ✓
  • 42. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 42 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中心点のクラスタに割り当てる ✓ ✓ ✓ ✓ ✓ ✓
  • 43. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 43 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタ内のデータの平均値を新たなクラスタの中心点にする ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
  • 44. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 44 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中心点のクラスタに割り当てる ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
  • 45. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 45 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ クラスタ内のデータの平均値を新たなクラスタの中心点にする →クラスタの中心点が変化しなくなった ⇒ 終了
  • 46. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 46 scikit-learnによる機械学習 k-means法の計算で利用する距離について説明します ユークリッド距離 コサイン距離 式 式 (2変数 の時) 説明 データ間の直線距離 データをベクトルで表現した時の 角度の近さ ※一部の変数の大きさの偏りに影響を受けない d(Xa - Xb ) = (xaj - xbj )2 j=1 r å s(Xa - Xb ) = xaj xbj j=1 r å xaj 2 j=1 r å xbj 2 j=1 r å d(Xa - Xb ) = xa1 - xb1( ) 2 +(xa2 - xb2 )2 s(Xa - Xb ) = xa1xb1 + xa2 xb2 xa1 2 + xa2 2 xb1 2 + xb2 2
  • 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. takemikami’s note – http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 48 scikit-learnによる機械学習 scikit-learnでのk-meansを紹介します クラスタリング結果と 元データのターゲットを表示します
  • 49. takemikami’s note – http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 • 次元削減とは変数の数(データの次元数)を削減すること Copyright (C) Takeshi Mikami. All rights reserved. 49 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 (主成分分析)
  • 50. takemikami’s note – http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 Copyright (C) Takeshi Mikami. All rights reserved. 50 scikit-learnによる機械学習 scikit-learnでのPCA(主成分分析)を紹介します ライブラリ・データを読み込み 学習させます
  • 51. takemikami’s note – http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 Copyright (C) Takeshi Mikami. All rights reserved. 51 scikit-learnによる機械学習 scikit-learnでのPCA(主成分分析)を紹介します 次元削減結果を描画します
  • 52. takemikami’s note – http://takemikami.com/ ニューラルネットワークとは • パーセプトロンとは、視覚と脳の機能をモデル化したもの • 入力信号(x)と重み(w)の乗算の総和に対して、出力信号(y)が決まる Copyright (C) Takeshi Mikami. All rights reserved. 52 TensorFlowによる機械学習 パーセプトロン・ニューラルネットワークについて説明します 𝑥1 𝑥2 𝑦 𝑤1 𝑤2 入力層 出力層 重み →パーセプトロンを多層に重ね、 中間層を多くしたものが ディープニューラルネットワーク 入力層 中間層 出力層
  • 53. takemikami’s note – http://takemikami.com/ TensorFlowとは • DistBeliefというGoogleのサービスに使われている社内ツールを OpenSourceにしたもの • ニューラルネットワーク/ディープニューラルネットが実装できる • TensorBoardによってモデル・学習状況等を可視化できる • データフローグラフによって、 自由度の高いネットワークを記載できる • 画像処理の関数も用意されている Copyright (C) Takeshi Mikami. All rights reserved. 53 TensorFlowによる機械学習 TensorFlowの紹介をします オープンソースの機械学習ライブラリ →画像のクラス分類などに利用できる (チュートリアルがそれ)
  • 54. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 54 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します • MNISTデータセットは画像処理の機械学習の例でよく使われるデータ • 手書きで書かれた数字を畳み込みニューラルネットを使って分類 目的変数:数字(0〜9) 説明変数:手書きの画像データ ↓ ↓ ↓ ↓ 5 0 4 1
  • 55. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 55 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します ※ CNN = Convolutional Neural Network (畳み込みニューラルネット) ライブラリの読み込みと パラメータの設定 ※ここでは手短にコードを書くため、 kerasという、tensorflow上で動作する 高水準ニューラルネットライブラリを使用しています。
  • 56. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 56 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します テストデータの準備
  • 57. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 57 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します ニューラルネットワークの作成
  • 58. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 58 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します 学習の実行
  • 59. takemikami’s note – http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 59 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します TensorBoardでの可視化 ネットワークの可視化 学習の進行と 精度の変化
  • 60. takemikami’s note – http://takemikami.com/ レコメンドアルゴリズムの基礎 レコメンドとは レコメンドの手法 協調フィルタリングのアルゴリズム ユーザベース、アイテムベース、ALS(交互最小二乗法) Copyright (C) Takeshi Mikami. All rights reserved. 60
  • 61. takemikami’s note – http://takemikami.com/ レコメンドエンジンとは • レコメンドエンジンとは Copyright (C) Takeshi Mikami. All rights reserved. 61 レコメンドとは レコメンドエンジンの説明、パーソナライズについて示します 「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」 Amazon Googleニュース 閲覧中の本を買った人が、 買ったことがある本 地域に合わせたニュース ユーザ属性や行動に あわせたニュース
  • 62. takemikami’s note – http://takemikami.com/ レコメンドの手法:パーソナライズ Copyright (C) Takeshi Mikami. All rights reserved. 62 レコメンドとは レコメンドの手法「パーソナライズ」について説明します パーソナライズ 非パーソナライズ 説明 ユーザの特徴にもとづいた推薦 →ユーザ毎に推薦されるアイテムが異なる 万人に向けたおすすめ →全ユーザに同じアイテムが推薦される アルゴ リズム 協調フィルタリング 内容ベース型フィルタリング 閲覧履歴 etc ベストセラー 新着 販売店担当者のおすすめ etc レコメンドというとパーソナライズを指すことが多いが、 ユーザ属性不明の場合などに対応する為、非パーソナライズの手法も組み合わせる。
  • 63. takemikami’s note – http://takemikami.com/ レコメンドの手法:協調型・内容ベース型 Copyright (C) Takeshi Mikami. All rights reserved. 63 レコメンドとは レコメンドの手法「協調型」と「内容ベース型」の違いについて説明します 協調型 (collaborative filtering) 内容ベース型 (content based filtering) 説明 他のユーザの嗜好行動を元に、 対象ユーザへのアイテムを推薦 アイテムの特徴・説明と、 ユーザの特徴・行動を用いて推薦 イメージ 他のユーザの嗜好から、 対象ユーザへアイテムを推薦 アイテム・ユーザの特徴を用いて推薦 課題 ある程度の量の他のユーザのデータが必要 新規アイテム・ユーザに適切な推薦ができない アイテムの特徴データのメンテナンスが必要 →各手法に課題があるため、これらを組み合わせたハイブリッドアプローチをとることも多い。 コールドスタート問題 ・ ・ ・ ○ × × × × ○ ○ ○ ? 特徴A 特徴B 特徴C 特徴A’
  • 64. takemikami’s note – http://takemikami.com/ レコメンドの手法:リアルタイム・バッチ処理 Copyright (C) Takeshi Mikami. All rights reserved. 64 レコメンドとは レコメンドの手法「リアルタイム」「バッチ処理」について説明します バッチ処理 リアルタイム 説明 ユーザ・アイテムの特徴・行動を元に、 事前に推薦アイテムのリストを作成しておく ユーザの行動を元にして、 リアルタイムにアイテムを推薦する 適用例 パーソナライズおすすめアイテムメール マイページでのおすすめアイテム掲出 etc はじめて訪問したユーザへのおすすめアイテム 掲出 etc 特徴A 特徴B 特徴C 特徴収集 特徴A’ 推 薦 事前に処理 インタラクション 特徴A 特徴B 特徴C 特徴A’
  • 65. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 65 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージを示します やりたいこと: 「ユーザ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(最も好む)
  • 66. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き • 対象ユーザ以外のユーザに対して、 対象ユーザとの類似度を求める • 類似するユーザを選ぶ • 類似ユーザの対象アイテムの評価から、加重平均を算出 Copyright (C) Takeshi Mikami. All rights reserved. 66 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングを行う手続きを示します →次のスライドから、 ユーザベースの協調フィルタリングで予測を行う流れをイメージで示します。
  • 67. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ1 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 アイテムA〜Dの評価値を使って、 対象ユーザとの類似度を計算 ※ここでは、ピアソンの相関係数(Pearson correlation coefficient)を使って類似度を計算しています。
  • 68. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ2 Copyright (C) Takeshi Mikami. All rights reserved. 68 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージ アイテム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 類似度をみて、 類似するユーザを選ぶ
  • 69. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ユーザベース)の手続き 〜イメージ3 Copyright (C) Takeshi Mikami. All rights reserved. 69 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングのイメージ アイテム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の評価を予測
  • 70. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 70 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージを示します やりたいこと: 「旅行者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 行く可能性が高い 旅先を予測 旅行回数
  • 71. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き • 対象ユーザ以外のユーザの評価値から、 各アイテム間の類似度を求め、類似度行列を算出する • 対象ユーザの評価値と類似度行列の積を求める Copyright (C) Takeshi Mikami. All rights reserved. 71 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングを行う手続きを示します →次のスライドから、 アイテムベースの協調フィルタリングで予測を行う流れをイメージで示します。
  • 72. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き 〜イメージ1 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 旅行者1〜5の旅行回数を使って、 台北との類似度を計算 ※ここでは、コサイン類似度(cosine similarity)を使って類似度を計算しています。
  • 73. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き 〜イメージ2 Copyright (C) Takeshi Mikami. All rights reserved. 73 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 対象ユーザ 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 類似度行列が出来る 同様に、 バンコク,ホノルル,グァムについても計算
  • 74. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)の手続き 〜イメージ3 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. takemikami’s note – http://takemikami.com/ 協調フィルタリング(アイテムベース)のメリット Copyright (C) Takeshi Mikami. All rights reserved. 75 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングのイメージ 台北 バンコク ホノルル グァム 台北 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 アイテム間の「類似度行列」は、 事前にバッチで作成が可能 新たなユーザに対しても、 類似度行列の再作成なしに、レコメンドが可能
  • 76. takemikami’s note – http://takemikami.com/ 類似度の計算 Copyright (C) Takeshi Mikami. All rights reserved. 76 協調フィルタリングのアルゴリズム 協調フィルタリングの手続きで用いた類似度について説明します ピアソンの相関係数 コサイン類似度 式 説明 ユーザベース向きの尺度 アイテムベース向きの尺度 データをベクトルで表現した時の角度の近さ ※一部の変数の大きさの偏りに影響を受けな い X: 評価値行列 ρ: 要素数 Xa, Xb: 類似度の比較対象
  • 77. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)のイメージ Copyright (C) Takeshi Mikami. All rights reserved. 77 協調フィルタリングのアルゴリズム 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 (交互最小二乗法)
  • 78. takemikami’s note – http://takemikami.com/ 最小二乗法について 〜ALS(『交互』最小二乗法)の前に • 最小二乗法とは 「残差の二乗和が最小になる係数を決定する手法」 Copyright (C) Takeshi Mikami. All rights reserved. 78 協調フィルタリングのアルゴリズム 最小二乗法について説明します 線形回帰の例 標本回帰直線からの残差の二乗和 これを最小にする、a,bを求める
  • 79. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き • 特徴量の数を決める • アイテムの特徴量行列を初期化する • 収束するまで以下を繰り返す • 評価値行列・アイテムの特徴量行列から、 ユーザの特徴量を最小自乗法で計算 • 評価値行列・ユーザの特徴量行列から、 アイテムの特徴量を最小自乗法で計算 Copyright (C) Takeshi Mikami. All rights reserved. 79 協調フィルタリングのアルゴリズム ALS (交互最小二乗法)による協調フィルタリングの手続きを示します →次のスライドから、 ALS(交互最小二乗法)による協調フィルタリングの流れをイメージで示します。
  • 80. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き 〜イメージ1 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. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き 〜イメージ2 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 評価値行列 アイテムの 特徴量行列 ユーザの特徴量行列 アイテム毎の評価値の平均を算出 十分に小さい値で乱数をふる
  • 82. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き 〜イメージ3 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 評価値行列 アイテムの特徴量行列ユーザの特徴量行列 =× 線形回帰の例で「a,b」にあたる 線形回帰の例で「x」にあたる 線形回帰の例で「y」にあたる 以下の誤差が最小になるようにユーザの特徴量を計算 ・「ユーザの特徴量行列」と「アイテムの特徴量」の積 ・「評価値行列」
  • 83. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き 〜イメージ4 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 評価値行列 アイテムの特徴量行列ユーザの特徴量行列 =× 線形回帰の例で「x」にあたる 線形回帰の例で「a,b」にあたる 線形回帰の例で「y」にあたる 以下の誤差が最小になるようにユーザの特徴量を計算 ・「ユーザの特徴量行列」と「アイテムの特徴量」の積 ・「評価値行列」
  • 84. takemikami’s note – http://takemikami.com/ 協調フィルタリング(ALS)の手続き 〜イメージ5 Copyright (C) Takeshi Mikami. All rights reserved. 84 協調フィルタリングのアルゴリズム ALS(交互最小二乗法)による協調フィルタリングのイメージ A B C D E 1 2 3 4 A B C D E 1 2 3 4 評価値行列 アイテムの特徴量行列ユーザの特徴量行列 =× 誤差が収束するまで、 これらの特徴量の再計算を繰り返す 誤差が収束するまで、 これらの特徴量の再計算を繰り返す
  • 85. takemikami’s note – http://takemikami.com/ レコメンドの周辺知識と実装方法 システム構成と周辺知識 ライブラリを用いた協調フィルタリングの実装 協調フィルタリングの応用例 Copyright (C) Takeshi Mikami. All rights reserved. 85
  • 86. takemikami’s note – http://takemikami.com/ マーケティングデータ分析と機械学習 Copyright (C) Takeshi Mikami. All rights reserved. 86 システム構成と周辺知識 マーケティングデータ分析における、機械学習の位置づけを示します 顧客との チャネル データ分析 顧客 社会・ 業界 リアル広告 イベント ・・・ Data Warehouse SNS 収集施策 実店舗 収 集 DataMart Web広告ECサイト BIツール 機械学習 加工マーケター データサイエンティスト 施策の検討・意思決定を機械学習で支援
  • 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. takemikami’s note – http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 88 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 行動 ログ 行動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度行列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch) ユーザの行動を収集し 学習する流れ
  • 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) リアルタイムに ユーザの行動を収集する流れ ユーザの行動を応じた レコメンド情報を表出する流れ ユーザの行動は Key-Value Store でユーザ単位に管理 アイテムベースでのレコメンド
  • 90. takemikami’s note – http://takemikami.com/ レコメンドシステムの構成例 Copyright (C) Takeshi Mikami. All rights reserved. 90 システム構成と周辺知識 レコメンドシステムの構成例を紹介します Webサイト 販売系 システム backend db datalake recommendDB user interaction DB アイテム 情報 売上 情報 行動 ログ 行動ログ データ収集 サーバ ログ収集 サーバ アイテム情報 ランキング情報 類似度行列 アイテム情報 レコメンド サーバ (online) アイテム 類似度計算 ログ・売上 集計 ユーザ情報 レコメンド サーバ (batch) バッチ処理での レコメンド情報表出の流れ (メール配信など) ユーザベースでのレコメンド
  • 91. takemikami’s note – http://takemikami.com/ Apache Hadoopとは • 「データ保存のための分散ファイルシステム」 「データ処理のための並列処理システム」 によってビッグデータの分散処理を実現する • 4つのモジュールで構成される • 共通ユーティリティ (Hadoop Common) • 分散ファイルシステム (Hadoop HDFS) • クラスタリソース・ジョブ管理 (Hadoop YARN) • 並列データ処理システム (Hadoop MapReduce) Copyright (C) Takeshi Mikami. All rights reserved. 91 システム構成と周辺知識 Apache Hadoopの紹介をします ビッグデータ分散処理のフレームワーク レコメンドでは、 たくさんのデータ(ユーザ×アイテム)を扱うため ビッグデータ処理を考える必要がある
  • 92. takemikami’s note – http://takemikami.com/ Hadoop Clusterの全体像 • Hadoop Clusterは『分散ファイルシステム』『並列処理システム』の組 み合わせ構造になる Copyright (C) Takeshi Mikami. All rights reserved. 92 システム構成と周辺知識 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上で処理を実施できるので効率が良い。 (処理対象データを取得するための通信が不要)
  • 93. 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. 93 システム構成と周辺知識 Apache Sparkの紹介をします 高速な並列データ処理システム
  • 94. takemikami’s note – http://takemikami.com/ Apache Hadoop上でのSpark Copyright (C) Takeshi Mikami. All rights reserved. 94 システム構成と周辺知識 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によって実行することが出来る
  • 95. takemikami’s note – http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 95 ライブラリを用いた協調フィルタリングの実装 使用するデータセット(MovieLens)の説明をします • 使用するMovieLensデータは、協調フィルタリングの例でよく使われる データセット 以下の対応が入っている ・ユーザID (userId) ・映画ID (movieId) ・評価 (rating)
  • 96. takemikami’s note – http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 96 ライブラリを用いた協調フィルタリングの実装 Spark MLlibでのALSを紹介します 学習 検証 データ準備 ライブラリ読込
  • 97. takemikami’s note – http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 97 ライブラリを用いた協調フィルタリングの実装 Spark MLlibでのALSを紹介します 検証データ 予測データ
  • 98. takemikami’s note – http://takemikami.com/ 協調フィルタリングの応用例 アイテムベースの組み合わせ • 海外旅行航空券の推薦 • 目的地と出発空港を組み合わせたアイテムベースの協調フィルタリング • 手続き • 事前に、過去のユーザの渡航履歴から以下を算出 • 出発空港利用履歴の類似度行列 • 目的地利用履歴の類似度行列 • サイトに訪問したユーザの出発空港利用履歴と目的地利用履歴を取得 • 以下を計算 • 出発空港利用履歴と出発空港利用履歴の類似度行列の積 • 目的地利用履歴と目的地利用履歴の類似度行列の積 • スコアの高い目的地順に並べ、 その目的地に対してスコアが最も高い出発空港を紐付け、 さらに最も価格が安い航空券の情報を推薦 Copyright (C) Takeshi Mikami. All rights reserved. 98 協調フィルタリングの応用例 協調フィルタリングの応用例を示します →アイテムではなく「属性」の類似度行列を作ることで、 類似度行列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
  • 99. takemikami’s note – http://takemikami.com/ 協調フィルタリングの応用例 メルマガタイトルの最適化 • メルマガタイトルの最適化 • メルマガ内に掲載されているアイテムの中で もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む • 手続き • 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く • 協調フィルタリングで、 メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出 • 推薦スコアがトップの商品名をメルマガタイトルに差し込む Copyright (C) Takeshi Mikami. All rights reserved. 99 協調フィルタリングの応用例 協調フィルタリングの応用例を示します →ライターが作成したコンテンツの見やすさ・わかりやすさなどを生かしたまま、 パーソナライズによって、よりユーザの関心を引く方法の例 ※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が見込める
  • 100. takemikami’s note – http://takemikami.com/ レコメンドの適用で気をつけたいこと • レコメンド導入の目的・評価指標を決めておく • 単純に売上増などを目的にすると、サイトの特性によっては成果が出にくい その場合、売れ筋商品のランキングに反応しなかったユーザが反応したか等を評 価するようにする ※売れ筋に反応しないユーザに対する処置を行っていなかったサイトは、売れ筋 に反応する顧客しか来なくなっている可能性が高いので、成果が出るまでに時間 がかかる • モデルを破壊するユーザに気をつける • 社内でのテストバイ、業者の大量購入などに引きずられて相関が崩れることがあ るので学習対象から除いておく • 他の手法も検討する • 顧客の分類(classification)によるパーソナライズで要件を満たせることも多い Copyright (C) Takeshi Mikami. All rights reserved. 100 協調フィルタリングの応用例 レコメンドの適用で気をつけたいことを紹介します
  • 101. takemikami’s note – http://takemikami.com/ 付録 環境構築の方法 参考文献リスト Copyright (C) Takeshi Mikami. All rights reserved. 101
  • 102. takemikami’s note – http://takemikami.com/ 環境構築の方法 • scikit-learn/tensorflowの環境構築 • Anacondaをインストールします (pyenvを利用している場合) • 決定木のサンプルを動かす場合はgraphviz, pydotplusをインストール (homebrewを利用している場合) • TensorFlowのサンプルを動かす場合はtensorflow, kerasをインストール Copyright (C) Takeshi Mikami. All rights reserved. 102 付録 本資料の内容を実行するための環境構築について説明します $ 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
  • 103. takemikami’s note – http://takemikami.com/ 環境構築の方法 • ApacheSpark/MLlibの環境構築 ※python環境は前提です • ApacheSparkをインストールします (homebrewを利用している場合) Copyright (C) Takeshi Mikami. All rights reserved. 103 付録 本資料の内容を実行するための環境構築について説明します $ brew install apache-spark
  • 104. takemikami’s note – http://takemikami.com/ 環境構築の方法 • jupyter notebookの起動 • tensorboardの起動 • pysparkの起動 Copyright (C) Takeshi Mikami. All rights reserved. 104 付録 本資料の内容を実行するための環境構築について説明します $ jupyter notebook $ tensorboard $ pyspark →http://localhost:8888/ でアクセス →http://localhost:6006/ でアクセス
  • 105. 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. 105 付録 本資料作成にあたって参考にした文献リストです
  • 106. 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. 106 付録 本資料作成にあたって参考にしたWebサイトリストです

Editor's Notes

  1. そんなエージェントゲートを設立した 緑川大介の紹介をさせて頂きます。