Mais conteúdo relacionado Semelhante a クラスタリングとレコメンデーション資料 (20) クラスタリングとレコメンデーション資料2. copyright 2016 Yosuke Katada
本日使うライブラリ
トピックモデル(LDA)のライブラリ
• pip install lda
Anacondaを使っている方は以下は不要です。
• pip install pandas
• pip install numpy
• pip install scipy
• pip install scikit-learn
本日使うサンプルコード
https://github.com/yosukekatada/python_ml_study
2
3. copyright 2016 Yosuke Katada
Wifi
SSID: WA-GN1
セキュリティ: WPA2-PSK(AES)
キー: zeroshinegi53
本日使うサンプルコード
https://github.com/yosukekatada/python_ml_study
3
4. copyright 2016 Yosuke Katada
自己紹介
4
堅田 洋資(かただ ようすけ)
現在
データサイエンティスト@白ヤギコーポレーション
職歴
● データ分析コンサルタント@デロイトアナリティクス
● マーケティングアナリスト(インターン)@Williams-Sonoma
● アルゴリズム開発@生体センサスタートアップ
● 事業再生コンサルタント@KPMG
● ブランドマーケティング@Mars
学歴
● University of San Francisco, M.S. in Analytics修了
● 一橋大学商学部卒業(統計学・データサイエンス専攻)
趣味
● スラックライン
7. copyright 2016 Yosuke Katada
あなたならどう分ける?
7
以下のようなXとYのデータがあり、これらを散布図にすると右下のようになります。
この時、あなたなら、どんなグループに分けますか?
8. copyright 2016 Yosuke Katada
クラスタリングとは?
データをグルーピングする機械学習の手法
8
応用例
×
× ×
×
×
×
×
×
××
×
×
×
×
×
×
×
×
×
ユーザーや商品のグループ化
・どんなユーザーがいるのか?
9. copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering (今日はやりません)
・SOM(今日はやりません)
9
10. copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering
・SOM
10
11. copyright 2016 Yosuke Katada
階層型クラスタリング
11
A B C D E F G H
デンドログラム
距
離
A B C D E F G H
A 0 4 6 8 15 16 19 24
B - 0 5 6 17 15 18 20
C - - 0 6 13 11 16 18
D - - - 0 17 13 18 15
E - - - - 0 2 7 10
F - - - - - 0 6 9
G - - - - - - 0 8
H - - - - - - - 0
距離例
階層型クラスタリングではデンドログラムを構築することが一つ
のゴール
12. copyright 2016 Yosuke Katada
最も類似している
2番目に類似している
デンドログラム
12
クラスタリングの結合の過程を木で表現したもの
A B C D E
AB
DE
ABC
ABCDE
この高さは結合したク
ラスター間の距離を
表す
13. copyright 2016 Yosuke Katada
<考え方>
距離の近いクラスター同士を一つのクラスターで段階
的にまとめていく
クラスター間の距離はどうやって定義する?
階層型クラスタリング
13
14. copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering
・SOM
14
15. copyright 2016 Yosuke Katada
非階層型クラスタリング
15
<考え方>
あらかじめいくつのクラスターに分けるのかを決め、
決めた数の塊にサンプルを分割する
5つのクラスターに分類
16. copyright 2016 Yosuke Katada
KMeans法のアルゴリズム
<K-Means法 手順>
1)はじめにk個のシードを置く
2)各サンプルを最も近いシードと同じクラスターに分類
3)k個のクラスターそれぞれで重心を求め、それを新たな
シードとして更新する
4)重心の位置が変化しなくなるまで 2) ~ 3) を繰り返す
16
17. copyright 2016 Yosuke Katada 17
K-Means法のアルゴリズム
< K-Means法のイメージ(k=2の場合)>
サンプルの中から2つ選び、それをシードに
設定
各サンプルについて、最も近いシードと同じ
クラスターに分類
各クラスターの重心を求め、それを新たな
シードとして更新
シードの位置が更新されたので、サンプル
を再び分類
再び各クラスターの重心を求め、シード位
置を更新
…
18. copyright 2016 Yosuke Katada
改めてKMeans法
KMeans法は、各クラスターに含まれるデータ点からクラスター
の重心までの距離の2乗が最小になるようにすること。この数値
をwithin-cluster sum of squares (WCSS)と言ったりします。
18
3つのクラスターに分類
KMeans法の目的関数
Xi : クラスターiに含まれるデータ全て
x : クラスターiに含まれる1つのデータ
μi : クラスターiの重心
19. copyright 2016 Yosuke Katada
K-Means法のメリット・デメリット
19
<メリット>
1)計算が速い
2)シンプルで実装しやすい
<デメリット>
1)Kを事前に決める必要がある
2)最初のシードの置き方によって分類結果が異なる
20. copyright 2016 Yosuke Katada
K-Means++法
20
<K-Means法のデメリット>
1)Kを事前に決める必要がある
2)最初のシードの置き方によって分類結果が異なる
K-Means++法で解消
21. copyright 2016 Yosuke Katada
K-Means++法
21
K-Means法の初期シードの選択の仕方を工夫した改良版
<初期シードの選択方法>
K-Means法 ランダムに選択
K-Means++法 なるべくシード同士が離
れるように選択
22. copyright 2016 Yosuke Katada
<K-Means++法 手順>
1. サンプルの中からランダムに1つ選び、シードとする
2. 1つ前のシードと各データ点との距離を測る。
3. 以下の確率で次のシードを選ぶ
4. シードがk個選ばれるまで 2) を繰り返す
5. k個のシードが選択されたら、K-Means法と同様にシードを更新し
ていく
K-Means++法
22
Σ(各データ点といちばん近いシードまでの距離)^2
(あるデータ点といちばん近いシードまでの距離)^2
23. copyright 2016 Yosuke Katada
K-Means++法
<初期シードのイメージ( k=3の場合)>
サンプルの中からランダムに1つ選び、そ
のサンプルをシードに設定
初めに設定したシードからの距離を計算する
Liの2乗/(L1,L2, L3, L4の距離の2乗和)を確率
として、次のシードを選ぶ。ここでは赤い点
各サンプルから最も近いシードとの距離が一番長
いサンプルを次のシードが選ばれやすくなる。ここ
ではL2が最有力
L1
L2
L3 L1
L2
L3
シード1
L4
シード2
シード3
25. copyright 2016 Yosuke Katada
最適なクラスター数
K-Means法では事前にクラスター数を決めておく必要あり、クラ
スター数の取り方によって、クラスタリングの精度は左右されて
しまう。
25
いかに最適なクラスター数を探すか?
● Elbow Method
● シルエットプロット
● 階層型クラスタリング
26. copyright 2016 Yosuke Katada
クラスタリングの結果を考察する概念
• cohesion(凝集性)
• separation(分離性)
26
3つのクラスターに分類
cohesion 高 かつ separation 高
3つのクラスターに分類
cohesion 低 かつ separation 低
27. copyright 2016 Yosuke Katada
Elbow Method
● 目的関数( = WCSS)が急激に減少し、その後誤差の変化
がなだらかとなるような値をクラスター数として選択
● Elbow Methodは凝集性に着目した方法
目的関数
K
0 1 2 3 4 5 6
クラスター数=3
を選択
27
ひじ(Elbow)のようになってい
る箇所を探す
28. copyright 2016 Yosuke Katada
シルエットスコア
シルエットスコアとは、各データ点で計算するスコアで、-1 から 1 の値をとり
ます。1に近いほど所属しているクラスタの中心に近く、かつ最も近所のクラ
スターからも遠い場所にいることを示します。言い換えれば、凝集性が高く、
分離性が高ければ1に近くなります
28
3つのクラスターに分類
A
B
C
クラスタAの中の1つのデータ点(iとします)を例に
説明します。
1. Aの中との他の点からの距離の平均を計算
します。その結果をa(i)とします。
2. 異なるクラスタBとCで、それぞれのクラスタ
に含まれる点との平均距離を計算します。
その結果をb(i)とc(i)とします。
3. b(i)とc(i)の中で小さい方(つまり近所の方を
選びます。ここでは仮に b(i)の方が近所だと
しましょう。
4. 上記を組み合わせて、以下のようにシル
エットスコアを計算します
max( a(i), b(i) )
b(i) - a(i)
29. copyright 2016 Yosuke Katada
シルエットプロット
(k=3のシルエット図の例)
クラスター
1
2
3
シルエットスコア
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
29
すべてのクラスター
の厚さがほとんど
均等になっていれ
ば各クラスターのレ
コード数が均等で
あることがわかる
この線が1つのデータ点
平均シルエットスコア
全サンプルのシルエットスコアの平
均
30. copyright 2016 Yosuke Katada
例:凝集性・分離性が高いクラスター数が4つ
うまく行っている場合はこんな感じになります。
シルエットプロットを見て気づいた点を挙げましょう。
30
31. copyright 2016 Yosuke Katada
例: クラスター数がミスマッチの場合
本来あるべきクラスター数より少ないクラスター数の場合。
シルエットプロットを見て気づいた点を挙げましょう。
31
33. copyright 2016 Yosuke Katada
階層型クラスタリングを用いる方法
• 事前に階層型クラスタリングを実施し、その結果からどのくらいのクラスタ数にな
りそうか検討してクラスター数を決定する
• 階層型クラスタリングはデータ数が多いとデンドログラムが見にくいのでサンプリ
ングベースで実施する
33
A B C D E F G H I J K L M N O
クラスター数は
4つくらい
34. copyright 2016 Yosuke Katada
実務上のクラスター数の選び方のコツ
34
● Elbow Methodやシルエットプロットはクラスタリングしやすい
データを扱わない限り、見た目でわかる綺麗な結果はなかな
か得られないので、あくまで目安として用いる(こだわりすぎな
い)
● クラスター分析の目的に合わせて分析者が解釈可能性、業務
オペレーションに落としやすさ、そしてElbow Methodやシル
エットプロットの結果とのバランスを見て結論を出す
35. copyright 2016 Yosuke Katada
その他 KMeans法の注意点
• 解釈は人間が行います。
– 各クラスターの中心で解釈
– 決定木を使ったりすることも
• インプットデータのスケールを合わせる
– 目的関数を思い出してください
• クラスターは(超)球面を想定。さらに半径が概
ね同じであることが仮定されている
35
37. © 2016 Yosuke Katada
無断転載禁止
ある日、あなたに相談が・・・
あなたは、オンラインニュースアプリ企業のデータサイエンティ
ストです。プロダクトチームから以下のような相談がありました。
• 記事には「政治」「経済」といった大カテゴリは付いているも
のの、さらに中を細かく分けたい
• そうすると閲覧したユーザーの細かい好みがわかったり、も
う少し細かいタグをつけたりできそう
• 記事に詳細なタグが付けられると、閲覧履歴を使ってユー
ザー分析も簡単になるのではという仮説がある
38. © 2016 Yosuke Katada
無断転載禁止
トピックモデルとは?
記事(文書)データの背後に「トピック」があると想定し、そのト
ピックの組み合わせで記事が生成されていると仮定するモデル
記事(文書)のデータ
ベンチャー
トピック
データ
サイエンス
トピック
AI
トピック
・・・
39. © 2016 Yosuke Katada
無断転載禁止
トピックモデルとは?
しかし、人間には背後にある「トピック」はわからないので、それ
らの「トピック」を推定するのがトピックモデル
記事(文書)のデータ
?
トピック
?
トピック
?
トピック
・・・
40. © 2016 Yosuke Katada
無断転載禁止
トピックモデルで使われる手法
• LSI (Latent Semantic Indexing)
• pLSI(Probalistic LSI)
• SVD(特異値分解、Singular Value Decompsition)
• NMF(非負行列分解、Non-Negative Matrix Factorization)
• LDA(潜在ディリクレ分配法、Latent Direichel Allocation)
本講義ではLDAについてお話しします
41. © 2016 Yosuke Katada
無断転載禁止
手法の話の前に・・・
文書はそのままだと分析できないので、以下のい
テクニックを使って、分析しやすい形に加工する必
要があります。
<加工に関するテクニック>
• 形態素解析
• ベクトル空間モデル
42. 無断転載禁止
形態素解析 = 単語に分割
• 形態素解析: 文章を単語に分解するための解析
© 2016 Shiroyagi Corporation 42
すもももももももものうち
単語に区切る場合、いろいろな切り方がある
• す|も|もも| も|もも|もも|の|うち
• すもも|も|もも|も|もも|の|うち
• すもも|もも|もも|もも|もも|の|うち
すもも も もも も もも の うち
日本語として最も自然な切り方
43. 無断転載禁止
ベクトル空間モデル
© 2016 Shiroyagi Corporation 43
1. 機械学習は今後のテクノロジー戦略を考えるうえで重要だ。
2. アップルは最も革新的なテクノロジー企業のひとつだ。
3. 今日飲んだアップルジュースは格別においしかった。
・
・
文書ID 機械学習 テクノロジー 戦略 アップル 企業 ジュース
1 1 1 1 0 0 0
2 0 1 0 1 1 0
3 0 0 0 1 0 1
単語の出現頻度を行列の形で表現
44. 無断転載禁止
インプットとアウトプット
doc_id 単語1 単語2 ・・・ 単語V
1 0 1 ・・・ 1
2 2 0 ・・・ 0
3 0 0 ・・・ 4
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
D 0 5 ・・・ 0
文書 x 単語の行列
(成分は出現頻度)
doc_id トピック
1
トピック
2
・・・ トピック
K
1 0.1 0.05 ・・・ 0.5
2 0.4 0.1 ・・・ 0.3
・
・
・
・
・
・
・
・
・
・
・
・
D 0.9 0.001 ・・・ 0.05
単語1 単語2 ・・・ 単語V
トピック1 0.09 0.001 ・・・ 0.007
トピック2 0.01 0.002 ・・・ 0.04
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
トピックK 0.05 0.08 ・・・ 0.01
文書 x トピックの行列
トピック x 単語の行列
LDA
LDAは文書 x 単語の行列を以下に分解
● 文書 x トピックの行列(中身は確率)
● トピック x 単語の行列(中身は確率)
45. 無断転載禁止
トピックの解釈は人間
doc_id 単語1 単語2 ・・・ 単語V
1 0 1 ・・・ 1
2 2 0 ・・・ 0
3 0 0 ・・・ 4
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
D 0 5 ・・・ 0
文書 x 単語の行列
(成分は出現頻度)
doc_id トピック
1
トピック
2
・・・ トピック
K
1 0.1 0.05 ・・・ 0.5
2 0.4 0.1 ・・・ 0.3
・
・
・
・
・
・
・
・
・
・
・
・
D 0.9 0.001 ・・・ 0.05
単語1 単語2 ・・・ 単語V
トピック1 0.09 0.001 ・・・ 0.007
トピック2 0.01 0.002 ・・・ 0.04
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
トピックK 0.05 0.08 ・・・ 0.01
文書 x トピックの行列
トピック x 単語の行列
LDA
各トピックごとに確率が高い単語を見
て、人間がトピックを解釈する
46. 無断転載禁止
文書をトピックに分けるには?
doc_id 単語1 単語2 ・・・ 単語V
1 0 1 ・・・ 1
2 2 0 ・・・ 0
3 0 0 ・・・ 4
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
D 0 5 ・・・ 0
文書 x 単語の行列
(成分は出現頻度)
doc_id トピック
1
トピック
2
・・・ トピック
K
1 0.1 0.05 ・・・ 0.5
2 0.4 0.1 ・・・ 0.3
・
・
・
・
・
・
・
・
・
・
・
・
D 0.9 0.001 ・・・ 0.05
単語1 単語2 ・・・ 単語V
トピック1 0.09 0.001 ・・・ 0.007
トピック2 0.01 0.002 ・・・ 0.04
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
トピックK 0.05 0.08 ・・・ 0.01
文書 x トピックの行列
トピック x 単語の行列
LDA
各文書ごとにどのトピックで確率がを最
大かを見て分類する
48. © 2016 Yosuke Katada
無断転載禁止
LDAで想定していること
今、手元にある以下の文書Aがあります。これを単語で区切っ
たものを文書データAとします。
サッカー日本代表の試合で、かかっていた音楽が最高だった
今手にしている文書データ
サッカー 日本代表 試合 音楽
LDAでは、4つの単語でできた文書データAは幾つかのトピックに
よって生成されたものと想定しています。
どのような過程で生成されたとみなすのかを見ていきましょう。
49. © 2016 Yosuke Katada
無断転載禁止
フェス
トピックの箱があるとします
• まず、人間には目に見えない「トピックの箱」があり、その箱
の中には「単語カード」が入っていると仮定します。
• 文書データAで1単語目を引くときに、以下の確率で「トピック
の箱」が選ばれるものと想定します。
サッカー
試合
Jリーグ
セリエA
日本代表
ギター
J-POP
ロック
音楽
大統領選源泉徴収
消
費
税
株
価
日経平均
サッカートピック 音楽トピック 経済トピック
選ばれる確率
80%
選ばれる確率
15%
選ばれる確率
5%
50. © 2016 Yosuke Katada
無断転載禁止
トピックの箱を確率的に選びます
• 1つ目の単語カードを引くために、「トピックの箱」を確率的に
選び、その結果、「サッカー」トピックの箱が選ばれました。
フェス
サッカー
試合
Jリーグ
セリエA
日本代表
ギター
J-POP
ロック
音楽
大統領選源泉徴収
消
費
税
株
価
日経平均
サッカートピック 音楽トピック 経済トピック
このトピックの箱から引く
51. © 2016 Yosuke Katada
無断転載禁止
トピックの箱から単語カードを引きます
• 次に選ばれた「トピックの箱」に手を入れて、確率的に単語
カードを1枚引きます。
• その結果、「サッカー」の単語カードが選ばれました。
• つまり1単語目は「サッカー」ということになります。
サッカー
試合
Jリーグ
セリエA
日本代表
サッカートピック
サッカー
確率的に単語カードを引く
52. © 2016 Yosuke Katada
無断転載禁止
単語数だけ繰り返す
• 「トピックの箱」を確率的に選んで、「単語カード」を確率的に
引く、と言う手順を単語の個数繰り返す
• そうすると、単語カードが4枚揃います。
サッカー 日本代表 試合 音楽
引いたカード
サッカー日本代表の試合で、かかっていた音楽が最高だった
生成された文書(今手にしている文書データ)
この生成過程を過程すると、4単語中、3つが「サッカー」トピック、1つが「音楽」トピッ
クなので、75%(=3/4)の確率でサッカートピック、25%の確率で音楽トピックの文書
だということがわかる。
53. © 2016 Yosuke Katada
無断転載禁止
まとめると、
LDAで想定している文書の生成プロセスは・・・
サッカー 日本代表 試合 音楽 最高
トピック:
サッカー
トピック
音楽
トピック
K・・・
サッカー
トピック
サッカー
トピック
音楽
トピック
K・・・
音楽
STEP1: まずトピックの箱を確率的に選ぶ
STEP2:
STEP1で選んだトピックの箱から単語カードを 1
枚確率的に選ぶ
54. © 2016 Yosuke Katada
無断転載禁止
実際に人間が見えるのは文書データのみ
サッカー 日本代表 試合 音楽 最高
トピック1:
?
トピック2
?
トピック
K
?
・・・
?
トピック
1
?
トピック
2
?
トピック
3
?
・・・
?
STEP1: まずトピックの箱を確率的に選ぶ
STEP2:
STEP1で選んだトピックの箱から単語カードを 1
枚確率的に選ぶ
人間の目に見えているのは、ここだけ
この部分は人間にはわ
からないので、
ここを推定したい
LDAの目的は、今手元にある文書データAの背景にある生成過程を推定し、その結果と
して文書データAのトピック(今ならサッカートピック)を知ること
55. © 2016 Yosuke Katada
無断転載禁止
繰り返しになりますが
• 人間が目に見えるのは(生成された)文書デー
タのみ
• 文書生成プロセスを仮定して、目に見えている
文書データから、各「トピックの箱」からどんな単
語カードが出やすいのかを推定しよう、と言うの
がコンセプト
つまり、LDAのインプットは文書 x 単語の行列(要素は出現
回数)のみ。それだけで、生成プロセスを推定しようと言うの
がコンセプト
56. © 2016 Yosuke Katada
無断転載禁止
LDAを使う上で人間が与える
ハイパーパラメーター
• トピック数: K
• トピックの箱を選ぶ確率をコントロールするハイパーパラ
メータ: α
• 単語カードが引かれる確率をコントロールするハイパーパラ
メーター: β
K, α, βによって結果が異なるが、イメージしにくいの
はαとβなので、次ページでもう少し詳しく説明しま
す。
57. © 2016 Yosuke Katada
無断転載禁止
αとβはディリクレ分布のパラメーター
ディリクレ分布とは、複数クラスがあるうち、各クラ
スの目の出やすさを表現する確率分布
例: 今サイコロがあり、ディリクレ分布よりどの面の出やすさ(確
率)をサンプリングする。
1 2 3 4 5 6
0.00 0.99 0.00 0.00 0.00 0.01
0.00 0.00 0.01 0.27 0.72 0.00
1.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.51 0.49
1 2 3 4 5 6
0.13 0.14 0.21 0.26 0.16 0.10
0.15 0.13 0.25 0.19 0.18 0.10
0.12 0.20 0.19 0.09 0.26 0.14
0.24 0.10 0.17 0.13 0.12 0.23
alpha = [0.1, 0,1, 0.1 … 0.1] alpha = [10.0, 10.0, 10.0... . 10.0]
58. © 2016 Yosuke Katada
無断転載禁止
精度の評価
• (テストデータを用いた)対数尤度
– 0に近いほど良い
• Peplexity
– 小さいほど良いモデル
• Perplexityと人間の解釈しやすさはあまり関係ないという研究もある
https://www.umiacs.umd.edu/~jbg/docs/nips2009-rtl.pdf
Perplexity =
単語の数
対数尤度
exp -
61. copyright 2016 Yosuke Katada
レコメンデーションはビジネスでも重要
61
レコメンデーションはキャッシュポイントに近いため、機械学習の
適用先として重要な技術の一つとなっています。
McKinsey&Company調査(2012年)によると、ECやコンテンツ消
費におけるレコメンドの対売上影響は少なくありません。
● アマゾンは全売り上げの35%がレコメンド経由
● Netflixはコンテンツ消費の75%がレコメンド経由
● Google Newsはレコメンドによりクリック数が38%増加
● Choicestreamの顧客のうち28%が気に入ったレコメンド商品
を追加購入
(出処:http://www.slideshare.net/xamat/recommender-systems-machine-learning-summer-school-2014-cmu p.13)
62. copyright 2016 Yosuke Katada
レコメンデーションの種類
62
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
63. copyright 2016 Yosuke Katada
レコメンデーションの種類
63
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
64. copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
64
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
65. copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
65
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
66. copyright 2016 Yosuke Katada
類似度計算のステップ
66
まず、こんな行列が用意できていることを想定します。
A432 I4321 D4381 K4521 E4103 O3109 V1923 S4333
101 2 5 1 1 0 1 2 4
102 1 5 2 1 4 0 0 3
103 0 3 3 0 1 1 1 1
104 5 2 2 3 1 0 0 4
105 5 3 3 4 1 0 0 5
106 1 4 3 2 5 1 0 1
107 0 0 0 0 0 0 0 2
108 0 4 0 0 0 0 0 0
user
ID
item ID
67. copyright 2016 Yosuke Katada
A432 I4321 D4381 K4521 E4103 O3109 V1923 S4333
101 2 5 1 1 0 1 2 4
102 1 5 2 1 4 0 0 3
103 0 3 3 0 1 1 1 1
104 5 2 2 3 1 0 0 4
105 5 3 3 4 1 0 0 5
106 1 4 3 2 5 1 0 1
107 0 0 0 0 0 0 0 2
108 0 4 0 0 0 0 0 0
User x Userで類似度を計算
67
user
item
この2つの
ベクトルの
類似度を測る
● 好みの似ているユーザーは購入する商品やレーティングも似
ていると仮定して類似度の高いユーザーを調べる
68. copyright 2016 Yosuke Katada
A432 I4321 D4381 K4521 E4103 O3109 V1923 S4333
101 2 5 1 1 0 1 2 4
102 1 5 2 1 4 0 0 3
103 0 3 3 0 1 1 1 1
104 5 2 2 3 1 0 0 4
105 5 3 3 4 1 0 0 5
106 1 4 3 2 5 1 0 1
107 0 0 0 0 0 0 0 2
108 0 4 0 0 0 0 0 0
Item x Itemで類似度を計算
68
user
item
● 今度は、併せ買いされる商品はユーザーの購入パターン
も似ていると想定する。
この2つの
ベクトルの
類似度を測る
69. copyright 2016 Yosuke Katada
コサイン類似度
69
• コサイン類似度はベクトルの角度を測る方法
• ベクトルのなす角度によって類似度を測定
cos90度 = 0 cos30度 = 0.8
70. copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
70
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
71. copyright 2016 Yosuke Katada
予測のステップ
1つのやり方として類似度とレーティングの加重平均が大きい
ものを優先して掲出する方法があります。
71
類似度 A432
類似度 x
A432
I4321
類似度 x
I4321
D4381
類似度 x
D4381
101 0.98 2 1.96 5 4.9 1 0.98
102 0.92 1 0.92 5 4.6 2 1.84
103 0.88 3 2.64 3 2.64
104 0.76 5 3.8 2 1.52 2 1.52
106 0.65 1 0.65 4 2.6 3 1.95
類似度 x
レーティング
7.33 16.26 8.93
類似度の合計 3.31 4.19 4.19
平均類似度 2.21 3.88 2.13
①類似度 x レーティングを計算して、その合計を出します。②類似度の合計を出します。
③類似度 xレーティングの合計/類似度の合計を計算します。
73. copyright 2016 Yosuke Katada
新規ユーザーや新商品はどうする?
• 新規ユーザーや新商品はフィードバックが少ないため、協
調フィルタリングが有効に作用しにくい
• これをコールドスタート問題と言います。
73
A432 I4321 D4381 K4521 E4103 O3109 V1923 S4333
101 2 5 1 1 0 1 2 4
102 1 5 2 1 4 0 0 3
103 0 3 3 0 1 1 1 1
104 5 2 2 3 1 0 0 4
105 5 3 3 4 1 0 0 5
106 1 4 3 2 5 1 0 1
107 0 0 0 0 0 0 0 2
108 0 4 0 0 0 0 0 0
あまり
フィードバックがな
い・・・
74. copyright 2016 Yosuke Katada
コールドスタート問題の解決方法
• 売上ランキング上位のものを出す?
• コンテンツベースのレコメンデーションで推薦す
る?
• もうフィードバックをもらえそうなユーザーに聞い
ちゃう?
– https://research.yahoo.com/mobstor/publication_attachments/exUseM
e_RecSys2015_CameraReady.pdf
• 次元削減手法を使って見る
– Netflix Prizeでも成果を上げた方法
• https://datajobs.com/data-science-repo/Recommender-Systems-[
Netflix].pdf
74
75. copyright 2016 Yosuke Katada
次元削減の手法
user x itemの行列を
• user x 潜在変数(次元数はitem数より少ない)
• 潜在変数 x item
の行列に分解する
<主な次元削減手法>
• 特異値分解
• 非負値行列分解
• 主成分分析
75
76. © 2016 yosuke katada
無断転載・複製・利用を禁ず
特異値分解のざっくりした説明
• 長方形行列の行列分解できるようにしたものが
特異値分解
76
A = UΣV =
T
u1 u2 ・・・
σ
σ
・・・
0
0
1
2
v1 v2 ・・・
T
0
0
0
77. © 2016 yosuke katada
無断転載・複製・利用を禁ず
特異値分解の使いみち
機械学習の分野では次元圧縮の一種
77
ユーザー
(user_id)
商品
(title_id)
U
ユーザー
(user_id)
潜在因子
Σ V
A
レコメンデーションやクラスタリングなど、ユーザー x 商品の行列を作ることがある。
その場合、商品(title_id)は数千から数十万アイテムになることが多く、このような高次元なデータを
より低い次元のデータに圧縮したい時がある。
その時に威力を発揮するのが、特異値分解である
80. copyright 2016 Yosuke Katada
コンテンツベース
80
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
81. copyright 2016 Yosuke Katada
コンテンツマッチ
81
単語に分解
TF-IDFによる
重み付け
類似度の計算
記事タイトル
記事本文
商品タイトル
商品説明文
記
事
商
品
単語A: 17
単語B: 14
単語C: 5
単語D: 5
・
・
・
単語A: 5
単語E: 1
単語F: 1
単語G: 1
単語H: 1
・
・
・
単語A: 1.11
単語B: 0.65
単語C: 0.36
単語D: 0.17
・
・
・
単語A: 3.17
単語E: 0.27
単語F: 0.45
単語G: 0.78
単語H: 0.61
・
・
・
類似度
(コサイン類似度)
0.661637
記事タイトル・本文と商品タイトル・本文を単語に分解し、固有名詞のみを抽出する。そ
の後、特徴的な単語に重みがつくように重みづけを行い、類似度を計算する。これを記
事 x 商品の組み合わせで計算を行い、各記事において上位N件の商品を掲出する。
テキスト
テキスト
テキスト
テキスト
82. copyright 2016 Yosuke Katada
分類器を用いた方法
82
クリック 商品変数1 商品変数2 ・・・ カテゴリ タグ tree1 ・・・ tree100 記事タグ x
商品変数1
・・・
0 AA A, N A 経済
日本経済
3 5 経済_AA
日本経済_AA
1 AB B, I A 経済
日本経済
6 4 経済_AB
日本経済_AB
0 AE K, I, S A 経済
日本経済
3 9 経済_AE
日本経済_AE
0 AR L, O, J A 経済
日本経済
2 4 経済_AR
日本経済_AR
商品関連のタグ 記事関連のタグ タグ化された
定量データ
商品関連タグ x
記事関連タグ
インプット
アウト
プット
予測
クリックの有無をターゲットの変数にして、商品・記事の特徴量の組
み合わせからクリックされるかどうかを予測する方法
83. copyright 2016 Yosuke Katada
最後に少しだけ
83
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-テンソル分解
84. copyright 2016 Yosuke Katada
テンソル分解
84
1. ユーザーを商品とコンテキストの3次元テンソルを作成
2. テンソル分解により3次元テンソルを2次元行列に分解
3. 得られたユーザー x 潜在因子の行列Aをクラスタリングし、そのユーザー属
性を読み取ることで、クラスターを理解する
ユーザー
(user_id)
商品
コンテキスト
(例:平日・休日の時間帯別)
A
ユーザー
潜在因子
B
商品Cコンテキスト
3次元テンソル
要素は時間割合
コア
テンソル