More Related Content
More from Akifumi Eguchi (19)
ぞくパタ最終回: 13章「共クラスタリング」
- 4.
13.1
関係データに対する共クラスタリング
共クラスタリングとは?
顧客と商品など、人と人、人とモノのつながりを表す
関係データを上手く扱うための手法
顧客だけ、商品だけのクラスタリングはこれまでも
やってきたが、共クラスタリングでは行・列双方を適
切に並び替えることで、顧客・商品を同時にクラスタ
リングできるようにな。
このように、異なる種類のオブジェクトを同時にクラ
スタリングする手法を共クラスタリングと呼ぶ
- 5.
13.1
関係データの例
1
2
3
1
2
3
4
1 2 3 4
1
2
3
商品
顧
客
オブジェクト間のつながりをエッジとしたグラフで、あるいは、
オブジェクト間にエッジがある時を1、ない時を0とする2値行
列で表現できる。
- 6.
13.1
共クラスタリング色々
From
K-‐means
to
higher-‐way
co-‐clustering:
mul:linear
decomposi:on
with
sparse
latent
factors
h>ps://www.cs.cmu.edu/~epapalex/papers/PapSidBroTSP2011R2.pdf
K-‐means,
ユークリッド距離を基にした共クラスタリング
"blockcluster:
Coclustering
Package
for
Binary,
Categorical,
Con:ngency
and
Con:nuous
Data-‐Sets”
h>ps://cran.r-‐project.org/web/packages/blockcluster/index.html
EMアルゴリズムを基にした共クラスタリング
- 7.
13.1
共クラスタリング実行例
"blockcluster:
Coclustering
Package
for
Binary,
Categorical,
Con:ngency
and
Con:nuous
Data-‐Sets”
h>ps://cran.r-‐project.org/web/packages/blockcluster/index.html
パッケージ解説はこちら:
h>p://qiita.com/siero5335/items/f8e704035d7bdd5965be
EMアルゴリズムを基にした共クラスタリング
- 8.
13.1
共クラスタリング実行例
"blockcluster:
Coclustering
Package
for
Binary,
Categorical,
Con:ngency
and
Con:nuous
Data-‐Sets”
h>ps://cran.r-‐project.org/web/packages/blockcluster/index.html
パッケージ解説はこちら:
h>p://qiita.com/siero5335/items/f8e704035d7bdd5965be
尤度を見ながらクラスタ数を最適化していく
- 9.
13.1
共クラスタリング実行例
"blockcluster:
Coclustering
Package
for
Binary,
Categorical,
Con:ngency
and
Con:nuous
Data-‐Sets”
h>ps://cran.r-‐project.org/web/packages/blockcluster/index.html
パッケージ解説はこちら:
h>p://qiita.com/siero5335/items/f8e704035d7bdd5965be
つまりクラスタ数は自分で決めないとだめ
- 10.
13.1
共クラスタリング色々
From
K-‐means
to
higher-‐way
co-‐clustering:
mul:linear
decomposi:on
with
sparse
latent
factors
h>ps://www.cs.cmu.edu/~epapalex/papers/PapSidBroTSP2011R2.pdf
K-‐means,
ユークリッド距離を基にした共クラスタリング
"blockcluster:
Coclustering
Package
for
Binary,
Categorical,
Con:ngency
and
Con:nuous
Data-‐Sets”
h>ps://cran.r-‐project.org/web/packages/blockcluster/index.html
EMアルゴリズムを基にした共クラスタリング
本書
無限関係モデル(IRM)による共クラスタリング
ノンパラベイズに基づいてるからクラスタ数も自動決定できるよ!
顧客と商品の例なら観測データから同時にクラスタリングすることで、
どんな顧客がどんな商品を買うかの関係を自動抽出することに相当
- 12. 13.2
無限関係モデル
(IRM)
当
K:
顧客の総数
L:
商品の総数
R:
顧客・商品の関係を表す行列
Rkl:
Rの(k,
l)成分
Rkl
=1:
顧客kが商品lを購入した
Rkl
=0:顧客kが商品lを購入しなかった
S1:
顧客に対する潜在変数
S2:
商品に対する潜在変数
c1:
顧客クラスタの数
c2:
商品クラスタの数
ω1
i:
i番目の顧客クラスタ
ω2
j:
j番目の商品クラスタ
S1
k:
顧客kの所属する顧客クラスタ
S2
l:
商品lの所属する商品クラスタ
S1
k
=
ω1
i:
顧客kが顧客クラスタω1に属する
S2
l:
=ω2
j:
商品lが顧客クラスタω2
jに属する
θij
=
θ(ω1
i,
ω2
j):
(i,
j)のパラメータブロック
def
- 13. 13.2
無限関係モデル
(IRM)
s!
|!α!~!"#(α)
s!|!α!~!"#(α)
!"#!! = 1,…,!,
!"#!! = 1,…,!,
CRPの事前分布で顧客クラスタS1、
商品クラスタS2が独立に分割される
- 14. 13.2
無限関係モデル
(IRM)
s!
|!α!~!"#(α)
s!|!α!~!"#(α)
!"#!! = 1,…,!,
!"#!! = 1,…,!,
!!"|!!
!
=!ω!
!
,!!
!
=!ω!
!
,Θ~!!"#$(!!":!θ!")
!!
!
= ω!
!
, !!
!
= ω!
!
θ !!
!
, !!
!
= θ ω!
!
, ω!
!
=!θ!"
CRPの事前分布で顧客クラスタS1、
商品クラスタS2が独立に分割される
となり、顧客商品の関係を表す行列Rklが
パラメータθijのベルヌーイ分布Bern(Rkl:θij)から生成される
- 15. 13.2
無限関係モデル
(IRM)
s!
|!α!~!"#(α)
s!
|!α!~!"#(α)
!"#!! = 1,…,!,
!"#!! = 1,…,!,
θ !!
!
,!!
!
|!,!!~!"(!,!)
!!"|!!
!
=!ω!
!
,!!
!
=!ω!
!
,Θ~!!"#$(!!":!θ!")
!!
!
= ω!
!
, !!
!
= ω!
!
θ !!
!
, !!
!
= θ ω!
!
, ω!
!
=!θ!"
となり、顧客商品の関係を表す行列Rklが
パラメータθijのベルヌーイ分布Bern(Rkl:θij)から生成される
θijは区間[0,1]の値を取るので、θijの事前分布として
パラメータa,
bのベータ分布Be(a,b)を取る
CRPの事前分布で顧客クラスタS1、
商品クラスタS2が独立に分割される
- 17. 13.2
無限関係モデル
(IRM)
商品
顧
客
共
ク
ラ
ス
タ
リ
ン
グ
ω1
1
ω2
1
ω3
1
ω4
1
ω1
2
ω2
2
ω3
2
15人の顧客が4つ、10種の商品が3つのクラスタに分割される
- 18. 13.2
無限関係モデル
(IRM)
商品
顧
客
共
ク
ラ
ス
タ
リ
ン
グ
i
=
1
2
3
4
j
=1
2
3
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0
θij
=
0.7
θij
=
0.7
θij
=
0.1
θij
=
0.9
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0.1
顧客クラスタi,
商品クラスタjの直積からなる各(i,
j)
ブロックに対し、
θijの値(0≤θij≤1)がベータ分布から決定される
- 19. 13.2
無限関係モデル
(IRM)
商品
顧
客
共
ク
ラ
ス
タ
リ
ン
グ
i
=
1
2
3
4
j
=1
2
3
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0
θij
=
0.7
θij
=
0.7
θij
=
0.1
θij
=
0.9
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0.1
θ12の大半は1
θ12
=
0.9よりRklが0.9の確率で1を発生させるベルヌーイ分布から決まるため
θijは顧客クラスタω1
iと商品クラスタω2
jの関係を表す確率に相当する。
- 20. 13.2
無限関係モデル
(IRM)
商品
顧
客
共
ク
ラ
ス
タ
リ
ン
グ
i
=
1
2
3
4
j
=1
2
3
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0
θij
=
0.7
θij
=
0.7
θij
=
0.1
θij
=
0.9
θij
=
0.2
θij
=
0.9
θij
=
0.1
θij
=
0.1
ベータ分布のパラメータa,
bの値を変えることでθijの値が[0,1]の範囲で
変化する。このため、α,
a,
bの値を変えることでIRMからさまざまな関係
データ行列を生成することができる。
- 22. 13.3
IRMの学習
各オブジェクトの所属クラスタ
(s1,
s2)
が既知であれば、その情報
と観測データから共クラスタリングが可能だが、実際に既知なの
は観測データのみ
IRMの学習は、観測データの背後にある共クラスタリング構造(s1,
s2)
を、観測データとIRMの生成モデルから推定すること
- 23. 13.3
IRMの学習
各オブジェクトの所属クラスタ
(s1,
s2)
が既知であれば、その情報
と観測データから共クラスタリングが可能だが、実際に既知なの
は観測データのみ
IRMの学習は、観測データの背後にある共クラスタリング構造(s1,
s2)
を、観測データとIRMの生成モデルから推定すること
具体的には、観測データRが得られた下で、下記で示されたパラ
メータを積分消去して得られたs1,
s2の事後確率を最大化するs1,
s2
を求める問題に帰着
! !!, !! ! =!
! ! !!, !! ! !! !(!!)
!(!)
- 24. 13.3
IRMの学習
各オブジェクトの所属クラスタ
(s1,
s2)
が既知であれば、その情報
と観測データから共クラスタリングが可能だが、実際に既知なの
は観測データのみ
IRMの学習は、観測データの背後にある共クラスタリング構造(s1,
s2)
を、観測データとIRMの生成モデルから推定すること
具体的には、観測データRが得られた下で、下記で示されたパラ
メータを積分消去して得られたs1,
s2の事後確率を最大化するs1,
s2
を求める問題に帰着
ここで、s1,
s2の事前分布P(s1),
P(s2)はいずれもCPR(α)
ディリクレ過程混合モデルに対するギブスサンプリングで
(s1,
s2)
を逐次サンプリングし、P(s1,
s2|R)を最大化する(s1,
s2)を解とする
! !!, !! ! =!
! ! !!, !! ! !! !(!!)
!(!)
- 25. 13.3
IRMの学習:
用語追加
当
K:
顧客の総数
L:
商品の総数
R:
顧客・商品の関係を表す行列
Rkl:
Rの(k,
l)成分
Rkl
=1:
顧客kが商品lを購入した
Rkl
=0:顧客kが商品lを購入しなかった
S1:
顧客に対する潜在変数
S2:
商品に対する潜在変数
c1:
顧客クラスタの数
c2:
商品クラスタの数
ω1
i:
i番目の顧客クラスタ
ω2
j:
j番目の商品クラスタ
S1
k:
顧客kの所属する顧客クラスタ
S2
l:
商品lの所属する商品クラスタ
S1
k
=
ω1
i:
顧客kが顧客クラスタω1に属する
S2
l:
=ω2
j:
商品lが顧客クラスタω2
jに属する
θij
=
θ(ω1
i,
ω2
j):
(i,
j)のパラメータブロック
def
Rk,+:顧客kの全商品に対する購買情報
R-‐k,+:
RからRk,+を除いた余りの要素集合
S1
-‐k:
S1からS1
kを引いた余りの要素集合
n1
i:
顧客クラスタω1
iに属するk以外の顧客数
θi,+:
(i,j)ブロックのパラメータ集合
- 27. 13.3
IRMの学習:
事後確率右辺第1項
! !!
!
=!ω!
!
!!!
!
!!
!
! − 1 + α
α
! − 1 + α
このs1
kをギブスサンプリングするための事後確率は以下の通り
!!
!
=!ω!
!
!!,!!, !!!
!
, !!, !!!,! ∝ !! !!
!
=!ω!
!
!!!
!
!(!!,!!|!!
!
=!ω!
!
, !!, !!!,!)
既存クラスタ
新規クラスタ
- 28. (!!,!!|!!
!
=!ω!
!
, !!, !!!,!) ∝
!!
!
=!ω!
!
!!,!!, !!!
!
, !!, !!!,! ∝ !! !!
!
=!ω!
!
!!!
!
!(!!,!!|!!
!
=!ω!
!
, !!, !!!,!)
13.3
IRMの学習:
事後確率右辺第2項
このs1
kをギブスサンプリングするための事後確率は以下の通り
!(
!
!!" !!
!
=!ω!
!
, !!, θ!,! !(θ!,!|!!
!
=!ω!
!
, !!!
!
, !!, !!!,!)!θ!,!
!(
!
!!" !!
!
=!ω!
!
, !!, θ!,! !!(θ!,!)!θ!,!
既存クラスタ
新規クラスタ
- 29. !(
!
!!" !!
!
=!ω!
!
, !!, θ!,! !(θ!,!|!!
!
=!ω!
!
, !!!
!
, !!, !!!,!)!θ!,!
(!!,!!|!!
!
=!ω!
!
, !!, !!!,!) ∝
!!
!
=!ω!
!
!!,!!, !!!
!
, !!, !!!,! ∝ !! !!
!
=!ω!
!
!!!
!
!(!!,!!|!!
!
=!ω!
!
, !!, !!!,!)
13.3
IRMの学習:
事後確率右辺第2項,
尤度項
このs1
kをギブスサンプリングするための事後確率は以下の通り
!(
!
!!" !!
!
=!ω!
!
, !!, θ!,! !!(θ!,!)!θ!,!
既存クラスタ
新規クラスタ
!
!
!!" !!
!
= ω!
!
, !!
, θ!,! =! !
!!
(!!"|θ!")!!
!
(!).!!
!
(!)
= θ!"
!(!,!)(!,!)
!
(1 − θ!")!(!,!)(!,!)
尤度項
- 30. 13.3
IRMの学習:
事後確率右辺第2項,
尤度項
!
!
!!" !!
!
= ω!
!
, !!
, θ!,! =! !
!!
(!!"|θ!")!!
!
(!).!!
!
(!)
= θ!"
!(!,!)(!,!)
!
(1 − θ!")!(!,!)(!,!)
. δ!
!
(!)δ!
!
(!)
1
(s1
k
=
ω1
i)
otherwise
1
(s2
l
=
ω2
j)
otherwise
! !,! !,! = !!" δ!
!
(!) δ!(!)
! !,! !,! =! (1 − !!") δ!
!
(!) δ!(!)
尤度項
- 31. 13.3
IRMの学習:
事後確率右辺第2項,
尤度項
!
!
!!" !!
!
= ω!
!
, !!
, θ!,! =! !
!!
(!!"|θ!")!!
!
(!).!!
!
(!)
= θ!"
!(!,!)(!,!)
!
(1 − θ!")!(!,!)(!,!)
. δ!
!
(!)δ!
!
(!)
1
(s1
k
=
ω1
i)
otherwise
1
(s2
l
=
ω2
j)
otherwise
n(k,+)(i,j):
商品ω2
jに属する商品のうち顧客ω1
iに属する顧客kが買った商品数
n(k,+)(i,j):
商品ω2
jに属する商品のうち顧客ω1
iに属する顧客kが買わなかった
商品数
! !,! !,! = !!" δ!
!
(!) δ!(!)
! !,! !,! =! (1 − !!") δ!
!
(!) δ!(!)
- 32. !(
!
!!" !!
!
=!ω!
!
, !!
, θ!,! !(θ!,!|!!
!
=!ω!
!
, !!!
!
, !!
, !!!,!)!θ!,!
既存クラスタ
13.3
IRMの学習:
既存クラスタ右辺第2項
! θ!,! !!
!
=!ω!
!
, !!!
!
, !!, !!!,!
=! θ!" !!
!
=!ω!
!
, !!!
!
, !!
, !!!,!
!
=!
P(!!!,!|!!!!
!
, !!
, θ!")!(θ!")
P(!!!,!|!!!!
!
, !!, θ!")!(θ!")!θ!"
!
=!
( P !!!! θ!"
!!!(!) !!(!)
!!!!! )! !(θ!")
( P !!!! θ!"
!!!(!) !!(!)
!!!!! )! !(θ!")!θ!"!
ここで、p(θij)
=
Be(θij;
a,b)とすると、
!(θ!"|!!
!
=!ω!
!
, !!, !!!,!) = !"(θ!"; ! !,! !,! + !, ! !,! !,! + !)
- 33. = θ!"
!(!,!)(!,!)
!
(1 − θ!")!(!,!)(!,!)
13.3
IRMの学習:
既存クラスタ右辺第2項
!(θ!"|!!
!
=!ω!
!
, !!, !!!,!) = !"(θ!"; ! !,! !,! + !, ! !,! !,! + !)
!(
!
!!" !!
!
=!ω!
!
, !!
, θ!,! !(θ!,!|!!
!
=!ω!
!
, !!!
!
, !!
, !!!,!)!θ!,!
上記を下式に代入すると
!(!!,!!|!!
!
=!ω!
!
, !!
, !!!,!)
=
θ!"
! !,! !,! !!!!
(1 − θ)! !,! !,! !!!!!θ!"
!(! !!,! !,! + !, ! !!,! !,! + !)
!
=
!(! !,! !,! + !, ! !,! !,! + !)
!(! !!,! !,! + !, ! !!,! !,! + !)
! Bはベータ分布
ωiが既存クラスタのとき
- 34. 13.3
IRMの学習:
新規クラスタ
!(
!
!!" !!
!
=!ω!
!
, !!
, θ!,! !!(θ!,!)!θ!,!
!(!!,!!|!!
!
=!ω!
!
, !!
, !!!,!)
= θ!"
!(!,!)(!,!)
!
(1 − θ!")!(!,!)(!,!)
!(θ!"|!!
!
=!ω!
!
, !!, !!!,!) = !"(θ!"; ! !,! !,! + !, ! !,! !,! + !)
上記を下式に代入すると
ωiが新規クラスタのとき
=
!(! !,! !,! + !, ! !,! !,! + !)
!(!, !)
!
- 35. 13.3 IRMの学習: S1
k, S2
lの事後確率
!(!!
!
= ω!
!
|!!!,!!, !!!
!
, !!
, !!!,!) ∝
!!
!
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(! !!,! !,! + !, ! !!,! !,! + !)
α
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(!, !)
既存クラスタ
新規クラスタ
S1
kの事後確率
- 36. 13.3 IRMの学習: S1
k, S2
lの事後確率
!(!!
!
= ω!
!
|!!!,!!, !!!
!
, !!
, !!!,!) ∝
!!
!
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(! !!,! !,! + !, ! !!,! !,! + !)
α
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(!, !)
!(!!
!
= ω!
!
|!!!,!!, !!!
!
, !!
, !!,!!) ∝
!!
!
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(! !,!! !,! + !, ! !,!! !,! + !)
α
! − 1 + α
!(! !,! !,! + !, ! !,! !,! + !)
!(!, !)
既存クラスタ
新規クラスタ
既存クラスタ
新規クラスタ
S2
lの事後確率
S1
kの事後確率
- 37. 13.3
IRMによる共クラスタリングアルゴリズム
入力: 関係データ行列R
出力: 行・列オブジェクトの所属クラスタを表す潜在変数
s1={s1
1... s1
K}, s2={s2
1... s2
L}, 行・列クラスタ数c1, c2
Step1: 初期設定
・s1, s2を初期化(行・列クラスタ数をc1, c2とする)
・事後確率の最大値をPmax <- 0とする
- 38. 13.3
IRMによる共クラスタリングアルゴリズム
入力: 関係データ行列R
出力: 行・列オブジェクトの所属クラスタを表す潜在変数
s1={s1
1... s1
K}, s2={s2
1... s2
L}, 行・列クラスタ数c1, c2
Step1: 初期設定
・s1, s2を初期化(行・列クラスタ数をc1, c2とする)
・事後確率の最大値をPmax <- 0とする
Step2: 所属クラスタの更新
・行オブジェクトkの所属クラスタs1
K更新のためにkをクラスタ
から除外する
・空きクラスタが発生すればc1 <- c1-1として取り除き、i以降の
クラスタインデックスを1減らす
・ からs1
Kを確率的に求める
・列についても同様にクラスタを更新する
!(!!
!
= ω!
!
|!!!,!!, !!!
!
, !!
, !!!,!) ∝
- 39. 13.3
IRMによる共クラスタリングアルゴリズム
Step3: 事後確率最大化
! !!
, !!
! =!
! ! !!, !! ! !! !(!!)
!(!)
・今のs1, s2から下式を使って事後確率vを計算する
! !!
, !!
! !∝ ! !!
!!
!(!|!!
, !!
)
= ! !! !! !(!!" θ!" !! θ!! !θ!!
!!
!!!
!!
!!!
= !
v > Pmaxなら(事後確率の最大値が更新されたら)
Pmax <- v, s1<- {s1
1... s1
K}, s2<- {s2
1... s2
L}
それ以外ならPmax, s1, s2 を保持する
- 40. 13.3
IRMによる共クラスタリングアルゴリズム
Step3: 事後確率最大化
! !!
, !!
! =!
! ! !!, !! ! !! !(!!)
!(!)
・今のs1, s2から下式を使って事後確率vを計算する
! !!
, !!
! !∝ ! !!
!!
!(!|!!
, !!
)
= ! !! !! !(!!" θ!" !! θ!! !θ!!
!!
!!!
!!
!!!
= !
v > Pmaxなら(事後確率の最大値が更新されたら)
Pmax <- v, s1<- {s1
1... s1
K}, s2<- {s2
1... s2
L}
それ以外ならPmax, s1, s2 を保持する
Step4: 収束判定
・Pmaxが更新されなくなったらギブスサンプリング終了
・更新されるなら2に戻る