PCA与协方差矩阵
一、協(xié)方差矩陣
一個(gè)維度上方差的定義:
協(xié)方差的定義:
(a)
協(xié)方差就是計(jì)算了兩個(gè)維度之間的相關(guān)性,即這個(gè)樣本的這兩個(gè)維度之間有沒有關(guān)系。
協(xié)方差為0,證明這兩個(gè)維度之間沒有關(guān)系,協(xié)方差為正,兩個(gè)正相關(guān),為負(fù)則負(fù)相關(guān)。
協(xié)方差矩陣的定義:
對(duì)n個(gè)維度,任意兩個(gè)維度都計(jì)算一個(gè)協(xié)方差,組成矩陣,定義如下
直觀的對(duì)于一個(gè)含有x,y,z三個(gè)維度的樣本,協(xié)方差矩陣如下
可以看出,對(duì)角線表示了樣本在在各個(gè)維度上的方差。
其他元素表示了不同維度之間兩兩的關(guān)聯(lián)關(guān)系。
二、協(xié)方差矩陣的計(jì)算
(1)先讓樣本矩陣中心化,即每一維度減去該維度的均值,使每一維度上的均值為0,
(2)然后直接用新的到的樣本矩陣乘上它的轉(zhuǎn)置
(3)然后除以(N-1)即可‘
數(shù)學(xué)推導(dǎo)相對(duì)容易,樣本矩陣中心化以后,樣本均值為0,因此式a中每個(gè)維度無需減去均值,只需要進(jìn)行與其他維度的乘法,
這樣就可以用轉(zhuǎn)置相乘實(shí)現(xiàn)任意兩兩維度的相乘。
三、矩陣相乘的“變換的本質(zhì)”理解
A*B兩個(gè)矩陣相乘代表什么?
A的每一行所表示的向量,變到B的所有列向量為基底表示的空間中去,得到的每一行的新的表示。
B的每一列所表示的向量,變到A的所有行向量為基底表示的空間中去,得到的每一列的新的表示。
三、PCA深入
PCA的目的是降噪和去冗余,是一種常用的數(shù)據(jù)分析方法。PCA通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)的表示,可用于提取數(shù)據(jù)的主要特征分量,常用于高維數(shù)據(jù)的降維。
樣本矩陣的格式:
樣本1 [特征a1,特征a2,特征a3,…..,特征an]
樣本2 [特征a1,特征a2,特征a3,…..,特征an]
樣本3 [特征a1,特征a2,特征a3,…..,特征an]
樣本4 [特征a1,特征a2,特征a3,…..,特征an]
PCA后:r<n
樣本1 [特征b1,特征b2,特征b3,…..,特征br]
樣本2 [特征b1,特征b2,特征b3,…..,特征br]
樣本3 [特征b1,特征b2,特征b3,…..,特征br]
樣本4 [特征b1,特征b2,特征b3,…..,特征br]
直白的來說,就是對(duì)一個(gè)樣本矩陣,
(1)換特征,找一組新的特征來重新表示
(2)減少特征,新特征的數(shù)目要遠(yuǎn)小于原特征的數(shù)目
我們來看矩陣相乘的本質(zhì),用新的基底去表示老向量,這不就是重新找一組特征來表示老樣本嗎???
所以我們的目的是什么?就是找一個(gè)新的矩陣(也就是一組基底的合集),讓樣本矩陣乘以這個(gè)矩陣,實(shí)現(xiàn)換特征+減少特征的重新表示。
因此我們進(jìn)行PCA的基本要求是:
(1)第一個(gè)要求:使得樣本在選擇的基底上盡可能的而分散。
為什么這樣?
極限法,如果在這個(gè)基底上不分散,干脆就在這個(gè)基地上的投影(也就是特征)是一樣的。那么會(huì)有什么情況?
想象一個(gè)二維例子:
以下這一組樣本,有5個(gè)樣本,有2個(gè)特征x和y,矩陣是
[-1,-2]
[-1, 0]
[ 0, 0]
[ 2, 1]
[ 0, 1]
畫圖如下:
我現(xiàn)在是二維特征表示,x一個(gè)特征,y一個(gè)特征。我現(xiàn)在降維。
降成一維,我要選一個(gè)新的基底(特征)。
如果我選(1,0)作為基底,就是x軸嘛,然后我把這些樣本投影到x軸,或者乘以[1,0]列向量。
得,里面好幾個(gè)數(shù)都一樣,分不出來了。
所以這就是為樣本在基底上要盡可能分散了,這個(gè)分散不就是樣本在這個(gè)“基底上的坐標(biāo)”(這個(gè)基底上的特征值)的方差要盡可能大么?
(2)第二個(gè)要求:使得各個(gè)選擇的基底關(guān)聯(lián)程度最小。
剛才是二維降一維,只選則一個(gè)一維基底就可以了,太拿衣服了。
考慮一個(gè)三維點(diǎn)投影到二維平面的例子。這樣需要倆基底。
基底得一個(gè)一個(gè)找啊,先找第一個(gè),要找一個(gè)方向,使得樣本在這個(gè)方向上方差最大。
再找第二個(gè)基底,怎么找,方差最大?這不還是找的方向和第一個(gè)差不多么?那這兩個(gè)方向表示的信息幾乎是重復(fù)的。
所以從直觀上說,讓兩個(gè)字段盡可能表示更多的原始信息,我們是不希望它們之間存在(線性)相關(guān)性的,因?yàn)橄嚓P(guān)性意味著兩個(gè)字段不是完全獨(dú)立,必然存在重復(fù)表示的信息。所以最好就是選擇和第一個(gè)基底正交的基底。
那怎么找呢?不能隨便寫一個(gè)矩陣吧?答案肯定是要基于原來的樣本的表示。
我們求出了原來樣本的協(xié)方差矩陣,協(xié)方差矩陣的對(duì)角線代表了原來樣本在各個(gè)維度上的方差,其他元素代表了各個(gè)維度之間的相關(guān)關(guān)系。
也就是說我們希望優(yōu)化后的樣本矩陣,它的協(xié)方差矩陣,對(duì)角線上的值都很大,而對(duì)角線以外的元素都為0。
現(xiàn)在我們假設(shè)這個(gè)樣本矩陣為X(每行對(duì)應(yīng)一個(gè)樣本),X對(duì)應(yīng)的協(xié)方差矩陣為Cx,而P是我們找到的對(duì)樣本進(jìn)行PCA變換的矩陣,即一組基按列組成的矩陣,我們有Y=XP
Y即為我們變化后的新的樣本表示矩陣,我們?cè)O(shè)Y的協(xié)方差矩陣維Cy,我們想讓協(xié)方差矩陣Cy是一個(gè)對(duì)角陣,那么我們先來看看Cy的表示
注意:
推導(dǎo)規(guī)程為了把X湊一起,我們用了Y Yt=((Y Yt)t)t=(Yt Y)t
把樣本組織成行向量和列向量是一樣的原來,最后結(jié)果只需要一個(gè)轉(zhuǎn)置就變成一個(gè)格式了。把樣本X組織成列向量,就要把基底P組織成行向量,就要寫PX了
好了,我們退出了Cy的表示,最后的結(jié)果很神奇的成了一個(gè)熟悉的形式:方陣可對(duì)角化的表達(dá)式
讓我們來回憶一下可對(duì)角化矩陣的定義,順便也回憶了矩陣相似的定義:
(1)什么是可對(duì)角化和相似:如果一個(gè)方塊矩陣?A?相似于對(duì)角矩陣,也就是說,如果存在一個(gè)可逆矩陣?P?使得?P??1AP?是對(duì)角矩陣,則它就被稱為可對(duì)角化的。
(2)如何判斷可對(duì)角化呢:我們?cè)賮砘貞浺幌戮仃嚳蓪?duì)角化的條件:n?×?n?矩陣?A?只在域?F?上可對(duì)角化的,如果它在?F?中有?n?個(gè)不同的特征值,就是說,如果它的特征多項(xiàng)式在?F?中有?n?個(gè)不同的根,也就說他有n個(gè)線性無關(guān)的特征向量,這三條件是等價(jià)的,滿足一個(gè)就可以對(duì)角化。
注意哦:有n個(gè)線性無關(guān)的特征向量并不一定代表有n個(gè)不同的特征值,因?yàn)榭赡芏鄠€(gè)特征向量的對(duì)于空間的權(quán)重相同嘛。。。但是n個(gè)不同的特征值一定有n個(gè)線性無關(guān)的特征向量啦。
C是啥呢,C是協(xié)方差矩陣,協(xié)方差矩陣是實(shí)對(duì)稱矩陣,就是實(shí)數(shù)的意思,有很多很有用的性質(zhì)
1)實(shí)對(duì)稱矩陣不同特征值對(duì)應(yīng)的特征向量,不僅是線性無關(guān)的,還是正交的。
2)設(shè)特征向量重?cái)?shù)為r,則必然存在r個(gè)線性無關(guān)的特征向量對(duì)應(yīng)于,因此可以將這r個(gè)特征向量單位正交化。
3) n階實(shí)對(duì)稱矩陣C,一定存在一個(gè)正交矩陣E,滿足如下式子,即C既相似又合同于對(duì)角矩陣。(這里又溫習(xí)了合同的概念哦)
由上面兩條可知,一個(gè)n行n列的實(shí)對(duì)稱矩陣一定可以找到n個(gè)單位正交特征向量,設(shè)這n個(gè)特征向量為e1,e2,…,en
我們將其按列組成矩陣:
則對(duì)協(xié)方差矩陣C有如下結(jié)論:
好了,PCA中,我們要找的這個(gè)變換矩陣,就是E!!!!!!因?yàn)橛肵乘E后,得到的矩陣是一個(gè)對(duì)角矩陣哦!
PCA算法步驟總結(jié):
設(shè)有m條n維數(shù)據(jù),這里比較糊涂就是按行組織樣本還是按列組織樣本,下面是按行組織樣本:
1)將原始數(shù)據(jù)按行組成n行m列矩陣X,代表有n個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)m個(gè)特征
2)將X的每一列(代表一個(gè)屬性字段)進(jìn)行零均值化,即減去這一列的均值
3)求出協(xié)方差矩陣C=1/n*?XXT
4)求出協(xié)方差矩陣的特征值及對(duì)應(yīng)的特征向量
5)將特征向量按對(duì)應(yīng)特征值大小從上到下按列排列成矩陣,取前k列組成矩陣P
6)Y=XP即為降維到k維后的數(shù)據(jù)
按列組織是這樣的,理解一下:
1)將原始數(shù)據(jù)按列組成n行m列矩陣X
2)將X的每一行(代表一個(gè)屬性字段)進(jìn)行零均值化,即減去這一行的均值
3)求出協(xié)方差矩陣C=1/m*XXT
4)求出協(xié)方差矩陣的特征值及對(duì)應(yīng)的特征向量
5)將特征向量按對(duì)應(yīng)特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P
6)Y=PX即為降維到k維后的數(shù)據(jù)
總結(jié)
- 上一篇: 扫帚:我天天都能立起来,看把你们闲的
- 下一篇: 在家办公的我,砍需求砍得更狠了