LDA等のトピックモデル2. トピックモデルのアウトプット
言葉
トピック
言葉
文書 (または顧客)
トピックの定義
ぞれぞれのトピックに対してどうい
う言葉が大事
トピック
文書 (または顧客)
トピックの割合
それぞれのユーザに
ついて、どういうトピッ
クが大事
2
5. 履歴の概要
●LDA(2003)
最初の本物のトピックモデル
ベイズ統計フレームワーク
ある言葉
文書に トピックに
のトピック 言葉
トピックの分布 言葉の分布
ハイパー ハイパー
パラメーター パラメーター
出典: http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
言葉数 文書数 トピック数
5
7. LDAツール: MALLET
MALLETとは、「MAchine Learning for Language Toolkit」
http://mallet.cs.umass.edu/index.php
Andrew McCallum, of the University of Massachusetts Amherst
無料、オープンソース、Javaベース
7
9. ベイズ統計の基本原則
考え方:データの構造について強気で仮説を立つ
E → H の代わりに、H → E をモデル化する
H E
E: データ、観測出来る情報 例えば: 文書群
H: 隠れてる情報 例えば:トピックの定義、文書ごとのトピック割合
:生成モデル、全ての情報の構造 (仮説に基づく)
計算したいこと: P( H | E)
データから、トピックを計算
でも、そのままで計算しにくい
𝑷(𝑯)
ベイズルール: P(H | E) = * P(E | H) ∝ P(H) * P(E | H)
𝑷(𝑬)
事後確率 事前確率 尤度
仮説する 生成モデルから
簡単で計算する
9
11. LDA生成モデル(例)
For (1:トピック数) :
トピックを生成
トピックID キャンペーン 限定 日焼け 肌 風呂 。。。
1 12% 8% 0.6% 0.2% 1.2%
2 1.3% 0.6% 9% 14% 2%
3 0.3% 0.8% 0.6% 2% 16%
各トピック= 全ての有り得る言葉に対しての確率分布
11
12. LDA生成モデル(例)
For (1:トピック数) :
トピックを生成
トピックID キャンペーン 限定 日焼け 肌 風呂 。。。
1 12% 8% 0.6% 0.2% 1.2%
2 1.3% 0.6% 9% 14% 2%
3 0.3% 0.8% 0.6% 2% 16%
For each文書 :
文書のトピック分布を生成
文書 トピック1 トピック1 トピック3
1 56% 24% 20%
12
13. LDA生成モデル(例)
For (1:トピック数) :
トピックを生成
トピックID キャンペーン 限定 日焼け 肌 風呂 。。。
1 12% 8% 0.6% 0.2% 1.2%
2 1.3% 0.6% 9% 14% 2%
3 0.3% 0.8% 0.6% 2% 16%
For each文書 :
文書のトピック分布を生成
文書 トピック1 トピック2 トピック3
1 56% 24% 20%
この分布によりランダム抽出
For each 言葉 :
トピックをランダムで選択: トピック1
13
14. LDA生成モデル(例)
For (1:トピック数) :
トピックを生成
トピックID キャンペーン 限定 日焼け 肌 風呂 。。。
1 12% 8% 0.6% 0.2% 1.2%
2 1.3% 0.6% 9% 14% 2%
3 0.3% 0.8% 0.6% 2% 16%
For each文書 : この分布によりランダム抽出
文書のトピック分布を生成
文書 トピック1 トピック2 トピック3
1 56% 24% 20%
For each 言葉 :
トピックをランダムで選択: トピック1
言葉をランダムで選択: “限定”
14
15. モンテカルロの基本原則
P(β 、 θ 、 Z | W) を計算したい。
それは多次元と連続値の確率密度なので正しく計算出来ない
→ サンプリングを使って確率密度を近似する
For each サンプル:
生成モデルを使って{β 、 θ 、 Z}を生成
生成モデルを元に生成された{β、 θ、 Z}の事前確率を計算 → P (β、 θ、 Z )
生成モデルと{β 、 θ 、 Z}により W の尤度を計算 → P (W | β、 θ、 Z )
事前確率と尤度からサンプルの事後確率を計算 P(β 、 θ 、 Z | W) ∝ P (β、θ、Z) * P (W | β、θ、Z )
サンプルが多かったら多いほど事後確率の分布に近づく
出典: http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
15
17. なぜ 「LDA」?
For (1:トピック数) :
トピックを生成 β Dirichlet 分布
For each文書 :
文書のトピック分布を生成 θ Dirichlet 分布
For each 言葉 :
トピックをランダムで選択 Z Categorical 分布
言葉をランダムで選択 W Categorical 分布
出典: http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
17
18. Categorical分布とは?
For (1:トピック数) :
トピックを生成 β Dirichlet 分布
For each文書 :
文書のトピック分布を生成 θ Dirichlet 分布
For each 言葉 :
トピックをランダムで選択 Z Categorical 分布
言葉をランダムで選択 W Categorical 分布
トピックID キャンペーン 限定 日焼け 肌 風呂 。。。
1 x1 = 12% x2 = 8% x3 = 0.6% x4 = 0.2% x5 = 1.2%
K値があり得る。 K=言葉種類の全体数
全ての値 i に対して、確率 xi がある。
確率分布なので:
x1 + x2 + x3 + 。。。 + xk = 1
18
19. Dirichlet分布とは?
For (1:トピック数) :
トピックを生成 β Dirichlet 分布
For each文書 :
文書のトピック分布を生成 θ Dirichlet 分布
For each 言葉 :
トピックをランダムで選択 Z Categorical 分布
言葉をランダムで選択 W Categorical 分布
Categorical 分布を生成する為
⇒ 確率分布の確率分布 (!)
キャンペーン 限定 日焼け 肌 風呂 。。。
x1 = 12% x2 = 8% x3 = 0.6% x4 = 0.2% x5 = 1.2% 0.3%
x1 = 1.3% x2 = 0.6% x3 = 9% x4 = 14% x5 = 2% 0.7%
x1 = 0.3% x2 = 0.8% x3 = 0.67% x4 = 2% x5 = 16% 0.2%
Dirichlet式
有り得る {x1, … xK}
のスペース
確率密度
19