Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
無限関係モデル
続・わかりやすいパターン認識
第13章「共クラスタリング」より
2017/9/20 @shuyo
乱雑なパターン
• 規則性ありそうな、なさそうな
0 1 0 0 0 1 1 1 0 0 0 0 1 1 0
0 1 0 0 1 1 1 0 1 0 0 0 0 1 0
1 0 1 0 1 0 0 0 0 1 1 0 1 0 0
0 0 0 1 1 1 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 1 0 1 0 0
0 0 0 1 1 0 0 0 0 0 0 1 0 0 1
1 0 1 0 0 0 0 0 0 1 1 0 1 1 0
0 1 0 1 0 1 1 1 1 0 0 0 0 1 0
0 1 0 0 0 1 0 0 0 0 1 0 1 1 0
0 1 0 0 0 1 0 0 1 0 0 0 0 1 0
1 0 0 0 1 1 1 0 1 0 0 1 0 1 0
0 1 0 1 0 0 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 0 0 1 1 0
0 0 0 1 1 1 0 1 0 0 0 1 0 0 1
0 0 0 1 1 0 0 1 0 0 0 1 1 1 1
例えば
顧客
例えば
商品
買ったら 1
クラスタリング
• 縦横それぞれに、
うまくクラスタ番号をつけて、
3 1 3 0 0 2 1 0 1 3 3 0 3 2 0
1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 0
1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0
2 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0
0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0
2 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0
0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1
2 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0
1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0
1 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0
1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0
1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0
0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0
2 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0
0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1
0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1
クラスタ順に並べ替えると
• 規則性ありそう!
0 0 0 0 0 1 1 1 2 2 3 3 3 3 3
0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0
0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1
1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0
1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0
1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1
1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0
1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0
2 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
各群ごとに
買いそうな
商品がわかる
関係データ解析
• 2種類(以上)の対象間の「関係」を解析し、
対象/関係について分類や予測などを行う
– 関係=データの組
• 重みなし(リンクの有無 0/1 のみ) or あり
– 関係を要素に持つ関係行列(テンソル)で表現
と の関係
• (同等な二部グラフで表現することも)
協調フィルタリング
• 関係データ解析の一種
– 今回の対象外だが一応紹介
• 関係=ユーザと商品
– ユーザ i が商品 j を購入したら
• 目的=ユーザの興味を持つ商品を予測
– ユーザ i に対し となる商品 j を知りたい
• 解法=行列分解など
分析したい関係データは
いっぱいある
• 文書 - 単語
• 単語 - 文脈
• 山 - 植物や動物
• ユーザ - 利用機能や購入履歴
• ユーザ - ユーザの関係(フォローなど)
• etc...
共クラスタリング
• 関係行列をもとに、2軸それぞれクラスタ
リングする手法
0 1 0 0 0 1 1 1 0 0 0 0 1 1 0
0 1 0 0 1 1 1 0 1 0 0 0 0 1 0
1 0 1 0 1 0 0 0 0 1 1 0 1 0 0
0 0 0 1 1 1 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 1 0 1 0 0
0 0 0 1 1 0 0 0 0 0 0 1 0 0 1
1 0 1 0 0 0 0 0 0 1 1 0 1 1 0
0 1 0 1 0 1 1 1 1 0 0 0 0 1 0
0 1 0 0 0 1 0 0 0 0 1 0 1 1 0
0 1 0 0 0 1 0 0 1 0 0 0 0 1 0
1 0 0 0 1 1 1 0 1 0 0 1 0 1 0
0 1 0 1 0 0 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 0 0 1 1 0
0 0 0 1 1 1 0 1 0 0 0 1 0 0 1
0 0 0 1 1 0 0 1 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 2 2 3 3 3 3 3
0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0
0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1
1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0
1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0
1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1
1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0
1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0
2 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
共クラスタリング
• 各クラスタ ごとの生起確率
– 縦軸のクラスタを 、横軸のを と表す
• 各データの所属クラスタ
• データ の生起確率
– ただし
0 0 0 0 0 1 1 1 2 2 3 3 3 3 3
0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0
0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1
1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0
1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0
1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1
1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0
1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0
2 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
クラスタ数を
いくつにすればいい?
無限関係モデル(IRM)
[Kemp+ 2006]
• クラスタを無限分割モデルから生成
– パラメータと同時にクラスタ数も学習
– クラスタ数をあらかじめ決めなくて良い
• 無限分割モデル
– Hoppe の壺、中華料理店過程(CRP)
Hoppe の壺
1. 最初に壺に黒玉が1つ入っている
2. 壺から玉を一つ取り出したとき、
– それが黒なら新しい色の玉を加えて一緒に戻す
– それが黒以外なら、同じ色の玉を加えて一緒に戻す
– 黒玉には重み 、それ以外には重み 1 を持たせて、
選択率は重みに応じて決める
3. 2 に戻ってくり返し
n番目に、
色玉を引く確率
各色玉の数
黒玉を引く確率
中華料理店過程(CRP)
• Hoppe の壺と同等なので略
– 「色」がテーブルに、玉が客になる
• 壺や CRP で何がうれしい?
– 任意のクラスタ数に非ゼロの確率をわりあてられ
る
– 事後分布からのサンプリングができる
• → ベイズモデルを MCMC で解ける!
• CRP の類を事前分布に採用したモデルを
ノンパラベイズと呼ぶ
あらためて Notation
• :縦データ数(例:顧客数)
• :横データ数(例:商品数)
• 例:顧客 が商品 を購入した/しない
• : 顧客の 番目のクラスタ
• : 商品の 番目のクラスタ
• :顧客 のクラスタ
• :商品 のクラスタ
IRM の同時分布(生成モデル)
• ベルヌーイ分布
•
– ベルヌーイ分布 の共役事前分布
• はクラスタ割り当ての事前分布
Collapsed Gibbs Sampling
(周辺化ギブスサンプリング)
• クラスタの推定
• パラメータ はいらないので、周辺化
• 以外を止めて、全条件付き事後分布からサンプリング
佐藤一誠「ノンパラメトリック
ベイズ」での訳語
ぞくパタでは「崩壊型」といってる
全条件付き事後分布の計算
– はベータ関数
クラスタ に属す の個数 を除く
,
,
クラスタ で である個数
,
,
クラスタ で である個数
※ぞくパタ13章の数式には間違いがあるので注意
http://d.hatena.ne.jp/n_shuyo/20160203/infinite_relational_model
数え方
• の1/0の個数
• 行除く
• クラスタ 行
0 0 1 0 0 1 1 0 1 1 0 0 0 0 1
0 1 0 0 0 1 1 1 1 1 0 0 0 0 0
1 0 1 0 0 1 1 1 1 1 0 0 0 0 0
k 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1
0 0 0 0 0 1 0 1 1 1 0 0 0 0 0
0 1 0 1 0 0 1 1 1 1 1 0 0 0 0
(i, j)
でも……
本当に食わせたいデータは
0/1 ではなかった……
ポアソン分布に拡張しちゃおう!
•
↓
•
– の分布をベルヌーイ分布からポワソン分布へ
– ポアソン分布の共役事前分布はガンマ分布
• きれいな共役事前分布があれば、事後分布が静的に計算できる
非負整数
0/1
ポアソン分布版 事後分布
,
,
クラスタ の の合計
,
,
クラスタ の の個数
実装
• https://github.com/shuyo/iir/blob/master/clustering/irm.py
– 公開できないデータで実験したので、結果は略
– 実装は「だいぶめんどくさい LDA」なイメージ
• でも は毎回数えている……
– ポアソン分布版は PoissonIRM クラス
• ポアソン分布が外れ値に弱いため、外れ値があると1要
素のみのクラスタに分かれてしまう……
• ロバストにしたいところだが(負の二項分布とか)、きれい
な共役事前分布がないと簡単なアルゴリズムに落とせ
ない
References
• [石井,上田 2014] 続・わかりやすいパ
ターン認識
• [Kemp+ 2006] Learning Systems of
Concepts with an Infinite Relational
Model

More Related Content

無限関係モデル (続・わかりやすいパターン認識 13章)