パターン認識 04 混合正規分布
TRANSCRIPT
Rで学ぶデータサイエンス5パターン認識
第5章 混合分布モデル
2011/07/02
TwitterID:sleipnir002
R一人勉強会のご紹介
Rで学ぶデータサイエンス 5パターン認識(著)金森敬文, 竹之内高志, 村田昇, 金明哲共立出版今ならデモスクリプトがダウンロードできる!
http://www.kyoritsu-pub.co.jp/service/service.html#019256
第1章判別能力の評価 Done第2章 k-平均法第3章階層的クラスタリング第4章混合正規分布モデル第5章判別分析第6章ロジスティック回帰第7章密度推定第8章 k-近傍法第9章学習ベクトル量子化第10章決定木第11章サポートベクターマシン第12章正則化とパス追跡アルゴリズム第13章ミニマックス確率マシン第14章集団学習第15章 2値判別から多値判別へ
彼女いない暦の5年8ヶ月の不細工でモテな私が
あのかわいい女の子を
たったの3ヶ月でGET!!
はっと息を飲むようなあの美人がこの方法でRでパターン認識ができるように、その結果、驚愕の真実が!
さぁ、今すぐAmazonでクリック!!
前回のあらすじ
• 前回は第2 回としてK-means分析を学んだよ!
• K-Meansのクラスタ数Kを推定する方法
– カーネル主成分分析による可視化
– ギャップ統計量による推定
クラスタ数K
ギャップ統計量
kk
k
kk LL
L
LG log'log
'log
元のデータ カーネル主成分
第5章の目的
• キーワード
–混合分布
– EMアルゴリズム
– AIC、BIC
混合分布による教師なしクラスタリングEMアルゴリズムによるモデル推定
混合正規分布によるクラスタリングを理解する
混合正規分布とは(1)
• 混合正規分布とは複数の正規分布を混ぜあわせた物
M
m
mmm xxp1
),;();(
混合正規分布とは(2)
• ちなみにπも確率
• θはパラメータ
},...,1{,0,1; Mmm
m
mm
M
m
mmm xxp1
),;();(
},,{ mmmm
}{ 1 m パイは異なる正規分布を重み付ける
混合分正規分布から教師なしクラスタリングへ
1. 2つの要素正規分布から、混合正規分布が構成されデータが発生する。
2. 混合正規分布モデルの下で、あるデータがもっとも発生した要素がデータの属するクラスタである。
要素からデータが生成されたと考える。
逆にデータから要素を推定する。
混合正規分布による教師なしクラスタリング
• ベイズの定理を使うと…
⇒モデルがわかれば、教師なしクラスタリングができる。
);(
);,();|(
xp
mxpxmp
M
m
mmm
mmm
x
x
1
),;(
),;(
ただのベイズの定理
クラスタリングを行うために
• モデルが与えられれば(パラメータが与えられれば)、クラスタリングができる
• 次に考えるのはデータからモデルを推定すること。
モデルθ クラスタリング
新データ
nx
x
x 1
m
xmpm
)|(maxarg
既にあるデータ
npn
p
xx
xx
X
1
111
データからモデルを推定する
• データが与えられたときのパラメータθの推定をどうするか?–最尤推定は?
⇒logの中に∑があるので、陽に解析できない。
n
i
ixpMax1
);(logargˆ
n
i
im xMax1
);(logarg
じゃあ、どうやって推定する?
• しかし、最尤推定を行いたい。
• →パラメータxとモデルを表すラベルmの対、
が明らかになっていれば計算できる
(証明は教科書で)
⇒どのように、 を与えるか?
n
i
ii mxpMax1
);,(logargˆ
n
i
iim mxMax1
);,(logarg
n
i
ixpMax1
);(logargˆ
n
i
im xMax1
);(logarg
ラベルを与える
),( ii mx
),( ii mx
EMアルゴリズム
• EMアルゴリズム・・・反復によって欠損データの最尤推定を行う方法
• 混合分布の場合、所与のデータが属するラベルが欠損していると考える。
npn
p
xx
xx
X
1
111
nnpn
p
m
m
xx
xx
X
1
1
111
EMアルゴリズムで扱うデータ行列
欠けたデータ
通常のデータ行列
EMアルゴリズムの計算手順
Eステップ:あるθtを用いて、Q関数を計算する。
• モデルの事後確率に基づく対数尤度→最大化する
Mステップ:Q関数を最大化するθtを求める
• ステップtにおけるθの最大化
n
i
i
M
m
t
i
t mxpxmpQ1 1
)()( );,(log);|(),(
),(arg )()( tt QMax
EMアルゴリズムのイメージ• 言葉で言ってもわからないので、可視化したものをみてみましょう。
*アルゴリズムの詳細は下記リンクをチェック!http://vrl.sys.wakayama-u.ac.jp/PRA/EM/MixtureEMj.html
入力:データX
パラメータ初期値θ’
出力:パラメータ:θ
Eステップ:
の計算
Mステップ:
の最大化
),( )(tQ
)(Q
t=t++
npn
p
xx
xx
1
111
EMアルゴリズムの正当性
• この繰り返しの中、Q関数つまり尤度関数は単調増加になる。
–証明は教科書を参照
RでEMアルゴリズムによってクラスタリング
Mclustパッケージ
Mclustによるクラスタリングの大まかな流れ
パッケージ:MClust
引数1:データX複数のモデルの中からBICの高いものを選択してMclustオブジェクトを返す
モデル推定:Mclust
引数2:データX引数2:Mclustのprameters引数3:可視化内容
結果を可視化する
結果の可視化:mclust2Dplot
引数1:cdensの事後確率
もっとも事後確率の高いラベルのデータを返す。
分類:map
引数1:予測したい新データX’引数2:Mclustのparametersデータの事後確率を計算する。
事後確率の計算:cdens
所与のデータX
予測したいデータx’
注:関数のデータの大まかなながれです。引数は他に色々あるので注意してください。
データセット
• 用いるデータセットはmlbench.smily
4クラスデータ
混合分布でクラスタリングする
library(mclust); library(mlbench)
dat <- mlbench.smiley()
colnames(dat$x) <- c("x1","x2")
dev.new()
(gmm4 <- Mclust(dat$x,G=4))
mclust2Dplot(dat$x,parameters=gmm4$parameters,z=gmm4$z,what="classification")
title("Classification 4")
dev.new()
(gmmup8 <- Mclust(dat$x,G=4:8))
mclust2Dplot(dat$x,parameters=gmmup8$parameters,z=gmmup8$z,what="classification")
title("Classification From 4 To 8")
Package mclust
混合正規分布モデルの推定、要素数G=4
判別結果をプロット
要素モデルの数を4とする
要素モデルの数を4から8とする
結果
予測を行うmapとcdens
• Cdens関数でテストデータの事後確率を計算
• Map関数でラベルに変換
#40のテストデータ、gmmup8をモデルで実験testdat <- mlbench.smiley(n=40) colnames(testdat$x) <- c("x1","x2")dev.new()testc1<-map(cdens(modelName=
gmmup8$modelName, data=testdat$x, parameters=gmmup8$parameters))
mclust2Dplot(testdat$x, parameters=gmmup8$parameters,
classification=testc1)
ModelNamesオプション
• Mclustパッケージではモデルとして以下のオプションの中から希望のものを指定できる。
#e.g.(gmm5 <- Mclust(dat$x,G=5, modelNames="EEE"))mclust2Dplot(dat$x,parameters=gmm5$parameters,z=gmm5$z,what="classification")title("EEE")
注:全部で10種類指定できる。指定しないと、一番当てはまりのよいものを使用する。
おまけ
ここで疑問
モデルの数をいくつにすればよいのか?
混合数の推定
• 混合数の推定=モデルの妥当性の検証
–交差検証法
• 第1回で説明済み→you! Forループまわしてプログラム書いちゃいなよ。
–情報量を用いる
• AIC:赤池情報量基準– 特定のパラメータのあてはまりのよさ
• BIC:ベイズ情報量基準– モデル全体でのあてはまりのよさ
– Mclustではモデルの選択にBICを用いている。
BIC
• 複数のモデルが等しい事前確率で選択されると仮定した上で、尤度の期待値
gmm<-Mclust(dat$x)plot.mclustBIC(gmm$BIC, legendArgs=list(x="bottomright", cex=0.7, ncol=2))
ll dDpXpnEBIC )|();(log2
nxpBIC l
n
i
il log|ˆ|)ˆ;(log2)ˆ(1
モデルVVVの要素数7がBICがもっとも高いのでMclustで選ばれる。