版權(quán)聲明:本文為博主原創(chuàng)文章赖条,轉(zhuǎn)載請注明出處和作者创夜,商業(yè)轉(zhuǎn)載請聯(lián)系作者(huxingfei097@163.com)锤悄,謝謝合作闯第!
本節(jié)內(nèi)容涉及對主成分分析算法的推導能犯,推導主要應(yīng)用線性代數(shù)知識拣宏,如果對線性代數(shù)知識不太熟悉沈贝,可以參考我的上一篇文章:深度學習(一):線性代數(shù)基礎(chǔ)
-
概念:
? 主成分分析(principal components analysis, PCA)是一個簡單的機器學習降維算法。通俗的講蚀浆,PCA降維就是通過線性變換缀程,減少數(shù)據(jù)維度,保留數(shù)據(jù)主要的信息市俊。在機器學習中杨凑,該技術(shù)多應(yīng)用于數(shù)據(jù)可視化和特征選擇,由于處理的數(shù)據(jù)是無標簽的摆昧,通過維度的線性變換而來撩满,所以是無監(jiān)督降維方法。 -
直觀解釋:
? 數(shù)據(jù)集合中的樣本由實數(shù)空間(正交坐標系)中的點表示绅你,空間中的一個坐標軸表示一個變量伺帘,規(guī)范化處理后得到的數(shù)據(jù)分布在原點(空間中的原點)附近。主成分分析就是對坐標系進行旋轉(zhuǎn)變換忌锯,將數(shù)據(jù)投影到新坐標系的坐標軸上:新坐標系的第一坐標軸伪嫁、第二坐標軸等分別表示第一主成分、第二主成分等偶垮,數(shù)據(jù)在每一軸上的坐標值的平方表示相應(yīng)變量的方差张咳,并且帝洪,這個坐標系是在所有可能的新的坐標系中,坐標軸上的方差最大的脚猾。下圖展示了在二維空間中對一個斜橢圓進行主成分分析(其中葱峡,x1,x2為原坐標軸龙助,y1砰奕,y2為主成分分析變換之后的坐標系,y1為第一主成分對應(yīng)原橢圓的長軸提鸟,y2為第二主成分對應(yīng)原橢圓的短軸):
主成分分析示例 | 主成分分析的幾何解釋 |
? 上方右圖是主成分分析的幾何解釋军援。主成分分析要求在新的坐標軸中方差最大,即意味著沽一,對于樣本點 A盖溺,B,C铣缠,投影到y(tǒng)1上得到A'烘嘱,B',C'蝗蛙,OA'2 + OB'2 + OC'2最大蝇庭,等價于樣本點到y(tǒng)1軸的距離的平方和AA'2 + AB'2 + AC'2最小。所以捡硅,主成分分析在旋轉(zhuǎn)變換中等價于選取離樣本點的距離平方和最小的軸哮内,作為第一主成分,第二主成分的選取壮韭,在保證與已選坐標軸正交的條件下北发,類似的進行。
-
算法過程:
? 主成分分析喷屋,首先要對給定數(shù)據(jù)進行規(guī)范化琳拨,使得每一變量的平均值為0,方差為1屯曹,然后順序地找一組相互正交的坐標軸狱庇。其中,第一個新坐標軸選擇是原始數(shù)據(jù)中方差最大的方向恶耽,第二個新坐標軸選取是與第一個坐標軸正交的平面中使得方差最大的密任,第三個軸是與第1,2個軸正交的平面中方差最大的。依次類推偷俭,可以得到n個這樣的坐標軸浪讳。通過這種方式獲得的新的坐標軸,大部分方差都包含在前面k個坐標軸中涌萤,后面的坐標軸所含的方差幾乎為0驻债。于是乳规,可以忽略余下的坐標軸形葬,只保留前面k個含有絕大部分方差的坐標軸合呐。事實上,這相當于只保留包含絕大部分方差的維度特征笙以,而忽略包含方差幾乎為0的特征維度淌实,從而實現(xiàn)對數(shù)據(jù)特征的降維處理。 -
主成分分析的求解:
? ** 設(shè) x 是 m 維隨機變量猖腕,∑ 是x的協(xié)方差矩陣拆祈,∑的特征值分別是 λ1 ≥ λ1 ≥ λ2 ≥ ... ≥ λm ≥ 0,特征值對應(yīng)的單位向量分別是 α1,α2 ... αm倘感,則 x 的第k主成分是:
?????? yk = αkT x = α1kx1 + α2kx2 + ... +αmkxm
x 的第k主成分的方差是:
?????? var(yk) = αkT Σ αk, ? k = 1,2,3放坏,...,m
即協(xié)方差矩陣的第k個特征值(若特征值有重根老玛,對應(yīng)的特征向量組成m維空間Rm的一個子空間淤年,子空間的維數(shù)等于重根數(shù),在子空間任取一個正交坐標系蜡豹,這個坐標系的單位向量可作為特征向量麸粮,取法不唯一!)镜廉。 -
具體推導(拉格朗日乘子法):
? 先求 x 的第一主成分 y1 = α1T x弄诲。即求系數(shù)向量 α1,其中 α1 是在α1T α1 = 1的條件下娇唯,x 的所有線性變換中使方差 var(α1 x) = α1T Σα1 ( 注意:Σ 不是求和符號齐遵,而是協(xié)方差矩陣,Σ = cov( x , x ) =E[( x - μ)( x - μ)T] )達到最大(求解約束最優(yōu)化問題)塔插。
????? maxα1 = α1T Σ α1 ? s.t α1T α1 = 1
定義拉格朗日函數(shù):
????? α1T Σα1 - λ(α1T α1 - 1)
對 α1 求導梗摇,并令其為0,得:
????? Σα1 - λ α1 = 0
因此佑淀,λ 是Σ 的特征值留美,α1 是對應(yīng)的單位向量。即:
????? α1T Σ α1 = α1T λ α1 = λ α1T α1 = λ
所以伸刃,α1T x谎砾,構(gòu)成第一主成分,其方差對于協(xié)方差矩陣的最大特征值:
????? var(α1T x) = α1T Σ α1 = λ1
? 接著求x的第二主成分 y2 = α2T x捧颅,第二主成分是在α2 是在α2Tα2 = 1景图,且 α2T x 與 α1T x 不相關(guān)的條件下,x 的所有線性變換中使方差 var(α2T x ) = α2T Σ α2 達到最大的碉哑。
? 求第二主成分同樣需要求解約束最優(yōu)化問題挚币。
? ? ? ?? maxα2 α2T Σ α2? α1T Σ α2 = 0亮蒋,α2T Σ α1,α2T α2 = 0
注意到:
?? ??α1T Σ α2 = α2T Σ α1 = α2T λα1 = λ α2T α1 = λ α1T α2
并且:
?????α1T α2 = 0 ?? α2T α1 = 0
定義拉格朗日函數(shù):
?????α2T Σ α2 - λ(α2T α2 - 1) - фα2T α1
其中 λ妆毕,ф都是拉格朗日乘子慎玖,對 α2 求導,并令其為0笛粘,得到:
?????2Σ α2 - 2λ α2 - фα1 = 0
將方程左乘 α1T:
?????2α1TΣα2 - 2λ α1T α2 - фα1T****α1 = 0
此式子前兩項為0趁怔,且 α1T****α1 = 1,得出 ф = 0薪前,則拉格朗日函數(shù)導數(shù)可以表示為:
????? Σα2 - λ α2 = 0
因此润努,λ是Σ的特征值,α2是對應(yīng)的單位向量示括。即:
????? α2T Σ α2 = α2T λ α2 = λα2T α2 = λ
于是 α2T x 構(gòu)成第二主成分铺浇,其方差對于協(xié)方差矩陣的第二大特征值:
????? var(α2T x) = α2T α2 = λ2
? 以此類推, x 的第 k 主成分是 αkT x垛膝,并且 var(αkT x) = λk鳍侣,其中,λk是 Σ 的第k個特征值繁涂,并且是 αk 對應(yīng)的單位特征向量拱她。
花書上采用的是計算 Frobenius 范數(shù)來推導的,個人感覺要難懂一些扔罪,感興趣可以看一下
推導過程:
?通常使用矩陣乘法來實現(xiàn)PCA秉沼。對于每一個點x(i)∈Rn,會存在一個編碼后的對應(yīng)向量c(i)∈Rl(一般l會小于n)。為了簡化矿酵,使用矩陣乘法將編碼后的向量映射回 Rn唬复,即滿足 x ≈ g(c) = D c,其中D∈Rn * l 是定義的解碼矩陣全肮。
? PCA算法限定 D 中的列向量彼此正交敞咧,并且都有單位范數(shù)。
? 首先需要明確的是如何根據(jù)每一個輸入 x 得到一個最優(yōu)編碼 c 辜腺。一種做法是使用 L2 范數(shù)來衡量原始向量 x 與重映射后的結(jié)果 g(c)之間的距離休建。在PCA算法中,使用 L2 范數(shù):
? ? ? ? ? (x -g(c))T (x -g(c))
? ? ? ? = xT x - xT g(c) - g(c)T x + g(c)T g(c)
? ? ? ? = xT x - 2xT g(c) + g(c)T g(c)?(g(c)Tx是一個標量测砂,轉(zhuǎn)置為自身)
? 因為第一項xT x不依賴于c,所以可以忽略得到下述優(yōu)化目標:
? ? ? ? c* = (arg min)c - 2xT g(c) + g(c)T g(c)
? 更進一步百匆,代入g(c)的定義可得:
? ? ? ? c* = (arg min)c - 2xT D c + cT DT D c
(矩陣D的正交性和單位范數(shù)約束)
? ? ? ?? ?= (arg min)c - 2xT D c + cT Il c
? ? ? ?? ?= (arg min)c - 2xT D c + cTc
? 可以通過向量微積分來求解該最優(yōu)化問題(如果不太清楚矩陣求導砌些,可以參考:矩陣求導術(shù))
? ? ? ?? ?c (- 2xT D c + cTc) = 0
? ? ? ???? - 2DT x + 2c = 0
? ? ?????? ? c = DT x
? 即若要得到最優(yōu)編碼 c,只需要一個矩陣向量乘法即可,可令 f(x) = DT x存璃,進一步使用矩陣乘法仑荐,還可以定義PCA重構(gòu)(即重新升維到x的維度)操作:
? ? ???? (x≈)r(x) = g(f(x)) = D DT x
? 接下來需要挑選編碼矩陣D∽荻可以采用最小化所有維度上點的誤差矩陣的Frobenius范數(shù):
? 以上的推導是基于 l =1 的情況的子檀,僅僅得到了第一個主成分镊掖。當我們希望得到主成分的基時,矩陣D由前l(fā)個最大的特征值對應(yīng)的特征向量組成褂痰。
參考資料:
? 《深度學習》
? 《統(tǒng)計學習方法》
本系列相關(guān)文章
深度學習(六):前向傳播算法和后向傳播算法
深度學習(五):機器學習基礎(chǔ)
深度學習(四):數(shù)值計算基礎(chǔ)
深度學習(三):概率與信息論基礎(chǔ)
深度學習(一):線性代數(shù)基礎(chǔ)
深度學習新手亩进,文章若有疏漏,歡迎及時指正缩歪!