SlideShare ist ein Scribd-Unternehmen logo
1 von 105
Downloaden Sie, um offline zu lesen
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
機械学習 レコメンド
takemikamiʼs note ‒ http://takemikami.com/
はじめに
• 対象: 機械学習未経験のエンジニア
• テーマ:レコメンドアルゴリズムとその応⽤
• 内容
• Pythonを使った機械学習の紹介
• レコメンドアルゴリズムの基礎
• レコメンドの周辺知識と実装⽅法
Copyright (C) Takeshi Mikami. All rights reserved. 2
本⽇の勉強会でお話しする内容について説明します
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
発表者のプロフィールを紹介します
takemikamiʼs note ‒ http://takemikami.com/
機械学習を応⽤するためのスキル
Copyright (C) Takeshi Mikami. All rights reserved. 4
※丸⼭宏・⼭⽥敦・神⾕直樹共著「データサイエンティスト・ハンドブック」(近代科学社)を参考に作成
ビジネス⼒
(business problem solving)
データエンジニアリング⼒
(data engineering)
データサイエンス⼒
(data science)
ビジネス課題を
理解・解決するスキル
統計・機械学習等の情報科学を
理解・活⽤するスキル
データの加⼯・運⽤環境
を実装するスキル
機械学習を応⽤するために必要なスキルを紹介します
データサイエンティスト
に求められるスキルとして
よく⽰されるものです
takemikamiʼs note ‒ http://takemikami.com/
ビジネス⼒とは
• ビジネス課題を整理する
「このデータ分析によって解きたいビジネス課題は何か」を考える
→課題を明確にしておかないと成果に結びつかない
• ビジネス課題を説明する
レポーティングやプレゼンスキル
→意思決定者が理解出来ないと実⾏できない
Copyright (C) Takeshi Mikami. All rights reserved. 5
機械学習を応⽤するためのビジネス⼒について説明します
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
ビジネス⼒
(business problem solving)
データエンジニアリング⼒
(data engineering)
データサイエンス⼒
(data science)
データサイエンス・エンジニアリング
を中⼼にお話しします
機械学習を応⽤するためのスキルの中で、本⽇お話する分野を⽰します
takemikamiʼs note ‒ http://takemikami.com/
Pythonを使った機械学習の紹介
scikit-learnによる機械学習
回帰、分類、クラスタリング、次元削減
TensorFlowによる機械学習
画像のクラス分類
Copyright (C) Takeshi Mikami. All rights reserved. 9
takemikamiʼs note ‒ http://takemikami.com/
データ分析のアプローチ
• データ分析のアプーチは以下の3つに分類できる
Copyright (C) Takeshi Mikami. All rights reserved. 10
scikit-learnによる機械学習
アプローチ 説明 例 ⼿法
説明的データ分析
(descriptive)
事実を説明する・⾒
つける
・どんな⼈が何を買っているか?
・ある広告がどれだけ売上に貢献して
いるか?
BI、クラスタリン
グ、アソシエー
ション分析
予測的データ分析
(predictive)
(未来や⽋測値を)予
測する
・ある商品群を閲覧した⼈の性別は?
・広告を出稿したら、どれだけ売上が
上がるか?
分類・回帰、統計
的機械学習
指⽰的データ分析
(prescriptive)
最適解を探す ・利益を最⼤化するための、最適な仕
⼊れ量は?
・売上を最⼤化するには、どこに広告
を出稿すべきか?
最適化、実験計画
→ 実施したい「分析のアプローチ」が何かを認識し、適切な「⼿法」を適⽤する
3つのデータ分析のアプローチを紹介します
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)という⼿法もあります
代表的な機械学習の⼿法を紹介します
takemikamiʼs note ‒ http://takemikami.com/
クラスタリング(clustering)と分類(classification)
Copyright (C) Takeshi Mikami. All rights reserved. 12
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. 13
scikit-learnによる機械学習
scikit-learnで試しながら
それぞれの⼿法を紹介していきます
Pythonのオープンソースの機械学習ライブラリ
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
アルゴリズム選択
のチャート図
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の処理結果
(分析の結果)
takemikamiʼs note ‒ http://takemikami.com/
教師あり学習の基本
Copyright (C) Takeshi Mikami. All rights reserved. 16
scikit-learnによる機械学習
教師あり学習の基本的な考え⽅を説明します
やりたいこと:
「xの値」が与えられた時に「yの値」を予測したい
→ 𝑦 = 𝑓 𝑥 という関数を求めたい
𝑦 = 𝑓(𝑥)
⽬的変数 説明変数
予測モデル⽬的変数が離散値→分類
⽬的変数が連続値→回帰
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)
takemikamiʼs note ‒ http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
• 最⼩⼆乗法とは
「残差の⼆乗和が最⼩になる係数を決定する⼿法」
Copyright (C) Takeshi Mikami. All rights reserved. 18
scikit-learnによる機械学習
線形回帰分析を例に分類のアルゴリズムを紹介します
線形回帰の例
標本回帰直線からの残差の⼆乗和
これを最⼩にする、a,bを求める
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による機械学習
線形回帰分析を例に分類のアルゴリズムを紹介します
takemikamiʼs note ‒ http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 20
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
ライブラリ・データを読み込みます
takemikamiʼs note ‒ http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 21
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
データを描画してみます
x: 説明変数
y: ⽬的変数
takemikamiʼs note ‒ http://takemikami.com/
回帰(regression) 線形回帰による回帰の例
Copyright (C) Takeshi Mikami. All rights reserved. 22
scikit-learnによる機械学習
scikit-learnでの線形回帰分析を紹介します
学習・検証データに分割し
学習させます
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/
分類(classification) 決定⽊の例
Copyright (C) Takeshi Mikami. All rights reserved. 24
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. 25
scikit-learnによる機械学習
決定⽊を例に分類のアルゴリズムを紹介します
t:ノード数 i:クラス p:⽐率
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
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
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
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ノード以降も求めていく
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から
takemikamiʼs note ‒ http://takemikami.com/
分類(classification) 決定⽊の例
Copyright (C) Takeshi Mikami. All rights reserved. 31
scikit-learnによる機械学習
使⽤するデータセット(iris)の説明をします
(⽬的変数)
アヤメの品種
(説明変数)
花びら・がく⽚の⼤きさ
アヤメの品種種別
データ50件づつ
takemikamiʼs note ‒ http://takemikami.com/
分類(classification) 決定⽊の例
Copyright (C) Takeshi Mikami. All rights reserved. 32
scikit-learnによる機械学習
scikit-learnでの決定⽊を紹介します
ライブラリ・データを読み込み
学習させます
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/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 34
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
やりたいこと: データセットを指定した数のクラスタに分ける
• クラスタ数(k)を決める
• クラスタの中⼼点を対象データからランダムにk個決める
• 繰り返し
• 各データを最も近くにある中⼼点のクラスタに割り当てる
• クラスタ内のデータの平均値を新たなクラスタの中⼼点にする
• クラスタの中⼼点が変化しなくなったら終了
→次のスライドから、
k-means法で最適なクラスタを探索する流れをイメージで⽰します。
takemikamiʼs note ‒ http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 35
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
クラスタリングを⾏いたいデータセットを⽤意する
takemikamiʼs note ‒ http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 36
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
✓
✓
クラスタの中⼼点を対象データからランダムにk個決める(この図では2個)
takemikamiʼs note ‒ http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 37
scikit-learnによる機械学習
k-meansを例にクラスタリングのアルゴリズムを紹介します
各データを最も近くにある中⼼点のクラスタに割り当てる
✓
✓
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法の計算で利⽤する距離について説明します
ユークリッド距離 コサイン距離
式
式
(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
takemikamiʼs note ‒ http://takemikami.com/
クラスタリング(clustering) k-meansの例
Copyright (C) Takeshi Mikami. All rights reserved. 46
scikit-learnによる機械学習
scikit-learnでのk-meansを紹介します
ライブラリ・データを読み込み
学習させます
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/
次元削減(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 (主成分分析)
takemikamiʼs note ‒ http://takemikami.com/
次元削減(dimensionality reduction) PCAの例
Copyright (C) Takeshi Mikami. All rights reserved. 49
scikit-learnによる機械学習
scikit-learnでのPCA(主成分分析)を紹介します
ライブラリ・データを読み込み
学習させます
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/
ニューラルネットワークとは
• パーセプトロンとは、視覚と脳の機能をモデル化したもの
• ⼊⼒信号(x)と重み(w)の乗算の総和に対して、出⼒信号(y)が決まる
Copyright (C) Takeshi Mikami. All rights reserved. 51
TensorFlowによる機械学習
パーセプトロン・ニューラルネットワークについて説明します
𝑥0
𝑥-
𝑦
𝑤0
𝑤-
⼊⼒層 出⼒層
重み
→パーセプトロンを多層に重ね、
中間層を多くしたものが
ディープニューラルネットワーク
⼊⼒層 中間層 出⼒層
takemikamiʼs note ‒ http://takemikami.com/
TensorFlowとは
• DistBeliefというGoogleのサービスに使われている社内ツールを
OpenSourceにしたもの
• ニューラルネットワーク/ディープニューラルネットが実装できる
• TensorBoardによってモデル・学習状況等を可視化できる
• データフローグラフによって、
⾃由度の⾼いネットワークを記載できる
• 画像処理の関数も⽤意されている
Copyright (C) Takeshi Mikami. All rights reserved. 52
TensorFlowによる機械学習
TensorFlowの紹介をします
オープンソースの機械学習ライブラリ
→画像のクラス分類などに利⽤できる (チュートリアルがそれ)
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
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上で動作する
⾼⽔準ニューラルネットライブラリを使⽤しています。
takemikamiʼs note ‒ http://takemikami.com/
ニューラルネットワーク CNNの例
Copyright (C) Takeshi Mikami. All rights reserved. 55
TensorFlowによる機械学習
tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します
テストデータの準備
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(畳み込みニューラルネット)を紹介します
TensorBoardでの可視化
ネットワークの可視化
学習の進⾏と
精度の変化
takemikamiʼs note ‒ http://takemikami.com/
レコメンドアルゴリズムの基礎
レコメンドとは
レコメンドの⼿法
協調フィルタリングのアルゴリズム
ユーザベース、アイテムベース、ALS(交互最⼩⼆乗法)
Copyright (C) Takeshi Mikami. All rights reserved. 59
takemikamiʼs note ‒ http://takemikami.com/
レコメンドエンジンとは
• レコメンドエンジンとは
Copyright (C) Takeshi Mikami. All rights reserved. 60
レコメンドとは
レコメンドエンジンの説明、パーソナライズについて⽰します
「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」
Amazon Googleニュース
閲覧中の本を買った⼈が、
買ったことがある本
地域に合わせたニュース
ユーザ属性や⾏動に
あわせたニュース
takemikamiʼs note ‒ http://takemikami.com/
レコメンドの⼿法:パーソナライズ
Copyright (C) Takeshi Mikami. All rights reserved. 61
レコメンドとは
レコメンドの⼿法「パーソナライズ」について説明します
パーソナライズ ⾮パーソナライズ
説明 ユーザの特徴にもとづいた推薦
→ユーザ毎に推薦されるアイテムが異なる
万⼈に向けたおすすめ
→全ユーザに同じアイテムが推薦される
アルゴ
リズム
協調フィルタリング
内容ベース型フィルタリング
閲覧履歴 etc
ベストセラー
新着
販売店担当者のおすすめ etc
レコメンドというとパーソナライズを指すことが多いが、
ユーザ属性不明の場合などに対応する為、⾮パーソナライズの⼿法も組み合わせる。
takemikamiʼs note ‒ http://takemikami.com/
レコメンドの⼿法:協調型・内容ベース型
Copyright (C) Takeshi Mikami. All rights reserved. 62
レコメンドとは
レコメンドの⼿法「協調型」と「内容ベース型」の違いについて説明します
協調型 (collaborative filtering) 内容ベース型 (content based filtering)
説明 他のユーザの嗜好⾏動を元に、
対象ユーザへのアイテムを推薦
アイテムの特徴・説明と、
ユーザの特徴・⾏動を⽤いて推薦
イメージ
他のユーザの嗜好から、
対象ユーザへアイテムを推薦
アイテム・ユーザの特徴を⽤いて推薦
課題 ある程度の量の他のユーザのデータが必要
新規アイテム・ユーザに適切な推薦ができない
アイテムの特徴データのメンテナンスが必要
→各⼿法に課題があるため、これらを組み合わせたハイブリッドアプローチをとることも多い。
コールドスタート問題
・
・
・
○
×
×
×
×
○
○
○ ?
特徴A
特徴B
特徴C
特徴Aʼ
takemikamiʼs note ‒ http://takemikami.com/
レコメンドの⼿法:リアルタイム・バッチ処理
Copyright (C) Takeshi Mikami. All rights reserved. 63
レコメンドとは
レコメンドの⼿法「リアルタイム」「バッチ処理」について説明します
バッチ処理 リアルタイム
説明 ユーザ・アイテムの特徴・⾏動を元に、
事前に推薦アイテムのリストを作成しておく
ユーザの⾏動を元にして、
リアルタイムにアイテムを推薦する
適⽤例 パーソナライズおすすめアイテムメール
マイページでのおすすめアイテム掲出 etc
はじめて訪問したユーザへのおすすめアイテム
掲出 etc
特徴A
特徴B
特徴C
特徴収集
特徴Aʼ
推
薦
事前に処理
インタラクション
特徴A
特徴B
特徴C
特徴Aʼ
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(最も好む)
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング(ユーザベース)の⼿続き
• 対象ユーザ以外のユーザに対して、
対象ユーザとの類似度を求める
• 類似するユーザを選ぶ
• 類似ユーザの対象アイテムの評価から、加重平均を算出
Copyright (C) Takeshi Mikami. All rights reserved. 65
協調フィルタリングのアルゴリズム
ユーザベースの協調フィルタリングを⾏う⼿続きを⽰します
→次のスライドから、
ユーザベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
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)を使って類似度を計算しています。
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
類似度をみて、
類似するユーザを選ぶ
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の評価を予測
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
⾏く可能性が⾼い
旅先を予測
旅⾏回数
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング(アイテムベース)の⼿続き
• 対象ユーザ以外のユーザの評価値から、
各アイテム間の類似度を求め、類似度⾏列を算出する
• 対象ユーザの評価値と類似度⾏列の積を求める
Copyright (C) Takeshi Mikami. All rights reserved. 70
協調フィルタリングのアルゴリズム
アイテムベースの協調フィルタリングを⾏う⼿続きを⽰します
→次のスライドから、
アイテムベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
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)を使って類似度を計算しています。
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
類似度⾏列が出来る
同様に、
バンコク,ホノルル,グァムについても計算
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
「対象ユーザの旅先訪問回数」
「類似度⾏列」の積
訪問したことがあるバンコクを除くと、
台北を旅先に選ぶ可能性が⾼い
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
アイテム間の「類似度⾏列」は、
事前にバッチで作成が可能
新たなユーザに対しても、
類似度⾏列の再作成なしに、レコメンドが可能
takemikamiʼs note ‒ http://takemikami.com/
類似度の計算
Copyright (C) Takeshi Mikami. All rights reserved. 75
協調フィルタリングのアルゴリズム
協調フィルタリングの⼿続きで⽤いた類似度について説明します
ピアソンの相関係数 コサイン類似度
式
説明 ユーザベース向きの尺度 アイテムベース向きの尺度
データをベクトルで表現した時の⾓度の近さ
※⼀部の変数の⼤きさの偏りに影響を受けな
い
X: 評価値⾏列
ρ: 要素数
Xa, Xb: 類似度の⽐較対象
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 (交互最⼩⼆乗法)
takemikamiʼs note ‒ http://takemikami.com/
最⼩⼆乗法について 〜ALS(『交互』最⼩⼆乗法)の前に
• 最⼩⼆乗法とは
「残差の⼆乗和が最⼩になる係数を決定する⼿法」
Copyright (C) Takeshi Mikami. All rights reserved. 77
協調フィルタリングのアルゴリズム
最⼩⼆乗法について説明します
線形回帰の例
標本回帰直線からの残差の⼆乗和
これを最⼩にする、a,bを求める
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング(ALS)の⼿続き
• 特徴量の数を決める
• アイテムの特徴量⾏列を初期化する
• 収束するまで以下を繰り返す
• 評価値⾏列・アイテムの特徴量⾏列から、
ユーザの特徴量を最⼩⾃乗法で計算
• 評価値⾏列・ユーザの特徴量⾏列から、
アイテムの特徴量を最⼩⾃乗法で計算
Copyright (C) Takeshi Mikami. All rights reserved. 78
協調フィルタリングのアルゴリズム
ALS (交互最⼩⼆乗法)による協調フィルタリングの⼿続きを⽰します
→次のスライドから、
ALS(交互最⼩⼆乗法)による協調フィルタリングの流れをイメージで⽰します。
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
評価値⾏列
列数
特徴量の数を決める
アイテムの
特徴量⾏列
⾏数
ユーザの特徴量⾏列
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
評価値⾏列
アイテムの
特徴量⾏列
ユーザの特徴量⾏列
アイテム毎の評価値の平均を算出
⼗分に⼩さい値で乱数をふる
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」にあたる
以下の誤差が最⼩になるようにユーザの特徴量を計算
・「ユーザの特徴量⾏列」と「アイテムの特徴量」の積
・「評価値⾏列」
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」にあたる
以下の誤差が最⼩になるようにユーザの特徴量を計算
・「ユーザの特徴量⾏列」と「アイテムの特徴量」の積
・「評価値⾏列」
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
評価値⾏列
アイテムの特徴量⾏列ユーザの特徴量⾏列
=×
誤差が収束するまで、
これらの特徴量の再計算を繰り返す
誤差が収束するまで、
これらの特徴量の再計算を繰り返す
takemikamiʼs note ‒ http://takemikami.com/
レコメンドの周辺知識と実装⽅法
システム構成と周辺知識
ライブラリを⽤いた協調フィルタリングの実装
協調フィルタリングの応⽤例
Copyright (C) Takeshi Mikami. All rights reserved. 84
takemikamiʼs note ‒ http://takemikami.com/
マーケティングデータ分析と機械学習
Copyright (C) Takeshi Mikami. All rights reserved. 85
システム構成と周辺知識
マーケティングデータ分析における、機械学習の位置づけを⽰します
顧客との
チャネル
データ分析
顧客
社会・
業界
リアル広告 イベント
・・・
Data Warehouse
SNS
収集施策
実店舗
収
集
DataMart
Web広告ECサイト
BIツール
機械学習
加⼯マーケター
データサイエンティスト
施策の検討・意思決定を機械学習で⽀援
takemikamiʼs note ‒ http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 86
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
Webサイト
販売系
システム
backend db
datalake
recommendDB
user interaction DB
アイテム
情報
売上
情報
⾏動
ログ
⾏動ログ
データ収集
サーバ
ログ収集
サーバ
アイテム情報
ランキング情報
類似度⾏列
アイテム情報
レコメンド
サーバ
(online)
アイテム
類似度計算
ログ・売上
集計
ユーザ情報
レコメンド
サーバ
(batch)
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)
リアルタイムに
ユーザの⾏動を収集する流れ
ユーザの⾏動を応じた
レコメンド情報を表出する流れ
ユーザの⾏動は
Key-Value Store
でユーザ単位に管理
アイテムベースでのレコメンド
takemikamiʼs note ‒ http://takemikami.com/
レコメンドシステムの構成例
Copyright (C) Takeshi Mikami. All rights reserved. 89
システム構成と周辺知識
レコメンドシステムの構成例を紹介します
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. 90
システム構成と周辺知識
Apache Hadoopの紹介をします
ビッグデータ分散処理のフレームワーク
レコメンドでは、
たくさんのデータ(ユーザ×アイテム)を扱うため
ビッグデータ処理を考える必要がある
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上で処理を実施できるので効率が良い。
(処理対象データを取得するための通信が不要)
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の紹介をします
⾼速な並列データ処理システム
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によって実⾏することが出来る
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 94
ライブラリを⽤いた協調フィルタリングの実装
使⽤するデータセット(MovieLens)の説明をします
• 使⽤するMovieLensデータは、協調フィルタリングの例でよく使われる
データセット
以下の対応が⼊っている
・ユーザID (userId)
・映画ID (movieId)
・評価 (rating)
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 95
ライブラリを⽤いた協調フィルタリングの実装
Spark MLlibでのALSを紹介します
学習
検証
データ準備
ライブラリ読込
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリング ALSの例
Copyright (C) Takeshi Mikami. All rights reserved. 96
ライブラリを⽤いた協調フィルタリングの実装
Spark MLlibでのALSを紹介します
検証データ
予測データ
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリングの応⽤例 アイテムベースの組み合わせ
• 海外旅⾏航空券の推薦
• ⽬的地と出発空港を組み合わせたアイテムベースの協調フィルタリング
• ⼿続き
• 事前に、過去のユーザの渡航履歴から以下を算出
• 出発空港利⽤履歴の類似度⾏列
• ⽬的地利⽤履歴の類似度⾏列
• サイトに訪問したユーザの出発空港利⽤履歴と⽬的地利⽤履歴を取得
• 以下を計算
• 出発空港利⽤履歴と出発空港利⽤履歴の類似度⾏列の積
• ⽬的地利⽤履歴と⽬的地利⽤履歴の類似度⾏列の積
• スコアの⾼い⽬的地順に並べ、
その⽬的地に対してスコアが最も⾼い出発空港を紐付け、
さらに最も価格が安い航空券の情報を推薦
Copyright (C) Takeshi Mikami. All rights reserved. 97
協調フィルタリングの応⽤例
協調フィルタリングの応⽤例を⽰します
→アイテムではなく「属性」の類似度⾏列を作ることで、
類似度⾏列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
takemikamiʼs note ‒ http://takemikami.com/
協調フィルタリングの応⽤例 メルマガタイトルの最適化
• メルマガタイトルの最適化
• メルマガ内に掲載されているアイテムの中で
もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む
• ⼿続き
• 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く
• 協調フィルタリングで、
メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出
• 推薦スコアがトップの商品名をメルマガタイトルに差し込む
Copyright (C) Takeshi Mikami. All rights reserved. 98
協調フィルタリングの応⽤例
協調フィルタリングの応⽤例を⽰します
→ライターが作成したコンテンツの⾒やすさ・わかりやすさなどを⽣かしたまま、
パーソナライズによって、よりユーザの関⼼を引く⽅法の例
※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が⾒込める
takemikamiʼs note ‒ http://takemikami.com/
レコメンドの適⽤で気をつけたいこと
• レコメンド導⼊の⽬的・評価指標を決めておく
• 単純に売上増などを⽬的にすると、サイトの特性によっては成果が出にくい
その場合、売れ筋商品のランキングに反応しなかったユーザが反応したか等を評
価するようにする
※売れ筋に反応しないユーザに対する処置を⾏っていなかったサイトは、売れ筋
に反応する顧客しか来なくなっている可能性が⾼いので、成果が出るまでに時間
がかかる
• モデルを破壊するユーザに気をつける
• 社内でのテストバイ、業者の⼤量購⼊などに引きずられて相関が崩れることがあ
るので学習対象から除いておく
• 他の⼿法も検討する
• 顧客の分類(classification)によるパーソナライズで要件を満たせることも多い
Copyright (C) Takeshi Mikami. All rights reserved. 99
協調フィルタリングの応⽤例
レコメンドの適⽤で気をつけたいことを紹介します
takemikamiʼs note ‒ http://takemikami.com/
付録
環境構築の⽅法
参考⽂献リスト
Copyright (C) Takeshi Mikami. All rights reserved. 100
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
takemikamiʼs note ‒ http://takemikami.com/
環境構築の⽅法
• ApacheSpark/MLlibの環境構築 ※python環境は前提です
• ApacheSparkをインストールします
(homebrewを利⽤している場合)
Copyright (C) Takeshi Mikami. All rights reserved. 102
付録
本資料の内容を実⾏するための環境構築について説明します
$ brew install apache-spark
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/ でアクセス
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
付録
本資料作成にあたって参考にした⽂献リストです
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サイトリストです

Weitere ähnliche Inhalte

Was ist angesagt?

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIShota Imai
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題joisino
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築Masayuki Ota
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料洋資 堅田
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3までYahoo!デベロッパーネットワーク
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?hoxo_m
 

Was ist angesagt? (20)

イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
MLOps入門
MLOps入門MLOps入門
MLOps入門
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 

Andere mochten auch

最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」Takashi J OZAKI
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Takeshi Mikami
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティストSatoru Yamamoto
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングAtsushi KOMIYA
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門toilet_lunch
 
SVMについて
SVMについてSVMについて
SVMについてmknh1122
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33horihorio
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話Ryota Kamoshida
 

Andere mochten auch (8)

最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」
 
Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」Rによるデータサイエンス13「樹木モデル」
Rによるデータサイエンス13「樹木モデル」
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
 
今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門今日から使える! みんなのクラスタリング超入門
今日から使える! みんなのクラスタリング超入門
 
SVMについて
SVMについてSVMについて
SVMについて
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 

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

0610 TECH & BRIDGE MEETING
0610 TECH & BRIDGE MEETING0610 TECH & BRIDGE MEETING
0610 TECH & BRIDGE MEETING健司 亀本
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門Takeshi Mikami
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式Ryo Kaji
 
1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING健司 亀本
 
kagamicomput201801
kagamicomput201801kagamicomput201801
kagamicomput201801swkagami
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回Project Samurai
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用y-uti
 
機械学習を活用したサービスにおける工夫紹介
機械学習を活用したサービスにおける工夫紹介機械学習を活用したサービスにおける工夫紹介
機械学習を活用したサービスにおける工夫紹介syou6162
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
はてなにおける機械学習の取り組み
はてなにおける機械学習の取り組みはてなにおける機械学習の取り組み
はてなにおける機械学習の取り組みsyou6162
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701swkagami
 
Batch Reinforcement Learning
Batch Reinforcement LearningBatch Reinforcement Learning
Batch Reinforcement LearningTakuma Oda
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-Koichi Hamada
 

Ähnlich wie レコメンドアルゴリズムの基本と周辺知識と実装方法 (18)

0610 TECH & BRIDGE MEETING
0610 TECH & BRIDGE MEETING0610 TECH & BRIDGE MEETING
0610 TECH & BRIDGE MEETING
 
SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門SparkMLlibで始めるビッグデータを対象とした機械学習入門
SparkMLlibで始めるビッグデータを対象とした機械学習入門
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式
 
1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING1028 TECH & BRIDGE MEETING
1028 TECH & BRIDGE MEETING
 
kagamicomput201801
kagamicomput201801kagamicomput201801
kagamicomput201801
 
明治大の活動2
明治大の活動2明治大の活動2
明治大の活動2
 
Extreme Learning Machine
Extreme Learning MachineExtreme Learning Machine
Extreme Learning Machine
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第4回
 
JAWSUG 20210128
JAWSUG 20210128JAWSUG 20210128
JAWSUG 20210128
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用
 
機械学習を活用したサービスにおける工夫紹介
機械学習を活用したサービスにおける工夫紹介機械学習を活用したサービスにおける工夫紹介
機械学習を活用したサービスにおける工夫紹介
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
はてなにおける機械学習の取り組み
はてなにおける機械学習の取り組みはてなにおける機械学習の取り組み
はてなにおける機械学習の取り組み
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701
 
Batch Reinforcement Learning
Batch Reinforcement LearningBatch Reinforcement Learning
Batch Reinforcement Learning
 
Show and tell takmin
Show and tell takminShow and tell takmin
Show and tell takmin
 
ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-ソーシャルデザインパターン -評判と情報収集-
ソーシャルデザインパターン -評判と情報収集-
 

Mehr von Takeshi Mikami

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法Takeshi Mikami
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介Takeshi Mikami
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れTakeshi Mikami
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)Takeshi Mikami
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」Takeshi Mikami
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成Takeshi Mikami
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウTakeshi Mikami
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方Takeshi Mikami
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題Takeshi Mikami
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介Takeshi Mikami
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)Takeshi Mikami
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Takeshi Mikami
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本Takeshi Mikami
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Takeshi Mikami
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Takeshi Mikami
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介Takeshi Mikami
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介Takeshi Mikami
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Takeshi Mikami
 

Mehr von Takeshi Mikami (20)

rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法
 
適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介適切なクラスタ数を機械的に求める手法の紹介
適切なクラスタ数を機械的に求める手法の紹介
 
OAuth 2.0による認可の流れ
OAuth 2.0による認可の流れOAuth 2.0による認可の流れ
OAuth 2.0による認可の流れ
 
MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方MapReduceによるConnected Components(連結成分)の見つけ方
MapReduceによるConnected Components(連結成分)の見つけ方
 
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
 
データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」データサイエンスアイドル「小日向美穂」と考える「つながり」
データサイエンスアイドル「小日向美穂」と考える「つながり」
 
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成RDFのチェックツール「rdflint」とコミュニティによるオープンデータの作成
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題HBase CompleteBulkLoadその仕組み&発生した問題
HBase CompleteBulkLoadその仕組み&発生した問題
 
RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介RDFチェックツール「rdflint」のご紹介
RDFチェックツール「rdflint」のご紹介
 
アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)アーリース情報技術株式会社 会社案内 (2019/02/13)
アーリース情報技術株式会社 会社案内 (2019/02/13)
 
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
 
SPARQL入門
SPARQL入門SPARQL入門
SPARQL入門
 
センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本センサーによるデータ計測と異常検知の基本
センサーによるデータ計測と異常検知の基本
 
Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定Webサイトのアクセスログによるユーザー属性推定
Webサイトのアクセスログによるユーザー属性推定
 
Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門Google Cloud Dataflowによる データ変換処理入門
Google Cloud Dataflowによる データ変換処理入門
 
IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介IoTでの機械学習活用イメージと強化学習のご紹介
IoTでの機械学習活用イメージと強化学習のご紹介
 
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
 
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成Ims@sparqlではじめるr markdownとgitbookによるレポート生成
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
 

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Kürzlich hochgeladen (9)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

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

  • 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. takemikamiʼs note ‒ http://takemikami.com/ はじめに • 対象: 機械学習未経験のエンジニア • テーマ:レコメンドアルゴリズムとその応⽤ • 内容 • Pythonを使った機械学習の紹介 • レコメンドアルゴリズムの基礎 • レコメンドの周辺知識と実装⽅法 Copyright (C) Takeshi Mikami. All rights reserved. 2 本⽇の勉強会でお話しする内容について説明します
  • 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. takemikamiʼs note ‒ http://takemikami.com/ 機械学習を応⽤するためのスキル Copyright (C) Takeshi Mikami. All rights reserved. 4 ※丸⼭宏・⼭⽥敦・神⾕直樹共著「データサイエンティスト・ハンドブック」(近代科学社)を参考に作成 ビジネス⼒ (business problem solving) データエンジニアリング⼒ (data engineering) データサイエンス⼒ (data science) ビジネス課題を 理解・解決するスキル 統計・機械学習等の情報科学を 理解・活⽤するスキル データの加⼯・運⽤環境 を実装するスキル 機械学習を応⽤するために必要なスキルを紹介します データサイエンティスト に求められるスキルとして よく⽰されるものです
  • 5. takemikamiʼs note ‒ http://takemikami.com/ ビジネス⼒とは • ビジネス課題を整理する 「このデータ分析によって解きたいビジネス課題は何か」を考える →課題を明確にしておかないと成果に結びつかない • ビジネス課題を説明する レポーティングやプレゼンスキル →意思決定者が理解出来ないと実⾏できない Copyright (C) Takeshi Mikami. All rights reserved. 5 機械学習を応⽤するためのビジネス⼒について説明します
  • 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 ビジネス⼒ (business problem solving) データエンジニアリング⼒ (data engineering) データサイエンス⼒ (data science) データサイエンス・エンジニアリング を中⼼にお話しします 機械学習を応⽤するためのスキルの中で、本⽇お話する分野を⽰します
  • 9. takemikamiʼs note ‒ http://takemikami.com/ Pythonを使った機械学習の紹介 scikit-learnによる機械学習 回帰、分類、クラスタリング、次元削減 TensorFlowによる機械学習 画像のクラス分類 Copyright (C) Takeshi Mikami. All rights reserved. 9
  • 10. takemikamiʼs note ‒ http://takemikami.com/ データ分析のアプローチ • データ分析のアプーチは以下の3つに分類できる Copyright (C) Takeshi Mikami. All rights reserved. 10 scikit-learnによる機械学習 アプローチ 説明 例 ⼿法 説明的データ分析 (descriptive) 事実を説明する・⾒ つける ・どんな⼈が何を買っているか? ・ある広告がどれだけ売上に貢献して いるか? BI、クラスタリン グ、アソシエー ション分析 予測的データ分析 (predictive) (未来や⽋測値を)予 測する ・ある商品群を閲覧した⼈の性別は? ・広告を出稿したら、どれだけ売上が 上がるか? 分類・回帰、統計 的機械学習 指⽰的データ分析 (prescriptive) 最適解を探す ・利益を最⼤化するための、最適な仕 ⼊れ量は? ・売上を最⼤化するには、どこに広告 を出稿すべきか? 最適化、実験計画 → 実施したい「分析のアプローチ」が何かを認識し、適切な「⼿法」を適⽤する 3つのデータ分析のアプローチを紹介します
  • 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. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering)と分類(classification) Copyright (C) Takeshi Mikami. All rights reserved. 12 scikit-learnによる機械学習 分類(classification) クラスタリング(clustering) 教師 教師あり 教師なし 説明 与えられたデータを 適切なクラスに振り分ける 与えられたデータを 複数のグループ分ける イメージ 既存データを元に作ったルールで 新規データを振り分ける データの特徴を元に 意味あるグループが無いか⾒つける A ルール B C クラスタリングと分類(教師あり学習と教師なし学習)の違いを⽰します
  • 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 教師あり学習の基本 Copyright (C) Takeshi Mikami. All rights reserved. 16 scikit-learnによる機械学習 教師あり学習の基本的な考え⽅を説明します やりたいこと: 「xの値」が与えられた時に「yの値」を予測したい → 𝑦 = 𝑓 𝑥 という関数を求めたい 𝑦 = 𝑓(𝑥) ⽬的変数 説明変数 予測モデル⽬的変数が離散値→分類 ⽬的変数が連続値→回帰
  • 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. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 • 最⼩⼆乗法とは 「残差の⼆乗和が最⼩になる係数を決定する⼿法」 Copyright (C) Takeshi Mikami. All rights reserved. 18 scikit-learnによる機械学習 線形回帰分析を例に分類のアルゴリズムを紹介します 線形回帰の例 標本回帰直線からの残差の⼆乗和 これを最⼩にする、a,bを求める
  • 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. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 20 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します ライブラリ・データを読み込みます
  • 21. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 21 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します データを描画してみます x: 説明変数 y: ⽬的変数
  • 22. takemikamiʼs note ‒ http://takemikami.com/ 回帰(regression) 線形回帰による回帰の例 Copyright (C) Takeshi Mikami. All rights reserved. 22 scikit-learnによる機械学習 scikit-learnでの線形回帰分析を紹介します 学習・検証データに分割し 学習させます
  • 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/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 24 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します No ⾵ 気温 海⽔浴 1 弱 ⾼ ⾏く 2 弱 低 ⾏かない 3 弱 ⾼ ⾏く 4 弱 中 ⾏く 5 弱 低 ⾏かない 6 弱 ⾼ ⾏かない 7 強 ⾼ ⾏かない 8 強 低 ⾏かない 9 強 中 ⾏かない 10 強 ⾼ ⾏く 気温:⾼ 気温:中 気温:低 ⾵:弱 ⾏く ⾏く ⾏かない ⾵:強 ⾏かない ⾏かない ⾏かない ⽬的変数:海⽔浴⾏く・⾏かない 説明変数:⾵・気温 これを樹⽊モデルに 当てはめて考えてみる 元データ ⾏動パターン判断結果 やりたいこと: ⾵・気温から海⽔浴に⾏くかを判断する
  • 25. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 • ジニ係数(Gini Index)を⽤いて分岐点を計算 • 分布の不純度の尺度 値が⼤きいほど、不純度が⾼い(データがばらついている)と判断 • 値が⼤きい点から枝を分岐していく Copyright (C) Takeshi Mikami. All rights reserved. 25 scikit-learnによる機械学習 決定⽊を例に分類のアルゴリズムを紹介します t:ノード数 i:クラス p:⽐率
  • 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. 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. 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 31 scikit-learnによる機械学習 使⽤するデータセット(iris)の説明をします (⽬的変数) アヤメの品種 (説明変数) 花びら・がく⽚の⼤きさ アヤメの品種種別 データ50件づつ
  • 32. takemikamiʼs note ‒ http://takemikami.com/ 分類(classification) 決定⽊の例 Copyright (C) Takeshi Mikami. All rights reserved. 32 scikit-learnによる機械学習 scikit-learnでの決定⽊を紹介します ライブラリ・データを読み込み 学習させます
  • 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/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 34 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します やりたいこと: データセットを指定した数のクラスタに分ける • クラスタ数(k)を決める • クラスタの中⼼点を対象データからランダムにk個決める • 繰り返し • 各データを最も近くにある中⼼点のクラスタに割り当てる • クラスタ内のデータの平均値を新たなクラスタの中⼼点にする • クラスタの中⼼点が変化しなくなったら終了 →次のスライドから、 k-means法で最適なクラスタを探索する流れをイメージで⽰します。
  • 35. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 35 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します クラスタリングを⾏いたいデータセットを⽤意する
  • 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. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 37 scikit-learnによる機械学習 k-meansを例にクラスタリングのアルゴリズムを紹介します 各データを最も近くにある中⼼点のクラスタに割り当てる ✓ ✓
  • 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法の計算で利⽤する距離について説明します ユークリッド距離 コサイン距離 式 式 (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. takemikamiʼs note ‒ http://takemikami.com/ クラスタリング(clustering) k-meansの例 Copyright (C) Takeshi Mikami. All rights reserved. 46 scikit-learnによる機械学習 scikit-learnでのk-meansを紹介します ライブラリ・データを読み込み 学習させます
  • 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/ 次元削減(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. takemikamiʼs note ‒ http://takemikami.com/ 次元削減(dimensionality reduction) PCAの例 Copyright (C) Takeshi Mikami. All rights reserved. 49 scikit-learnによる機械学習 scikit-learnでのPCA(主成分分析)を紹介します ライブラリ・データを読み込み 学習させます
  • 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/ ニューラルネットワークとは • パーセプトロンとは、視覚と脳の機能をモデル化したもの • ⼊⼒信号(x)と重み(w)の乗算の総和に対して、出⼒信号(y)が決まる Copyright (C) Takeshi Mikami. All rights reserved. 51 TensorFlowによる機械学習 パーセプトロン・ニューラルネットワークについて説明します 𝑥0 𝑥- 𝑦 𝑤0 𝑤- ⼊⼒層 出⼒層 重み →パーセプトロンを多層に重ね、 中間層を多くしたものが ディープニューラルネットワーク ⼊⼒層 中間層 出⼒層
  • 52. takemikamiʼs note ‒ http://takemikami.com/ TensorFlowとは • DistBeliefというGoogleのサービスに使われている社内ツールを OpenSourceにしたもの • ニューラルネットワーク/ディープニューラルネットが実装できる • TensorBoardによってモデル・学習状況等を可視化できる • データフローグラフによって、 ⾃由度の⾼いネットワークを記載できる • 画像処理の関数も⽤意されている Copyright (C) Takeshi Mikami. All rights reserved. 52 TensorFlowによる機械学習 TensorFlowの紹介をします オープンソースの機械学習ライブラリ →画像のクラス分類などに利⽤できる (チュートリアルがそれ)
  • 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. 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. takemikamiʼs note ‒ http://takemikami.com/ ニューラルネットワーク CNNの例 Copyright (C) Takeshi Mikami. All rights reserved. 55 TensorFlowによる機械学習 tensorflow/kerasでのCNN(畳み込みニューラルネット)を紹介します テストデータの準備
  • 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(畳み込みニューラルネット)を紹介します TensorBoardでの可視化 ネットワークの可視化 学習の進⾏と 精度の変化
  • 59. takemikamiʼs note ‒ http://takemikami.com/ レコメンドアルゴリズムの基礎 レコメンドとは レコメンドの⼿法 協調フィルタリングのアルゴリズム ユーザベース、アイテムベース、ALS(交互最⼩⼆乗法) Copyright (C) Takeshi Mikami. All rights reserved. 59
  • 60. takemikamiʼs note ‒ http://takemikami.com/ レコメンドエンジンとは • レコメンドエンジンとは Copyright (C) Takeshi Mikami. All rights reserved. 60 レコメンドとは レコメンドエンジンの説明、パーソナライズについて⽰します 「対象ユーザに対し、その嗜好を予測し、アイテムを推薦するシステム」 Amazon Googleニュース 閲覧中の本を買った⼈が、 買ったことがある本 地域に合わせたニュース ユーザ属性や⾏動に あわせたニュース
  • 61. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの⼿法:パーソナライズ Copyright (C) Takeshi Mikami. All rights reserved. 61 レコメンドとは レコメンドの⼿法「パーソナライズ」について説明します パーソナライズ ⾮パーソナライズ 説明 ユーザの特徴にもとづいた推薦 →ユーザ毎に推薦されるアイテムが異なる 万⼈に向けたおすすめ →全ユーザに同じアイテムが推薦される アルゴ リズム 協調フィルタリング 内容ベース型フィルタリング 閲覧履歴 etc ベストセラー 新着 販売店担当者のおすすめ etc レコメンドというとパーソナライズを指すことが多いが、 ユーザ属性不明の場合などに対応する為、⾮パーソナライズの⼿法も組み合わせる。
  • 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ユーザベース)の⼿続き • 対象ユーザ以外のユーザに対して、 対象ユーザとの類似度を求める • 類似するユーザを選ぶ • 類似ユーザの対象アイテムの評価から、加重平均を算出 Copyright (C) Takeshi Mikami. All rights reserved. 65 協調フィルタリングのアルゴリズム ユーザベースの協調フィルタリングを⾏う⼿続きを⽰します →次のスライドから、 ユーザベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
  • 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. 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(アイテムベース)の⼿続き • 対象ユーザ以外のユーザの評価値から、 各アイテム間の類似度を求め、類似度⾏列を算出する • 対象ユーザの評価値と類似度⾏列の積を求める Copyright (C) Takeshi Mikami. All rights reserved. 70 協調フィルタリングのアルゴリズム アイテムベースの協調フィルタリングを⾏う⼿続きを⽰します →次のスライドから、 アイテムベースの協調フィルタリングで予測を⾏う流れをイメージで⽰します。
  • 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. 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 類似度の計算 Copyright (C) Takeshi Mikami. All rights reserved. 75 協調フィルタリングのアルゴリズム 協調フィルタリングの⼿続きで⽤いた類似度について説明します ピアソンの相関係数 コサイン類似度 式 説明 ユーザベース向きの尺度 アイテムベース向きの尺度 データをベクトルで表現した時の⾓度の近さ ※⼀部の変数の⼤きさの偏りに影響を受けな い X: 評価値⾏列 ρ: 要素数 Xa, Xb: 類似度の⽐較対象
  • 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. takemikamiʼs note ‒ http://takemikami.com/ 最⼩⼆乗法について 〜ALS(『交互』最⼩⼆乗法)の前に • 最⼩⼆乗法とは 「残差の⼆乗和が最⼩になる係数を決定する⼿法」 Copyright (C) Takeshi Mikami. All rights reserved. 77 協調フィルタリングのアルゴリズム 最⼩⼆乗法について説明します 線形回帰の例 標本回帰直線からの残差の⼆乗和 これを最⼩にする、a,bを求める
  • 78. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング(ALS)の⼿続き • 特徴量の数を決める • アイテムの特徴量⾏列を初期化する • 収束するまで以下を繰り返す • 評価値⾏列・アイテムの特徴量⾏列から、 ユーザの特徴量を最⼩⾃乗法で計算 • 評価値⾏列・ユーザの特徴量⾏列から、 アイテムの特徴量を最⼩⾃乗法で計算 Copyright (C) Takeshi Mikami. All rights reserved. 78 協調フィルタリングのアルゴリズム ALS (交互最⼩⼆乗法)による協調フィルタリングの⼿続きを⽰します →次のスライドから、 ALS(交互最⼩⼆乗法)による協調フィルタリングの流れをイメージで⽰します。
  • 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. 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. 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの周辺知識と実装⽅法 システム構成と周辺知識 ライブラリを⽤いた協調フィルタリングの実装 協調フィルタリングの応⽤例 Copyright (C) Takeshi Mikami. All rights reserved. 84
  • 85. takemikamiʼs note ‒ http://takemikami.com/ マーケティングデータ分析と機械学習 Copyright (C) Takeshi Mikami. All rights reserved. 85 システム構成と周辺知識 マーケティングデータ分析における、機械学習の位置づけを⽰します 顧客との チャネル データ分析 顧客 社会・ 業界 リアル広告 イベント ・・・ Data Warehouse SNS 収集施策 実店舗 収 集 DataMart Web広告ECサイト BIツール 機械学習 加⼯マーケター データサイエンティスト 施策の検討・意思決定を機械学習で⽀援
  • 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. 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) リアルタイムに ユーザの⾏動を収集する流れ ユーザの⾏動を応じた レコメンド情報を表出する流れ ユーザの⾏動は Key-Value Store でユーザ単位に管理 アイテムベースでのレコメンド
  • 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. 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. 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. 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. 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. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 94 ライブラリを⽤いた協調フィルタリングの実装 使⽤するデータセット(MovieLens)の説明をします • 使⽤するMovieLensデータは、協調フィルタリングの例でよく使われる データセット 以下の対応が⼊っている ・ユーザID (userId) ・映画ID (movieId) ・評価 (rating)
  • 95. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリング ALSの例 Copyright (C) Takeshi Mikami. All rights reserved. 95 ライブラリを⽤いた協調フィルタリングの実装 Spark MLlibでのALSを紹介します 学習 検証 データ準備 ライブラリ読込
  • 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/ 協調フィルタリングの応⽤例 アイテムベースの組み合わせ • 海外旅⾏航空券の推薦 • ⽬的地と出発空港を組み合わせたアイテムベースの協調フィルタリング • ⼿続き • 事前に、過去のユーザの渡航履歴から以下を算出 • 出発空港利⽤履歴の類似度⾏列 • ⽬的地利⽤履歴の類似度⾏列 • サイトに訪問したユーザの出発空港利⽤履歴と⽬的地利⽤履歴を取得 • 以下を計算 • 出発空港利⽤履歴と出発空港利⽤履歴の類似度⾏列の積 • ⽬的地利⽤履歴と⽬的地利⽤履歴の類似度⾏列の積 • スコアの⾼い⽬的地順に並べ、 その⽬的地に対してスコアが最も⾼い出発空港を紐付け、 さらに最も価格が安い航空券の情報を推薦 Copyright (C) Takeshi Mikami. All rights reserved. 97 協調フィルタリングの応⽤例 協調フィルタリングの応⽤例を⽰します →アイテムではなく「属性」の類似度⾏列を作ることで、 類似度⾏列をコンパクトにしてシステム負荷↓ アイテムのコールドスタート問題の回避
  • 98. takemikamiʼs note ‒ http://takemikami.com/ 協調フィルタリングの応⽤例 メルマガタイトルの最適化 • メルマガタイトルの最適化 • メルマガ内に掲載されているアイテムの中で もっともユーザにマッチするアイテム名称をメルマガタイトルに差し込む • ⼿続き • 商品担当者がおすすめ商品をピックアップ、ライターがメルマガを書く • 協調フィルタリングで、 メルマガ配信先ユーザごとに、メルマガ内のおすすめ商品の推薦スコアを算出 • 推薦スコアがトップの商品名をメルマガタイトルに差し込む Copyright (C) Takeshi Mikami. All rights reserved. 98 協調フィルタリングの応⽤例 協調フィルタリングの応⽤例を⽰します →ライターが作成したコンテンツの⾒やすさ・わかりやすさなどを⽣かしたまま、 パーソナライズによって、よりユーザの関⼼を引く⽅法の例 ※メルマガは開いてもらうことが重要なので「件名」のパーソナライズは効果が⾒込める
  • 99. takemikamiʼs note ‒ http://takemikami.com/ レコメンドの適⽤で気をつけたいこと • レコメンド導⼊の⽬的・評価指標を決めておく • 単純に売上増などを⽬的にすると、サイトの特性によっては成果が出にくい その場合、売れ筋商品のランキングに反応しなかったユーザが反応したか等を評 価するようにする ※売れ筋に反応しないユーザに対する処置を⾏っていなかったサイトは、売れ筋 に反応する顧客しか来なくなっている可能性が⾼いので、成果が出るまでに時間 がかかる • モデルを破壊するユーザに気をつける • 社内でのテストバイ、業者の⼤量購⼊などに引きずられて相関が崩れることがあ るので学習対象から除いておく • 他の⼿法も検討する • 顧客の分類(classification)によるパーソナライズで要件を満たせることも多い Copyright (C) Takeshi Mikami. All rights reserved. 99 協調フィルタリングの応⽤例 レコメンドの適⽤で気をつけたいことを紹介します
  • 100. takemikamiʼs note ‒ http://takemikami.com/ 付録 環境構築の⽅法 参考⽂献リスト Copyright (C) Takeshi Mikami. All rights reserved. 100
  • 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. takemikamiʼs note ‒ http://takemikami.com/ 環境構築の⽅法 • ApacheSpark/MLlibの環境構築 ※python環境は前提です • ApacheSparkをインストールします (homebrewを利⽤している場合) Copyright (C) Takeshi Mikami. All rights reserved. 102 付録 本資料の内容を実⾏するための環境構築について説明します $ brew install apache-spark
  • 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. 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. 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サイトリストです