机器学习笔记—因子分析
如果數(shù)據(jù) x(i)∈Rn是來自混合高斯分布,那么可用 EM 算法來擬合混合模型,但假設(shè)前提是有足夠的數(shù)據(jù),我們能發(fā)現(xiàn)數(shù)據(jù)中的多高斯結(jié)構(gòu),這就要訓(xùn)練數(shù)據(jù)集大小 m 遠(yuǎn)大于數(shù)據(jù)維度 n。
如果 n>>m 呢?那就很難對(duì)數(shù)據(jù)建模,即使是一個(gè)高斯。m 個(gè)數(shù)據(jù)點(diǎn)只能在低維度空間,如果要把數(shù)據(jù)建模為高斯分布,用極大似然估計(jì)來估計(jì)均值和協(xié)方差:
我們會(huì)發(fā)現(xiàn)Σ 是奇異矩陣。例如當(dāng) m=2,n=5,如下例所示,最后Σ =0。
import numpy as np x1=np.array([2,3,7,6,5]) x2=np.array([7,9,3,1,4]) x1.shape=(5,1) x2.shape=(5,1) mu=(x1+x2)/2.0 # ".0" is request var=(np.dot(x1-mu,np.transpose(x1-mu))+np.dot(x2-mu,np.transpose(x2-mu)))/2.0 print "The covariance of the matrix is %s." % np.linalg.det(var)
View Code
當(dāng) Σ為奇異矩陣時(shí),|∑| = 0,那么Σ-1 就不存在,1/|Σ|1/2 = 1/0,但這些在計(jì)算多元高斯分布的密度時(shí)都是需要的。通常情況下,除非 m 比 n 大得超過一定范圍,不然對(duì)均值和協(xié)方差的極大似然估計(jì)會(huì)非常差。當(dāng)然,我們肯定希望對(duì)數(shù)據(jù)擬合一個(gè)合理的高斯模型,來獲得數(shù)據(jù)中一些有趣的協(xié)方差結(jié)構(gòu)信息。那怎么辦呢?
下面我們先來看對(duì) Σ施加兩個(gè)限制,可以使我們用少量的數(shù)據(jù)來擬合Σ,但都不能給出滿意的解決方案。接下來再討論高斯的一些特性,后面會(huì)用到,特別是如何尋找高斯的邊緣和條件分布。最后介紹因子分析模型,以及 EM 解法。
1、對(duì)Σ 的限制
如果沒有足夠的數(shù)據(jù)來擬合一個(gè)完整的方差矩陣,可以對(duì)矩陣Σ 的空間添加一些限制。例如,選擇擬合一個(gè)對(duì)角矩陣Σ,在這種情況下,協(xié)方差矩陣的極大似然估計(jì),即對(duì)角矩陣 Σ滿足:
如何通過極大似然估計(jì)推出上式,有興趣的讀者可自行驗(yàn)證。
高斯密度的輪廓是橢圓,當(dāng)協(xié)方差矩陣Σ 是對(duì)角矩陣時(shí),橢圓的主軸就與坐標(biāo)軸平行。
有時(shí)我們會(huì)對(duì)協(xié)方差矩陣作進(jìn)一步的限制,它不僅是對(duì)角的,而且對(duì)角線上的元素是等值的。這時(shí),Σ=σ2I,其中σ2 是控制參數(shù)。σ2 的極大似然估計(jì)為:
這個(gè)模型所關(guān)聯(lián)的高斯密度的輪廓在二維情況下是圓,在高維情況下是球體,或超球體。
如何我們要對(duì)數(shù)據(jù)擬合一個(gè)完整的、無約束的協(xié)方差矩陣Σ,那就需要 m>>n 以使得Σ 的極大似然估計(jì)是非奇異的。如果滿足上面兩個(gè)限制中的任意一個(gè),只要 m≥2 就能得到一個(gè)非奇異的Σ。
但是,限制Σ 為對(duì)角矩陣也意味著,建模數(shù)據(jù)的不同坐標(biāo) xi 和 xj 為不相關(guān)和獨(dú)立的。有時(shí)就是要獲得數(shù)據(jù)中的一些有趣的關(guān)聯(lián),如果使用了上面對(duì)Σ 的限制,就沒法發(fā)現(xiàn)這種關(guān)聯(lián)。所以,下面我們介紹因子分析模型,比對(duì)角矩陣Σ 使用更多的參數(shù),但不需要擬合完整的協(xié)方差矩陣。
2、高斯邊緣和條件分布
在介紹因子分析之前,先來討論如何尋找聯(lián)合多元高斯分布隨機(jī)變量的條件和邊緣分布。
假設(shè)有一個(gè)向量值型隨機(jī)變量:
其中 x1 屬于 r 維向量空間,x1∈Rr,x2∈Rs,x∈Rr+s,假設(shè) x~N(μ,Σ),其中:
這里 μ1∈Rr,μ2∈Rs,Σ11∈Rr×r,Σ12∈Rr×s 等等。因?yàn)閰f(xié)方差矩陣是對(duì)稱的,所以Σ12=Σ21T。
在這種情況下,x1 和 x2 是聯(lián)合多元高斯,那么 x1 的邊緣分布是什么?不難看出 E[x1]=μ1,Cov(x1)=E[(x1-μ1)(x1-μ1)]=Σ,根據(jù) x1 和 x2 的聯(lián)合協(xié)方差的定義,有:
因?yàn)楦咚沟倪吘壏植急旧砭褪歉咚梗缘?x1 的邊緣分布為 x1~N(μ1,Σ11)。
那么 x1在給定 x2 下的條件分布呢?由多元高斯分布的定義,可得 x1|x2~N(μ1|2,Σ1|2),其中
下面介紹因子分析模型時(shí),這些公式對(duì)于尋找高斯條件和邊緣分布是很有用的。
3、因子分析模型
在因子分析模型中,我們假設(shè) (x,z) 是如下的聯(lián)合分布,其中 z∈Rk 是一個(gè)隱隨機(jī)變量:
這里模型的參數(shù)是,向量μ∈Rn,矩陣Λ∈Rn×k,對(duì)角矩陣Ψ∈Rn×n,k 值通常是小于 n 的。
所以每個(gè)數(shù)據(jù)點(diǎn) x(i) 是通過如下方式生成的:
a. 從 k 維多元高斯分布中采樣得到 z(i);
b. 通過計(jì)算μ+Λz(i) 將 z 映射到 n 維空間;
c. 給 μ+Λz(i)增加協(xié)方差 Ψ噪聲,得到 x(i)。
同樣的,我們也可以根據(jù)下列方式來定義因子分析模型。
其中ε 和 z 是相互獨(dú)立的。
現(xiàn)在來仔細(xì)看下這個(gè)模型定義了一個(gè)什么樣的分布。隨機(jī)變量 z 和 x 有一個(gè)聯(lián)合高斯分布。
現(xiàn)在來尋找μzx 和Σ。
我們知道 E[z]=0,因?yàn)?z~N(0,I),同時(shí)有
放到一起可得:
下一步,為了尋找 Σ,需要計(jì)算Σzz=E[(z-E(z))(z-E(z))T],Σzx=E[(z-E(z))(x-E(x))T],Σxx=E[(x-E(x))(x-E(x))T]。
因?yàn)?z~N(0,I),易見Σzz=Cov(z)=I,也可得 Σzx=
第一步是因?yàn)?E[z]=0,x=μ+Λz+ε,E[x]=μ。
第二步消去μ。
第三步是因?yàn)?E[zzT]=Cov(z)=I,E[zεT]=E[z]E[εT]=0(因?yàn)?z 和 ε 是相互獨(dú)立的,所以乘積的期望也是期望的乘積)。類似地可得Σxx:
集中以上結(jié)果可得:
所以,可以看到 x 的邊緣分布 x~N(μ,ΛΛT+Ψ)。所以,給定訓(xùn)練集 {x(i);i=1,2,...,m},我們能寫下參數(shù)的 log 似然估計(jì)為:
為執(zhí)行極大似然估計(jì),我們將以這些參數(shù)來最大化該式,直接最大化該式很難,沒有封閉形式下的算法可解出該式。所以,我們將使用 EM 算法。
4、EM 解因子分析
E-step 的推導(dǎo)很容易,需要計(jì)算 Qi(z(i))=p(z(i)|x(i);μ,Λ,Ψ)。結(jié)合上面得到的兩個(gè)結(jié)果:
可得
其中
用這些定義可得:
現(xiàn)在開始 M-step,這里需要最大化
以μ,Λ 和Ψ 為參數(shù)。我們這里只推導(dǎo)以Λ 為參數(shù)的最優(yōu)化,μ 和Ψ 的更新推導(dǎo)留給讀者。
上式可簡(jiǎn)化為:
下標(biāo) z(i)~Qi 表示期望是指服從 Qi 分布的 z(i)。下面將忽略這個(gè)下標(biāo),不會(huì)存在模糊的風(fēng)險(xiǎn)。去掉與參數(shù)Λ 不相關(guān)的部分,需要最大化的是:
只有最后一項(xiàng)依賴于Λ,求導(dǎo),使用事實(shí) tra=a(a∈R),trAB=trBA,▽AtrABATC=CAB+CTAB,有:
設(shè)為 0 并簡(jiǎn)化,得:
解出Λ,得:
從 Q 是均值為 μz|x協(xié)方差為 Σz|x的高斯的定義可得:
最后一式是因?yàn)椋瑢?duì)于隨機(jī)變量 Y,Cov(Y)=E[YYT]-E[Y]E[Y]T,所以,E[YYT]=E[Y]E[Y]T+Cov(Y)。
代入該式到上面的Λ,可得:
注意到上式右邊有個(gè) Σz|x,這是后驗(yàn)概率 p(z(i)|x(i)) 的協(xié)方差。
我們也能找到μ 和Φ 的最優(yōu)化參數(shù)。
注意到當(dāng)參數(shù)改變時(shí),μ 不是發(fā)生改變,不像Λ 依賴于 Qi(z(i))=p(z(i)|x(i);μ,Λ,Φ),所以,它只需要開始計(jì)算一次,算法運(yùn)行時(shí)不需要再更新。同樣,對(duì)角Ψ 為
設(shè)置Ψii=Φii。對(duì)角矩陣Ψ 只包含對(duì)角元素Φ。
參考資料:
1、http://cs229.stanford.edu/notes/cs229-notes9.pdf
2、http://blog.csdn.net/stdcoutzyx/article/details/37559995
3、http://www.cnblogs.com/jerrylead/archive/2011/05/11/2043317.html
總結(jié)
以上是生活随笔為你收集整理的机器学习笔记—因子分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)HLS协议,html5视频直播一站
- 下一篇: Beyond Compare怎么对比图片