經(jīng)過兩天的掙扎茁彭,在淺薄的線性代數(shù)知識基礎(chǔ)上,嘗試著理解了一下主成分分析法抽米。
一 算法流程
求樣本x(i)的n'的主成分其實是求樣本集的協(xié)方差矩陣 XXT 的前n'個特征值對應(yīng)特征向量矩陣W特占,然后對于每個樣本x(i)做如下變換 z(i)=WTx(i) ,即達(dá)到降維的PCA目的云茸。
具體算法流程:
輸入:n維樣本集D=(x(1),x(2),...,x(m)), 要降維到維數(shù)n’是目。
輸出:降維后的樣本集D’
(即從mxn變?yōu)閙xn')
1)對所有的樣本進(jìn)行中心化。
2)計算樣本的協(xié)方差矩陣XTX
3)對矩陣XXT進(jìn)行特征值分解
4)取出最大值n'個特征值對應(yīng)的特征向量(w1,w2,...,wn')标捺,將所有的特征向量標(biāo)準(zhǔn)化后懊纳,組成特征向量矩陣矩陣W揉抵。
5)對樣本集中的每一個樣本x(i),轉(zhuǎn)化為新的樣本z(i)=WTx(i)
6)得到輸出樣本D’ = (z(1),z(2),...,z(m))
有時候嗤疯,我們不指定降維后n'的值冤今,而是換種方式,制定一個降維到主成分比重閾值t茂缚。這個t在(0,1]之間戏罢。加入我們有n個特征值λ1>=λ2>=...>=λn,則n'可以通過下式得到:
主成分分析(PCA)原理總結(jié)——劉建平Pinard
二 個人的理解
[18.11.23更新]PCA和LDA都是對數(shù)據(jù)進(jìn)行降維脚囊,其中PCA是無監(jiān)督的龟糕,LDA是有監(jiān)督的。所以PCA是不考慮類別的悔耘,只用特征信息讲岁,而LDA要考慮類別,他們之間降維的差異于是有了這個圖:我理解衬以,PCA是采用了投影最小的方法催首,在圖中表現(xiàn)出來就是點與投影點之間的距離和最小,那保留最多的原始信息怎么理解呢泄鹏?那就是我們?nèi)サ裟骋粋€“方向”(這是一個抽象的“方向”抒蚜,或者說朝超平面進(jìn)行了投影)洗显,兩個點之間的“距離”保持沒變。而LDA因為有了“標(biāo)簽”的限制,其投影的方式產(chǎn)生了變化开镣,所以他的選擇的是分類最好的方向魂毁。
1.對樣本進(jìn)行中心化的原因
1.1 做中心化的意義
中心化其實是一個平移的過程洪唐,平移后所有數(shù)據(jù)的中心是(0,0)
在PCA中淆党,中心化后的數(shù)據(jù)有助于后續(xù)在求協(xié)方差的步驟中減少計算量,同時中心化后的數(shù)據(jù)才能比較好地“概括”原來的數(shù)據(jù)(如下圖)珠闰。
其實惜浅,中心化及標(biāo)準(zhǔn)化在不同的應(yīng)用場景都有不同的意義——比如在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程中,通過將數(shù)據(jù)標(biāo)準(zhǔn)化伏嗜,能夠加速權(quán)重參數(shù)的收斂坛悉。
數(shù)據(jù)什么時候需要做中心化和標(biāo)準(zhǔn)化處理?——知乎
1.2 做中心化的方法
即 樣本的每一個維度的數(shù)值減去該維度所有樣本的均值(通過均值的意義或者畫圖很容易理解)承绸。
2.選用協(xié)方差的原因
2.1協(xié)方差的定義
1)協(xié)方差的定義
其中:E(X) = μx、E(Y) = μy
2)協(xié)方差矩陣的定義
按照一般標(biāo)準(zhǔn),即每一行的表示一個樣本均践,每一列表示相應(yīng)的維度晤锹。
注:協(xié)方差矩陣的維度等于樣本的維度數(shù)(隨機變量的個數(shù))。至于這里為什么是m-1彤委,我相信與概率論中求樣本方差的時候所謂無偏估計和有偏估計有關(guān)吧(為什么樣本方差(sample variance)的分母是 n-1鞭铆?——知乎 然而我又不會,真是慘兮兮)
例子(協(xié)方差矩陣計算方法——GodStephen) 我發(fā)現(xiàn)博主在計算的過程中其實就就進(jìn)行了我們所謂的中心化葫慎。
2.2 協(xié)方差在這里的圖形化意義
我們選取協(xié)方差的特征向量,一句話概括就是找到方差在該方向上投影最大的那些方向薇宠。
我們在應(yīng)用PCA的時候偷办,都默認(rèn)數(shù)據(jù)符合高斯分布(即正態(tài)分布:期望為 μ,方差為σ^2 的正態(tài)分布澄港,記為N(μ椒涯,σ^2)——然而我還是不懂,概率論不會真的慘兮兮x2)回梧,所以能產(chǎn)生下圖嗯废岂,沒錯,這是由圖左邊的矩陣作為協(xié)方差矩陣產(chǎn)生的高斯分布樣本狱意,當(dāng)我們做出一個橢圓過后湖苞,可以很輕易地猜想,若從二維降低到一維详囤,那么一定選擇黑色的長軸作為投影空間财骨,然后,驚訝地發(fā)現(xiàn)這個長軸就是最大特征值對應(yīng)的特征向量(0.707,0.707)藏姐。所以我從直觀上接受了做協(xié)方差的特征向量作為投影空間隆箩。
2.3 協(xié)方差在這里的一種理論推導(dǎo)
距離
我們一般有兩種常用的距離:歐氏距離和余弦距離羔杨。
余弦距離:表示關(guān)系的距離。即兩個向量的夾角曙寡,可以通過點積和模長計算矾端。
協(xié)方差和相關(guān)系數(shù)
因為一開始我們已經(jīng)對數(shù)據(jù)做了中心化,所以可以有如下表示:具體的推導(dǎo)和理解參考下面的鏈接。
【蒟蒻還需要增加對知識的原始積累才能在數(shù)學(xué)層面上理解啊
如何理解協(xié)方差凡壤、相關(guān)系數(shù)和點積署尤?——馬同學(xué)
3.特征值和對應(yīng)特征向量的意義
特征值和特征向量有非常深的現(xiàn)實內(nèi)涵。
1.3Blue1Brown中的理解
在3Blue1Brown中亚侠,將方陣作為對基的一種線性變換曹体。(將以二階行列式為例)
i-hat和j-hat是向量空間的一組基。
當(dāng)我們的方陣不是I方陣時滞谢,相當(dāng)于我們對坐標(biāo)系進(jìn)行了旋轉(zhuǎn)和剪切串稀。
當(dāng)我們對一個向量做這個矩陣乘法時,就相當(dāng)于是對向量隨這個矩陣表示的線性變換變化颤陶,輸出就是經(jīng)過此變化后的向量在原坐標(biāo)系中的坐標(biāo)颗管。
其實從我們剛才做出的乘法可以看到,方向在[-1,1]T的向量經(jīng)過線性變換后向量的方向并沒有變姨涡,只是相對大小有了變化衩藤。所以,我們可以猜想:
※特征向量即為經(jīng)過線性變換后方向沒有變化的向量涛漂,特征值即為向量變化后的倍數(shù)赏表。
其實3b1b中有線性代數(shù)篇有很多有意思的理解检诗,比如基變換等,挖坑瓢剿。
【官方雙語/合集】線性代數(shù)的本質(zhì) - 系列合集(14p)
2.知乎的理解
總的來說逢慌,矩陣相乘就是對點(用向量的終點表示整個向量)進(jìn)行拉扯。
※特征值是運動的速度间狂,特征向量是運動的方向攻泼。
我嘗試了一下,矩陣A為[3,0;2,1]鉴象,此方陣的特征值為1的特征向量為[0,1]T(橙色)忙菠,特征值為3的特征向量為[0.7071,0.7071]T(藍(lán)色)
方向向量為[0.5,-0.2]T纺弊,在下圖中即為橙色的點牛欢。
p1=[0.5;-0.2] ; p2=[1.5;0.8]; p3=[4.5,3.8]; p4=[13.5,12.8];
p5=[40.5;39.8]; p6=[121.5;120.8]; p7=[364.5;363.8]; p8=[1093.5;1092.8];
因為這個矩陣比較特殊已亥,所以我又做了一個特征值相近的矩陣。
矩陣A為[2.5 0.5;0.5 2.5]来屠,此方陣的特征值為2的特征向量為[-0.7071,0.7071]T虑椎,特征值為3的特征向量為[0.7071,0.7071]T
方向向量為[1,0]T。
A = [2.5,0.5;0.5 2.5];
x = (-50:50);
y = (-50:50);
plot(x,y);
grid on;
hold on;
y = (50:-1:-50);
plot(x,y);
hold on;
t = [1,0]';
for i = 1:5
plot(t(1,1),t(2,1),'*');
t = A*t
end
補1.投影
補2.奇異分解
U和V為一組規(guī)范正交基,表示A矩陣的作用是將一個向量從U這組正交基向量的空間旋轉(zhuǎn)到V這組正交基向量空間磕仅,并對每個方向進(jìn)行了一定的縮放珊豹,縮放因子就是各個奇異值。如果V的維度比U噠榕订,則表示還進(jìn)行了投影店茶。可以說奇異值分解就是將一個矩陣原本混在一起的三種效果分解出來劫恒。
矩陣的奇異值與特征值有什么相似之處與區(qū)別之處贩幻?——知乎
奇異分解是對特征值分解的一種拓展。特征值傾向于找到一個方向,使得線性變換對這個方向的向量僅起到長度的變化段直;奇異分解則是希望找到一組標(biāo)準(zhǔn)正交基吃溅,使得線性變換作用在這組基之后能夠得到正交的新基——當(dāng)然這組基不一定是標(biāo)準(zhǔn)的,(二維)在標(biāo)準(zhǔn)基選擇360度后鸯檬,新基能做出一個橢圓决侈,其中奇異值就是分別是長半軸和短半軸的長度。
如eigshow, week 3中第一個圖喧务,綠色的表示我們原始的基赖歌,藍(lán)色的分別表示矩陣A作用在x方向和y方向上向量的效果,當(dāng)我們對綠色進(jìn)行旋轉(zhuǎn)的時候功茴,藍(lán)色會對應(yīng)開始旋轉(zhuǎn)庐冯,當(dāng)綠色旋轉(zhuǎn)到某一角度的時候,藍(lán)色正交坎穿,此時綠色即為我們想要的那一組展父。我只能暫時理解為矩陣將向量從綠色的正交基變換到藍(lán)色的正交基后的結(jié)果。
補3.正定矩陣
補4.KPCA
理解KPCA其實只需要理解核函數(shù)就行了(同理SVM)玲昧,因為它不過是對點進(jìn)行了升維操作栖茉。
降維or分類其實是一個優(yōu)化問題,恰好在損失函數(shù)中出現(xiàn)了xxT的形式孵延,記住這個形式吕漂。
在部分分類情況中,發(fā)現(xiàn)如果用線性的切分(對超平面做了線性的限制)尘应,沒有辦法很好的進(jìn)行分類惶凝,于是就提出來,將原來的點x(n維)犬钢,通過函數(shù)φ苍鲜,映射為x‘(m維),通過增加維度玷犹,讓線性切分能夠適用混滔。
這樣就造成了一個問題:維度的擴大會導(dǎo)致計算量的增加。
在觀察損失函數(shù)后箱舞,我們發(fā)現(xiàn)其實升維之后遍坟,不過是xxT變?yōu)榱甩?x)φ(xT),這個內(nèi)積的形式仍然存在晴股,于是就有聰明人想:既然我們對升維之后的點的操作是固定的(即都是內(nèi)積操作)愿伴,那我們是否能找到一個函數(shù),使得其內(nèi)積操作的結(jié)果有一個很好的性質(zhì)电湘,能夠跳過升維操作(即極端的說法為:φ(x)φ(xT)=2*xxT)隔节。
還真有人發(fā)現(xiàn)了一些函數(shù)具有如此的性質(zhì)鹅经,我們就站在巨人的肩膀上,把這些能夠跳過升維計算量怎诫,但是確實對點進(jìn)行了升維操作的函數(shù)叫做核函數(shù)瘾晃。