SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
copyright 2016 Yosuke Katada
クラスタリングと
レコメンデーション
堅田
1
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
copyright 2016 Yosuke Katada
Wifi
SSID: WA-GN1
セキュリティ: WPA2-PSK(AES)
キー: zeroshinegi53
本日使うサンプルコード
https://github.com/yosukekatada/python_ml_study
3
copyright 2016 Yosuke Katada
自己紹介
4
堅田 洋資(かただ ようすけ)
現在
データサイエンティスト@白ヤギコーポレーション
職歴
● データ分析コンサルタント@デロイトアナリティクス
● マーケティングアナリスト(インターン)@Williams-Sonoma
● アルゴリズム開発@生体センサスタートアップ
● 事業再生コンサルタント@KPMG
● ブランドマーケティング@Mars
学歴
● University of San Francisco, M.S. in Analytics修了
● 一橋大学商学部卒業(統計学・データサイエンス専攻)
趣味
● スラックライン
copyright 2016 Yosuke Katada
本日のアジェンダ
1. クラスタリング
2. 潜在ディリクレ分配法
3. レコメンデーション
5
copyright 2016 Yosuke Katada
クラスタリング
6
copyright 2016 Yosuke Katada
あなたならどう分ける?
7
以下のようなXとYのデータがあり、これらを散布図にすると右下のようになります。
この時、あなたなら、どんなグループに分けますか?
copyright 2016 Yosuke Katada
クラスタリングとは?
データをグルーピングする機械学習の手法
8
応用例
×
× ×
×
×
×
×
×
××
×
×
×
×
×
×
×
×
×
ユーザーや商品のグループ化
  ・どんなユーザーがいるのか?
copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering (今日はやりません)
・SOM(今日はやりません)
9
copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering
・SOM
10
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
距離例
階層型クラスタリングではデンドログラムを構築することが一つ
のゴール
copyright 2016 Yosuke Katada
最も類似している
2番目に類似している
デンドログラム
12
クラスタリングの結合の過程を木で表現したもの
A B C D E
AB
DE
ABC
ABCDE
この高さは結合したク
ラスター間の距離を
表す
copyright 2016 Yosuke Katada
<考え方>
距離の近いクラスター同士を一つのクラスターで段階
的にまとめていく
クラスター間の距離はどうやって定義する?
階層型クラスタリング
13
copyright 2016 Yosuke Katada
クラスタリングの手法の種類
・階層型クラスタリング
・Hierarchical clustering
・非階層型クラスタリング
・K-Means法
・Spectral clustering
・SOM
14
copyright 2016 Yosuke Katada
非階層型クラスタリング
15
<考え方>
あらかじめいくつのクラスターに分けるのかを決め、
決めた数の塊にサンプルを分割する
5つのクラスターに分類
copyright 2016 Yosuke Katada
KMeans法のアルゴリズム
<K-Means法 手順>
1)はじめにk個のシードを置く
2)各サンプルを最も近いシードと同じクラスターに分類
3)k個のクラスターそれぞれで重心を求め、それを新たな
 シードとして更新する
4)重心の位置が変化しなくなるまで 2) ~ 3) を繰り返す
16
copyright 2016 Yosuke Katada 17
K-Means法のアルゴリズム
< K-Means法のイメージ(k=2の場合)>
サンプルの中から2つ選び、それをシードに
設定
各サンプルについて、最も近いシードと同じ
クラスターに分類
各クラスターの重心を求め、それを新たな
シードとして更新
シードの位置が更新されたので、サンプル
を再び分類
再び各クラスターの重心を求め、シード位
置を更新
…
copyright 2016 Yosuke Katada
改めてKMeans法
KMeans法は、各クラスターに含まれるデータ点からクラスター
の重心までの距離の2乗が最小になるようにすること。この数値
をwithin-cluster sum of squares (WCSS)と言ったりします。
18
3つのクラスターに分類
KMeans法の目的関数
Xi : クラスターiに含まれるデータ全て
x : クラスターiに含まれる1つのデータ
μi : クラスターiの重心
copyright 2016 Yosuke Katada
K-Means法のメリット・デメリット
19
<メリット>
1)計算が速い
2)シンプルで実装しやすい
<デメリット>
1)Kを事前に決める必要がある
2)最初のシードの置き方によって分類結果が異なる
copyright 2016 Yosuke Katada
K-Means++法
20
<K-Means法のデメリット>
1)Kを事前に決める必要がある
2)最初のシードの置き方によって分類結果が異なる
K-Means++法で解消
copyright 2016 Yosuke Katada
K-Means++法
21
K-Means法の初期シードの選択の仕方を工夫した改良版
<初期シードの選択方法>
K-Means法 ランダムに選択
K-Means++法    なるべくシード同士が離
           れるように選択
copyright 2016 Yosuke Katada
<K-Means++法 手順>
1. サンプルの中からランダムに1つ選び、シードとする
2. 1つ前のシードと各データ点との距離を測る。
3. 以下の確率で次のシードを選ぶ
4. シードがk個選ばれるまで 2) を繰り返す
5. k個のシードが選択されたら、K-Means法と同様にシードを更新し
ていく
K-Means++法
22
Σ(各データ点といちばん近いシードまでの距離)^2
(あるデータ点といちばん近いシードまでの距離)^2
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
copyright 2016 Yosuke Katada
やってみよう
ipython notebookを開いて動かして
みよう
24
copyright 2016 Yosuke Katada
最適なクラスター数
K-Means法では事前にクラスター数を決めておく必要あり、クラ
スター数の取り方によって、クラスタリングの精度は左右されて
しまう。
25
いかに最適なクラスター数を探すか?
● Elbow Method
● シルエットプロット
● 階層型クラスタリング
copyright 2016 Yosuke Katada
クラスタリングの結果を考察する概念
• cohesion(凝集性)
• separation(分離性)
26
3つのクラスターに分類
cohesion 高 かつ separation 高
3つのクラスターに分類
cohesion 低 かつ separation 低
copyright 2016 Yosuke Katada
Elbow Method
● 目的関数( = WCSS)が急激に減少し、その後誤差の変化
がなだらかとなるような値をクラスター数として選択
● Elbow Methodは凝集性に着目した方法
目的関数
K
0 1 2 3 4 5 6
クラスター数=3
を選択
27
ひじ(Elbow)のようになってい
る箇所を探す
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)
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つのデータ点
平均シルエットスコア
全サンプルのシルエットスコアの平
均
copyright 2016 Yosuke Katada
例:凝集性・分離性が高いクラスター数が4つ
うまく行っている場合はこんな感じになります。
シルエットプロットを見て気づいた点を挙げましょう。
30
copyright 2016 Yosuke Katada
例: クラスター数がミスマッチの場合
本来あるべきクラスター数より少ないクラスター数の場合。
シルエットプロットを見て気づいた点を挙げましょう。
31
copyright 2016 Yosuke Katada
例:分離が難しい場合
そもそもクラスタリングが難しい場合。
シルエットプロットを見て気づいた点を挙げましょう。
32
copyright 2016 Yosuke Katada
階層型クラスタリングを用いる方法
• 事前に階層型クラスタリングを実施し、その結果からどのくらいのクラスタ数にな
りそうか検討してクラスター数を決定する
• 階層型クラスタリングはデータ数が多いとデンドログラムが見にくいのでサンプリ
ングベースで実施する
33
A B C D E F G H I J K L M N O
クラスター数は
4つくらい
copyright 2016 Yosuke Katada
実務上のクラスター数の選び方のコツ
34
● Elbow Methodやシルエットプロットはクラスタリングしやすい
データを扱わない限り、見た目でわかる綺麗な結果はなかな
か得られないので、あくまで目安として用いる(こだわりすぎな
い)
● クラスター分析の目的に合わせて分析者が解釈可能性、業務
オペレーションに落としやすさ、そしてElbow Methodやシル
エットプロットの結果とのバランスを見て結論を出す
copyright 2016 Yosuke Katada
その他 KMeans法の注意点
• 解釈は人間が行います。
– 各クラスターの中心で解釈
– 決定木を使ったりすることも
• インプットデータのスケールを合わせる
– 目的関数を思い出してください
• クラスターは(超)球面を想定。さらに半径が概
ね同じであることが仮定されている
35
copyright 2016 Yosuke Katada
潜在ディリクレ分配法
36
© 2016 Yosuke Katada
無断転載禁止
ある日、あなたに相談が・・・
あなたは、オンラインニュースアプリ企業のデータサイエンティ
ストです。プロダクトチームから以下のような相談がありました。
• 記事には「政治」「経済」といった大カテゴリは付いているも
のの、さらに中を細かく分けたい
• そうすると閲覧したユーザーの細かい好みがわかったり、も
う少し細かいタグをつけたりできそう
• 記事に詳細なタグが付けられると、閲覧履歴を使ってユー
ザー分析も簡単になるのではという仮説がある
© 2016 Yosuke Katada
無断転載禁止
トピックモデルとは?
記事(文書)データの背後に「トピック」があると想定し、そのト
ピックの組み合わせで記事が生成されていると仮定するモデル
記事(文書)のデータ
ベンチャー
トピック
データ
サイエンス
トピック
AI
トピック
・・・
© 2016 Yosuke Katada
無断転載禁止
トピックモデルとは?
しかし、人間には背後にある「トピック」はわからないので、それ
らの「トピック」を推定するのがトピックモデル
記事(文書)のデータ
?
トピック
?
トピック
?
トピック
・・・
© 2016 Yosuke Katada
無断転載禁止
トピックモデルで使われる手法
• LSI (Latent Semantic Indexing)
• pLSI(Probalistic LSI)
• SVD(特異値分解、Singular Value Decompsition)
• NMF(非負行列分解、Non-Negative Matrix Factorization)
• LDA(潜在ディリクレ分配法、Latent Direichel Allocation)
本講義ではLDAについてお話しします
© 2016 Yosuke Katada
無断転載禁止
手法の話の前に・・・
文書はそのままだと分析できないので、以下のい
テクニックを使って、分析しやすい形に加工する必
要があります。
<加工に関するテクニック>
• 形態素解析
• ベクトル空間モデル
無断転載禁止
形態素解析 = 単語に分割
• 形態素解析: 文章を単語に分解するための解析
© 2016 Shiroyagi Corporation 42
すもももももももものうち
単語に区切る場合、いろいろな切り方がある
• す|も|もも| も|もも|もも|の|うち
• すもも|も|もも|も|もも|の|うち
• すもも|もも|もも|もも|もも|の|うち
すもも も もも も もも の うち
日本語として最も自然な切り方
無断転載禁止
ベクトル空間モデル
© 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
単語の出現頻度を行列の形で表現
無断転載禁止
インプットとアウトプット
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 単語の行列(中身は確率)
無断転載禁止
トピックの解釈は人間
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
各トピックごとに確率が高い単語を見
て、人間がトピックを解釈する
無断転載禁止
文書をトピックに分けるには?
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
各文書ごとにどのトピックで確率がを最
大かを見て分類する
無断転載禁止
やってみよう
• とりあえず動かしてみよう
• 結果を解釈してみましょう
– トピックが見えてきますか?
© 2016 Yosuke Katada
無断転載禁止
LDAで想定していること
今、手元にある以下の文書Aがあります。これを単語で区切っ
たものを文書データAとします。
サッカー日本代表の試合で、かかっていた音楽が最高だった
今手にしている文書データ
サッカー 日本代表 試合 音楽
LDAでは、4つの単語でできた文書データAは幾つかのトピックに
よって生成されたものと想定しています。
どのような過程で生成されたとみなすのかを見ていきましょう。
© 2016 Yosuke Katada
無断転載禁止
フェス
トピックの箱があるとします
• まず、人間には目に見えない「トピックの箱」があり、その箱
の中には「単語カード」が入っていると仮定します。
• 文書データAで1単語目を引くときに、以下の確率で「トピック
の箱」が選ばれるものと想定します。
サッカー
試合
Jリーグ
セリエA
日本代表
ギター
J-POP
ロック
音楽
大統領選源泉徴収
消
費
税
株
価
日経平均
サッカートピック 音楽トピック 経済トピック
選ばれる確率
80%
選ばれる確率
15%
選ばれる確率
5%
© 2016 Yosuke Katada
無断転載禁止
トピックの箱を確率的に選びます
• 1つ目の単語カードを引くために、「トピックの箱」を確率的に
選び、その結果、「サッカー」トピックの箱が選ばれました。
フェス
サッカー
試合
Jリーグ
セリエA
日本代表
ギター
J-POP
ロック
音楽
大統領選源泉徴収
消
費
税
株
価
日経平均
サッカートピック 音楽トピック 経済トピック
このトピックの箱から引く
© 2016 Yosuke Katada
無断転載禁止
トピックの箱から単語カードを引きます
• 次に選ばれた「トピックの箱」に手を入れて、確率的に単語
カードを1枚引きます。
• その結果、「サッカー」の単語カードが選ばれました。
• つまり1単語目は「サッカー」ということになります。
サッカー
試合
Jリーグ
セリエA
日本代表
サッカートピック
サッカー
確率的に単語カードを引く
© 2016 Yosuke Katada
無断転載禁止
単語数だけ繰り返す
• 「トピックの箱」を確率的に選んで、「単語カード」を確率的に
引く、と言う手順を単語の個数繰り返す
• そうすると、単語カードが4枚揃います。
サッカー 日本代表 試合 音楽
引いたカード
サッカー日本代表の試合で、かかっていた音楽が最高だった
生成された文書(今手にしている文書データ)
この生成過程を過程すると、4単語中、3つが「サッカー」トピック、1つが「音楽」トピッ
クなので、75%(=3/4)の確率でサッカートピック、25%の確率で音楽トピックの文書
だということがわかる。
© 2016 Yosuke Katada
無断転載禁止
まとめると、
LDAで想定している文書の生成プロセスは・・・
サッカー 日本代表 試合 音楽 最高
トピック:
サッカー
トピック
音楽
トピック
K・・・
サッカー
トピック
サッカー
トピック
音楽
トピック
K・・・
音楽
STEP1: まずトピックの箱を確率的に選ぶ
STEP2:
STEP1で選んだトピックの箱から単語カードを 1
枚確率的に選ぶ
© 2016 Yosuke Katada
無断転載禁止
実際に人間が見えるのは文書データのみ
サッカー 日本代表 試合 音楽 最高
トピック1:
?
トピック2
?
トピック
K
?
・・・
?
トピック
1
?
トピック
2
?
トピック
3
?
・・・
?
STEP1: まずトピックの箱を確率的に選ぶ
STEP2:
STEP1で選んだトピックの箱から単語カードを 1
枚確率的に選ぶ
人間の目に見えているのは、ここだけ
この部分は人間にはわ
からないので、
ここを推定したい
LDAの目的は、今手元にある文書データAの背景にある生成過程を推定し、その結果と
して文書データAのトピック(今ならサッカートピック)を知ること
© 2016 Yosuke Katada
無断転載禁止
繰り返しになりますが
• 人間が目に見えるのは(生成された)文書デー
タのみ
• 文書生成プロセスを仮定して、目に見えている
文書データから、各「トピックの箱」からどんな単
語カードが出やすいのかを推定しよう、と言うの
がコンセプト
つまり、LDAのインプットは文書 x 単語の行列(要素は出現
回数)のみ。それだけで、生成プロセスを推定しようと言うの
がコンセプト
© 2016 Yosuke Katada
無断転載禁止
LDAを使う上で人間が与える
ハイパーパラメーター
• トピック数: K
• トピックの箱を選ぶ確率をコントロールするハイパーパラ
メータ: α
• 単語カードが引かれる確率をコントロールするハイパーパラ
メーター: β
K, α, βによって結果が異なるが、イメージしにくいの
はαとβなので、次ページでもう少し詳しく説明しま
す。
© 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]
© 2016 Yosuke Katada
無断転載禁止
精度の評価
• (テストデータを用いた)対数尤度
– 0に近いほど良い
• Peplexity
– 小さいほど良いモデル
• Perplexityと人間の解釈しやすさはあまり関係ないという研究もある
https://www.umiacs.umd.edu/~jbg/docs/nips2009-rtl.pdf
Perplexity =
単語の数
対数尤度
exp -
copyright 2016 Yosuke Katada
レコメンデーション
© 2016 Yosuke Katada 59
copyright 2016 Yosuke Katada
こんな画面見たことないですか?
60
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)
copyright 2016 Yosuke Katada
レコメンデーションの種類
62
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
copyright 2016 Yosuke Katada
レコメンデーションの種類
63
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
64
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
65
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
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
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つの
ベクトルの
類似度を測る
● 好みの似ているユーザーは購入する商品やレーティングも似
ていると仮定して類似度の高いユーザーを調べる
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つの
ベクトルの
類似度を測る
copyright 2016 Yosuke Katada
コサイン類似度
69
• コサイン類似度はベクトルの角度を測る方法
• ベクトルのなす角度によって類似度を測定
cos90度 = 0 cos30度 = 0.8
copyright 2016 Yosuke Katada
協調フィルタリングのプロセス
協調フィルタリングのステップは
1. 類似度計算のステップ
2. 予測のステップ
で構成されます。
70
user
ID
item ID
user x itemの
行列
類似度の高いユーザー
もしくは
類似度の高い商品
おすすめする商品
類似度計算のステップ 予測のステップ
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レーティングの合計/類似度の合計を計算します。
copyright 2016 Yosuke Katada
Pythonでちょっとやってみましょう
レコメンデーション.ipynbを開いてみましょう。
72
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
あまり
フィードバックがな
い・・・
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
copyright 2016 Yosuke Katada
次元削減の手法
user x itemの行列を
• user x 潜在変数(次元数はitem数より少ない)
• 潜在変数 x item
の行列に分解する
<主な次元削減手法>
• 特異値分解
• 非負値行列分解
• 主成分分析
75
© 2016 yosuke katada
無断転載・複製・利用を禁ず
特異値分解のざっくりした説明
• 長方形行列の行列分解できるようにしたものが
特異値分解
76
A = UΣV =
T
u1 u2 ・・・
σ
σ
・・・
0
0
1
2
v1 v2 ・・・
T
0
0
0
© 2016 yosuke katada
無断転載・複製・利用を禁ず
特異値分解の使いみち
機械学習の分野では次元圧縮の一種
77
ユーザー
(user_id)
商品
(title_id)
U
ユーザー
(user_id)
潜在因子
Σ V
A
レコメンデーションやクラスタリングなど、ユーザー x 商品の行列を作ることがある。
その場合、商品(title_id)は数千から数十万アイテムになることが多く、このような高次元なデータを
より低い次元のデータに圧縮したい時がある。
その時に威力を発揮するのが、特異値分解である
非負値行列分解
78
• 分解した後の行列の要素がすべて正になるよう
にしたものが非負行列分解
• 自分で何次元に圧縮するかを決める
• 二乗誤差が小さくなるよう分解される
78
X = UV = u1 u2 ・・・ v1 v2 ・・・
T
T
列の数(次元数)は自分で決める
レコメンデーションにおける
非負値行列分解
79
ユーザー
(user_id)
商品
(title_id)
U
ユーザー
(user_id)
V
A
商品
(title_id)
レコメンデーションでは、ユーザー x 商品の行列を
• 「ユーザー」と「潜在変数」の
ユーザーの
潜在変数
商品の潜在変数
ユーザー×商品の行列のような非負行列の分解では、
非負値行列分解の方が解釈しやすい
copyright 2016 Yosuke Katada
コンテンツベース
80
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-Tensor Factorization
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件の商品を掲出する。
テキスト
テキスト
テキスト
テキスト
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
記事関連タグ
インプット
アウト
プット
予測
クリックの有無をターゲットの変数にして、商品・記事の特徴量の組
み合わせからクリックされるかどうかを予測する方法
copyright 2016 Yosuke Katada
最後に少しだけ
83
一口にレコメンデーションと言っても色々あります。
協調フィルタリング
-User × User
-Item × Item
・コンテンツベース レコメンデーション
-コンテンツマッチ
-分類機を用いた手法
・コンテキスト アウェア レコメンデーション
-テンソル分解
copyright 2016 Yosuke Katada
テンソル分解
84
1. ユーザーを商品とコンテキストの3次元テンソルを作成
2. テンソル分解により3次元テンソルを2次元行列に分解
3. 得られたユーザー x 潜在因子の行列Aをクラスタリングし、そのユーザー属
性を読み取ることで、クラスターを理解する
ユーザー
(user_id)
商品
コンテキスト
(例:平日・休日の時間帯別)
A
ユーザー
潜在因子
B
商品Cコンテキスト
3次元テンソル
要素は時間割合
コア
テンソル
copyright 2016 Yosuke Katada
ご清聴ありがとうございました!
良いお年を!
85

Mais conteúdo relacionado

Mais procurados

変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 

Mais procurados (20)

グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
スペクトラル・クラスタリング
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリング
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
 
トピックモデルの基礎と応用
トピックモデルの基礎と応用トピックモデルの基礎と応用
トピックモデルの基礎と応用
 

Semelhante a クラスタリングとレコメンデーション資料

Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
 
Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
Takahiko Ito
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
 

Semelhante a クラスタリングとレコメンデーション資料 (20)

Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編)
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発
 
Abstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminarAbstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminar
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
楽天におけるビッグデータとその活用について
楽天におけるビッグデータとその活用について楽天におけるビッグデータとその活用について
楽天におけるビッグデータとその活用について
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
NLP2021 AI王 解法紹介 8
NLP2021 AI王 解法紹介 8NLP2021 AI王 解法紹介 8
NLP2021 AI王 解法紹介 8
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdf
makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdfmakoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdf
makoto shing (stability ai) - image model fine-tuning - wandb_event_230525.pdf
 
Random Forests
Random ForestsRandom Forests
Random Forests
 
Pythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデルPythonでカスタム状態空間モデル
Pythonでカスタム状態空間モデル
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 
Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdw
 

クラスタリングとレコメンデーション資料

  • 1. copyright 2016 Yosuke Katada クラスタリングと レコメンデーション 堅田 1
  • 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修了 ● 一橋大学商学部卒業(統計学・データサイエンス専攻) 趣味 ● スラックライン
  • 5. copyright 2016 Yosuke Katada 本日のアジェンダ 1. クラスタリング 2. 潜在ディリクレ分配法 3. レコメンデーション 5
  • 6. copyright 2016 Yosuke Katada クラスタリング 6
  • 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
  • 24. copyright 2016 Yosuke Katada やってみよう ipython notebookを開いて動かして みよう 24
  • 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
  • 32. copyright 2016 Yosuke Katada 例:分離が難しい場合 そもそもクラスタリングが難しい場合。 シルエットプロットを見て気づいた点を挙げましょう。 32
  • 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
  • 36. copyright 2016 Yosuke Katada 潜在ディリクレ分配法 36
  • 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 -
  • 59. copyright 2016 Yosuke Katada レコメンデーション © 2016 Yosuke Katada 59
  • 60. copyright 2016 Yosuke Katada こんな画面見たことないですか? 60
  • 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レーティングの合計/類似度の合計を計算します。
  • 72. copyright 2016 Yosuke Katada Pythonでちょっとやってみましょう レコメンデーション.ipynbを開いてみましょう。 72
  • 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)は数千から数十万アイテムになることが多く、このような高次元なデータを より低い次元のデータに圧縮したい時がある。 その時に威力を発揮するのが、特異値分解である
  • 78. 非負値行列分解 78 • 分解した後の行列の要素がすべて正になるよう にしたものが非負行列分解 • 自分で何次元に圧縮するかを決める • 二乗誤差が小さくなるよう分解される 78 X = UV = u1 u2 ・・・ v1 v2 ・・・ T T 列の数(次元数)は自分で決める
  • 79. レコメンデーションにおける 非負値行列分解 79 ユーザー (user_id) 商品 (title_id) U ユーザー (user_id) V A 商品 (title_id) レコメンデーションでは、ユーザー x 商品の行列を • 「ユーザー」と「潜在変数」の ユーザーの 潜在変数 商品の潜在変数 ユーザー×商品の行列のような非負行列の分解では、 非負値行列分解の方が解釈しやすい
  • 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次元テンソル 要素は時間割合 コア テンソル
  • 85. copyright 2016 Yosuke Katada ご清聴ありがとうございました! 良いお年を! 85