特征提取與特征選擇(一)主成分分析PCA:小朋友,你是否有很多問(wèn)號(hào)???

一、前言

毫不夸張地說(shuō),主成分分析(Principal Component Analysis)面前,在座的各位都是小朋友,PCA算法距離1901年提出已經(jīng)過(guò)了一百多年,縱然世紀(jì)更迭,但是許多人對(duì)PCA算法在人臉識(shí)別領(lǐng)域中的應(yīng)用仍然逃不過(guò)真香定律,它仍然是目前最簡(jiǎn)單的以特征量分析多維度統(tǒng)計(jì)分布的方法,沒(méi)有之一,可以說(shuō)是算法必掌握之利器。


image

二、為什么要有主成分分析

和這個(gè)系列名對(duì)應(yīng),主成分分析是特征提取的一個(gè)常用算法。這時(shí)肯定有人對(duì)特征提取和特征選擇的區(qū)別產(chǎn)生疑問(wèn),簡(jiǎn)單來(lái)說(shuō),特征提取是從N個(gè)特征中,通過(guò)構(gòu)造M個(gè)函數(shù)的方式,獲得M個(gè)特征,這里每個(gè)特征都是包含了前N個(gè)特征得出的。而特征選擇就是“單純的”從樣本的N個(gè)特征中選出前M個(gè)最matter(比如在人臉識(shí)別中使得識(shí)別率最高的)的特征。這兩種情況下,M都是小于N的,直觀來(lái)講,比如我從樣本集中拿出一個(gè)神奇寶貝X_i,他可能包含有N個(gè)特征,比如X_{i1}是它的類(lèi)系,X_{i2}使它的攻擊力,X_{i3}使它的防御力,等等,那么由此得來(lái)的樣本X_{i}的特征空間可以表示為X_i = \left[ \begin{matrix} X_{i1}\\ X_{i2} \\ X_{i3} \\ ... \\ X_{iN} \\ \end{matrix} \right],而這樣的N個(gè)維度有時(shí)對(duì)于實(shí)際問(wèn)題來(lái)說(shuō)可能太多了,需要減少樣本的維度,而這時(shí)候,主成分分析就要來(lái)秀一波了,它是降低數(shù)據(jù)維度的一把好手,比如這個(gè)問(wèn)題,他就可以提取出M個(gè)特征使得神奇寶貝的勝率達(dá)到最高。
但是要注意,這里重新得到的X_{i1},X_{i2},等等已經(jīng)和之前的不一樣了,事實(shí)上,這里的每個(gè)新特征(X_{im} ,m \in 1到M)是關(guān)于之前N個(gè)特征的綜合考慮,可以表示為,X_i = \left[ \begin{matrix} f_{1}(X_{i1},...,X_{iN})\\ f_{2}(X_{i1},...,X_{iN}) \\ f_{3}(X_{i1},...,X_{iN}) \\ ... \\ f_{M}(X_{i1},...,X_{iN}) \\ \end{matrix} \right],\,M<N

三、二維主成分分析

OK,我們由淺入深,先來(lái)考慮一下二維情況時(shí)的主成分分析,也就是N=2,M=1的情況,這樣每個(gè)樣本點(diǎn)都分布在一個(gè)二維平面上,我們可以用一個(gè)二維坐標(biāo)系表示。

優(yōu)化問(wèn)題得出

好,那我們要拿主成分分析來(lái)干嘛呢?我們想要作特征提取,也就是把X_1,X_2這兩個(gè)特征“融合”成一個(gè)特征用來(lái)作后續(xù)勝率的分析。試想一下,如果我們要考慮皮卡丘和杰尼龜(假設(shè)只有攻擊力和防御力這兩個(gè)特征)戰(zhàn)斗的勝率,X_1表示攻擊力,X_2表示防御力,那么我們希望找一個(gè)特征(也就是找一個(gè)軸),把原本在二維坐標(biāo)系上的點(diǎn)還能投影到這個(gè)坐標(biāo)軸上的對(duì)應(yīng)位置,以使得所有樣本分布盡可能不變。

image

我們可以畫(huà)出這樣的坐標(biāo)系,皮卡丘和杰尼龜分別用P和J點(diǎn)代替,皮卡丘的攻擊力較高,杰尼龜?shù)姆烙^高,那怎么判斷誰(shuí)獲勝的可能性比較大呢?很顯然,對(duì)這兩個(gè)特征做個(gè)綜合,具體怎么說(shuō)呢?就是給分別一個(gè)權(quán)重,然后得到一個(gè)新的特征能力值綜合考慮了他們的攻擊力和防御力,這樣把P1,J1這兩個(gè)二維坐標(biāo)投影到一維上,然后比較P2,J2,就能估計(jì)勝率啦!

image

很好,照著這個(gè)思路,也就是我們需要構(gòu)造一個(gè)函數(shù),也就是找出A和b使得所有的樣本點(diǎn)在這條線(xiàn)上的投影盡可能分散,以便我們借助我們新得的這個(gè)特征Y盡可能區(qū)分開(kāi)他們,由此我們得出,也就是上圖中的F1方向。

假設(shè)現(xiàn)在我們有P個(gè)樣本點(diǎn),\left\{X_i\right\},i= 1到p,這樣,可以把Y = AX + b改造為Y = A(X - \bar X),其中\bar X = \frac{1}{p}\sum_{i=1}^pX_p,當(dāng)我們想要把N維向量降為M維時(shí),很顯然(X - \bar X)應(yīng)該是Mx1的矩陣,而A應(yīng)該是NxM的矩陣,假設(shè)A = \left[ \begin{matrix} a1\\ a2 \\ a3 \\ ... \\ a_M \\ \end{matrix} \right],其中a向量是Mx1的矩陣,這里的a1等等實(shí)際上就表示M個(gè)方向,在這M個(gè)方向上投影就得到M個(gè)值。(Tips:搞清楚各個(gè)向量的維度對(duì)理解后續(xù)推導(dǎo)至關(guān)重要,請(qǐng)停下來(lái)思考一下。),所以Y向量為,Y = \left[ \begin{matrix} Y_{i1}\\ Y_{i2} \\ Y_{i3} \\ ... \\ Y_{iM} \\ \end{matrix} \right] =\left[ \begin{matrix} a1(X_i-\bar X)\\ a2(X_i-\bar X) \\ a3(X_i-\bar X) \\ ... \\ a_M(X_i-\bar X) \\ \end{matrix} \right]

Great!通過(guò)前面這樣的一通分析,我們終于有了目標(biāo),有了目標(biāo)就可以嘗試得出優(yōu)化問(wèn)題的目標(biāo)函數(shù)和約束,現(xiàn)在,我們只考慮有p個(gè)樣本的二維情況,所以N=2,M=1,這樣很簡(jiǎn)單,Y就是一個(gè)值,我們要最大化方差,也就是最大化\sum_{i=1}^p(y_{i1}-\bar y_{i1})^2,接下來(lái)我們就嘗試把這個(gè)目標(biāo)函數(shù)化為樣本點(diǎn)X相關(guān),過(guò)程很容易。
實(shí)際上\bar y_{i1} = 0,所以
\sum_{i=1}^p(y_{i1}-\bar y_{i1})^2 =\sum_{i=1}^p(y_{i1})^2=\sum_{i=1}^p[a1(X_i-\bar X)]^2

=\sum_{i=1}^p[a1(X_i-\bar X)][a1(X_i-\bar X)]^T

= a1[\sum_{i=1}^p(X_i-\bar X)(X_i-\bar X)^T] a1^T

我們定義\sum_{i=1}^p(X_i-\bar X)(X_i-\bar X)^T為協(xié)方差矩陣\sum(covariance matrix),這樣目標(biāo)函數(shù)可以簡(jiǎn)化為Maxmize \,\,a1\sum a1^T,約束條件可以在a1方向上單位化,不影響方向表示,卻可以極大簡(jiǎn)化后續(xù)計(jì)算。所以?xún)?yōu)化問(wèn)題為,
Maxmize \,\,(a_1\sum a_1^T)$$$$Subject \,to:\,a_1a_1^T = 1 \tag 1

解優(yōu)化問(wèn)題

得到要解的優(yōu)化問(wèn)題后,又又又到了我們喜聞樂(lè)見(jiàn)的拉格朗日乘子法和求導(dǎo)運(yùn)算,求極值的階段了。(貼一下這位可愛(ài)的科學(xué)家)

image

這次優(yōu)化問(wèn)題的解相比于前面幾篇支持向量機(jī)的推導(dǎo)要簡(jiǎn)單很多,我會(huì)用最簡(jiǎn)單的方法介紹,各位看官耐心且看。
首先利用拉格朗日乘子法構(gòu)造函數(shù)
接下來(lái),祖?zhèn)魇炙嚽髮?dǎo),
所以,,怎么樣?看這個(gè)式子是不是很熟悉,沒(méi)錯(cuò),是協(xié)方差矩陣的特征向量,是協(xié)方差矩陣的特征值。
怎么理解特征值和特征向量呢?比如我們把矩陣看作運(yùn)動(dòng),對(duì)于運(yùn)動(dòng)而言,它最重要的特征當(dāng)然是速度和方向,

  • 特征值就表示運(yùn)動(dòng)的速度
  • 特征向量就表示運(yùn)動(dòng)的方向

那這里的這里的特征值和特征向量表示什么意義呢?我們思考一波,我們要最大化a_1\sum a_1^T,由上面(1)式,也就是最大化a_1\lambda a_1^T,又約束條件a_1 a_1^T =1,所!以!我們就是要最大化特征值\lambda(也就是最大化目標(biāo)函數(shù)方差呀朋友萌?。?,到這里,我們總結(jié)出,
{\color{red} a_1 表示使Y分布方差最大的方向}, {\color{red}而 \lambda 表示方差}
所以\lambda\sum最大的特征值,a_1\sum最大的特征值\lambda對(duì)應(yīng)的特征向量,并且a_1 a_1^T =1。

Good job!我們找到了a_1,也就找到了二維問(wèn)題中使方差最大的方向。

四、多維情況求解

解決掉可以直觀想象的分布統(tǒng)計(jì)問(wèn)題之后,我們來(lái)點(diǎn)稍有挑戰(zhàn)性的,怎么求多維(N>2)向量除a_1外的其它維度a_2,a_3,a_4,....,a_M呢?一開(kāi)始,我們就說(shuō)明矩陣A的各個(gè)維度實(shí)際上表示的是不同的方向,我們要在每個(gè)方向都盡可能使方差大,比如我們要找a_2方向,那么同樣,Maxmize \,\,(a_2\sum a_2^T)$$$$Subject \,to: \,\,\,\,\,a_2a_2^T = 1$$$$a_2a_1^T = a_1 a_2^T = 0 \tag 3,注意,這里唯一的不同就是,要添加a_1a_2正交,說(shuō)明在三維降二維時(shí),a_2方向是唯一確定的,莫得選擇。
接下來(lái),繼續(xù)祖?zhèn)魇炙嚴(yán)窭嗜粘俗臃忧髮?dǎo),引入系數(shù)\lambda\beta,構(gòu)造函數(shù)\Theta(a_1) = a_2\sum a_2^T - \lambda(a_2a_2^T-1) - \beta a_1 a_2^T接下來(lái),和前面二維情況差不多,\frac{\partial \Theta}{\partial a_2} = (\sum a_2^T - \lambda a_2^T-\beta a_1^T)^T =0
以下,簡(jiǎn)單推導(dǎo)一下吧,方便理解,\frac{\partial \Theta}{\partial a_2} = (a_2 \sum - \lambda a_2-\beta a_1)^T =0,兩邊同乘以a_1^T,得到\frac{\partial \Theta}{\partial a_2} = (a_2 \sum a_1^T - \lambda a_2a_1^T-\beta (a_1a_1^T))^T =0,就等于\frac{\partial \Theta}{\partial a_2} = (a_2 \lambda a_1^T - \lambda a_2a_1^T-\beta) =0看看這個(gè)式子,u1s1,漂亮!全都能照著約束條件約去(現(xiàn)在體會(huì)到約束的好處了吧),得到
\beta =0,同時(shí),\sum a_2^T = \lambda a_2^T,所以怎么樣,是不是第二個(gè)優(yōu)化問(wèn)題(3)和第一個(gè)優(yōu)化問(wèn)題(1)就一樣了?最大化a_2\sum a_2^T = \lambda,再次求最大的\lambda,但是此時(shí)最大已經(jīng)被a_1占去,咋辦?嗐,退而求其次,取第二大吧。

image

所以,嚴(yán)肅嚴(yán)肅,我們要放大招了,拋出結(jié)論,

相信聰明的你已經(jīng)猜到了NxM矩陣A的其他維度的值了,就不用我一遍一遍重復(fù)推導(dǎo)了吧。
image

得出結(jié)論,就是協(xié)方差矩陣第三大特征值對(duì)應(yīng)的特征向量,依次類(lèi)推。由此確定了NxM矩陣,這就是一個(gè)M維度的坐標(biāo)系呀,盆友萌,我們成功把N維坐標(biāo)系的樣本成功移到我們自己構(gòu)建的M維坐標(biāo)系上了呀,撒花撒花!其中每個(gè)軸都是我們自己辛苦求出來(lái)的哦。

五、總結(jié)一波

好的,經(jīng)過(guò)你不懈的努力,總算把PCA算法盤(pán)下來(lái)了,我們最后總結(jié)一下,回顧一遍,你能有更深的理解。

  1. 拿到一堆樣本,果斷求協(xié)方差矩陣\sum =\sum_{i=1}^p(X_i-\bar X)(X_i-\bar X)^T;
  2. 有了結(jié)論,直接用。求出\sum的特征值及其對(duì)應(yīng)的特征向量,并且從大到小排序,以備取用;
  3. 歸一化所有的方向a_i;
  4. 得到前M維方向向量A = \left[ \begin{matrix} a1\\ a2 \\ a3 \\ ... \\ a_M \\ \end{matrix} \right]
  5. 得到M維坐標(biāo)系后,果斷把這P個(gè)在N維坐標(biāo)系上的樣本點(diǎn)映射過(guò)去,Y = A(X_i - \bar X),其中i=1 到 P。

PCA:“小朋友,讀到這里,你還有很多問(wèn)號(hào)嗎?”

原文搬運(yùn)自我的博客,歡迎持續(xù)關(guān)注。
創(chuàng)作不易,你的鼓勵(lì)是我創(chuàng)作的動(dòng)力,如果你有收獲,點(diǎn)個(gè)贊吧??


我接下來(lái)還會(huì)陸續(xù)更新機(jī)器學(xué)習(xí)相關(guān)的學(xué)習(xí)筆記,補(bǔ)充這個(gè)系列。如果看到這里的話(huà),說(shuō)明你有認(rèn)真看這篇文章,希望你能有所收獲!最后,歡迎交流指正!

還有不明白的歡迎閱讀其他文章:
通俗講解支持向量機(jī)SVM(一)面試官:什么?線(xiàn)性模型你不會(huì)不清楚吧?
通俗講解支持向量機(jī)SVM(二)另辟蹊徑!對(duì)偶性的幾何解釋
通俗講解支持向量機(jī)SVM(三)SVM處理非線(xiàn)性問(wèn)題及軟間隔之引出
通俗講解支持向量機(jī)SVM(四)用盡洪荒之力把核函數(shù)與核技巧講得明明白白(精華篇)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容