PCA是什么
PCA(Principal Component Analysis)是一種常用的數(shù)據(jù)分析方法
PCA通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)表示,可用于提取數(shù)據(jù)的主要特征分量及高維數(shù)據(jù)的降維,而轉(zhuǎn)換后的這組變量便是我們所說的主成分
目的和原則
目的: 在機器學(xué)習(xí)中,實際處理的數(shù)據(jù)有成千上萬甚至幾十萬的維度,這種情況下機器學(xué)習(xí)的資源消耗是不可接受的,并且對算法的復(fù)雜度也有很大的影響,因此對數(shù)據(jù)降維是必要的
原則: 降維就意味著要舍去一些維度數(shù)據(jù),那么數(shù)據(jù)信息自然也會丟失,但是通常實際數(shù)據(jù)常常存在一定的相關(guān)性,我們在降維的同時應(yīng)盡可能的將信息損失降到最低
我們舉個例子,淘寶店鋪數(shù)據(jù)里的瀏覽量和訪客數(shù)一般有很強的正相關(guān)關(guān)系,下單數(shù)和成交數(shù)也具有很強的正相關(guān)關(guān)系,那么我們把瀏覽量和訪客數(shù)去掉其中一個,下單數(shù)和成交數(shù)去掉其中一個,對原來的數(shù)據(jù)信息不會丟失太多信息,這樣遍將原來四維數(shù)據(jù)降到了二維,那么機器學(xué)習(xí)算法的復(fù)雜度也會降低,由此我們也可以看出降維的核心是主要將原來的數(shù)據(jù)中維度之間相關(guān)性比較強的數(shù)據(jù)重新組合成維度之間相關(guān)性很小的數(shù)據(jù),在數(shù)學(xué)中,我們可以用協(xié)方差來表示。在PCA降維過程中,一般盡可能使最大方差的方向和新空間的軸對齊,取前面k個包含了絕大部分方差的坐標(biāo)軸,事實上,這相當(dāng)于只保留包含絕大部分方差的維度特征,而忽略包含方差幾乎為0的特征維度,實現(xiàn)對數(shù)據(jù)特征的降維處理。
PCA與數(shù)學(xué)理論
均值和零均值化
均值
在PCA降維過程中,我們所求的均值是每個維度的均值。
零均值化
然后將每個維度的數(shù)據(jù)進行零均值化,所謂零均值化就是讓均值為0,即每個數(shù)據(jù)都減去均值。
進行去均值的原因是如果不去均值的話會容易擬合。在神經(jīng)網(wǎng)絡(luò)中,如果特征值x比較大的時候,會導(dǎo)致W*x+b的結(jié)果也會很大,這樣進行激活函數(shù)(如relu)輸出時,會導(dǎo)致對應(yīng)位置數(shù)值變化量相對來說太小,進行反向傳播時因為要使用這里的梯度進行計算,所以會導(dǎo)致梯度消散問題,導(dǎo)致參數(shù)改變量很小,也就會易于擬合,效果不好。我們舉個最簡單的例子:
假如:y=x+10,現(xiàn)在有x1=90,x2=100,則兩個均值為95
不做零均值化:
零均值化后:
從上述結(jié)果我們看以看出零均值化后的變化量要比不做零均值要明顯的多,另外在后面做特征相關(guān)性處理時,零均值化也是有個很重要的作用
特征向量和特征值
定義
若A為n階矩陣,若數(shù)λ和n維非0列向量X滿足AX=λX,那么數(shù)λ稱為A的特征值,X稱為A的對應(yīng)于特征值λ的==特征向量==
在PCA降維過程中,本質(zhì)就是把原有數(shù)據(jù)投影到新的一個空間,我們也就可以看做是在原有數(shù)據(jù)基礎(chǔ)上求解特征向量和特征值
性質(zhì)
特征值和特征向量具有以下性質(zhì):
1.同一個矩陣的不同特征值對應(yīng)的特征向量是線性無關(guān)的
2.對于同一個特征值對應(yīng)的特征向量的非零線性組合仍是該特征值對應(yīng)的特征向量
3.矩陣的特征向量總是相對于矩陣的特征值而言,一個特征值具有特征向量不唯一,一個特征向量不能對應(yīng)不同特征值
從特征向量和特征值的性質(zhì)我們就可以發(fā)現(xiàn)正好符合PCA降維過程中取方差較大和線性不相關(guān)的前k維數(shù)據(jù)作為降維后數(shù)據(jù)的目的
方差
方差是是用來表示數(shù)據(jù)的離散程度的,方差越大,離散程度越大,也就是數(shù)據(jù)波動就越大。
方差的計算:前面已經(jīng)說了,需要先對每個維度的數(shù)據(jù)做零均值化,那么方差就是去均值后的平方和的均值
PCA中方差的意義:PCA的本質(zhì)就是找一些投影方向,使得數(shù)據(jù)在這些投影方向上的方差最大,而且這些投影方向是相互正交的(即:相關(guān)性幾乎為0)。這其實就是找新的正交基的過程,計算原始數(shù)據(jù)在這些正交基上投影的方差,方差越大,就說明在對應(yīng)正交基上包含了更多的信息量,對數(shù)據(jù)特征影響更大,我們暫且把這些信息量可以記為特征值。原始數(shù)據(jù)協(xié)方差矩陣的特征值越大,對應(yīng)的方差越大,在對應(yīng)的特征向量上投影的信息量就越大。反之,如果特征值較小,則說明數(shù)據(jù)在這些特征向量上投影的信息量很小,可以將小特征值對應(yīng)方向的數(shù)據(jù)刪除,從而達到了降維的目的。
協(xié)方差
協(xié)方差可以計算不同變量之間的相關(guān)性:
如果cov(x,y)=-1,變量之間完全負(fù)相關(guān)
如果cov(x,y)=1,變量之間完全正相關(guān)
如果cov(x,y)=0,變量之間完全不相關(guān)
而當(dāng)x和y相等時,協(xié)方差的值就等于方差,所以也可以看作方差是協(xié)方差的一種特殊情況
在PCA的過程中我們是對原始數(shù)據(jù)做過零均值化處理的,故,協(xié)方差可以變?yōu)椋?br>
那么每個維度之間的相關(guān)性計算方式為:
補充一句這里為什么是m-1而不是m,是為了能用樣本的協(xié)方差期望更好去逼近總體的協(xié)方差,也就是我們常說的”無偏估計“
協(xié)方差矩陣
協(xié)方差只能表示兩個維度變量之間的相互關(guān)系,如果有多個維度隨機變量,就需要使用協(xié)方差矩陣,我們假設(shè)現(xiàn)在又三個維度隨機變量x,y,z,那么對應(yīng)的協(xié)方差矩陣則為:
我們注意到在協(xié)方差矩陣中對角線元素就是各維度數(shù)據(jù)的方差
而協(xié)方差矩陣是一個實對稱矩陣,那么他就一定有特征向量和特征值,且不同特征值對應(yīng)的特征向量必然正交,而對角線元素又是方差,所以這時候問題就轉(zhuǎn)變?yōu)橹豢紤]方差(特征值)大小了,但是我們依舊需要得到特征向量用來構(gòu)造降維后的數(shù)據(jù)
協(xié)方差矩陣對角化
矩陣對角化定義
對角矩陣(diagonal matrix)是一個主對角線之外的元素皆為0的矩陣。對角線上的元素可以為0或其他值
如果存在一個可逆矩陣 P 使得 P-1AP 是對角矩陣,則矩陣A就被稱為可對角化矩陣
如果一個矩陣與一個對角矩陣相似,我們就稱這個矩陣可經(jīng)相似變換對角化,簡稱可對角化;與之對應(yīng)的線性變換就稱為可對角化的線性變換
協(xié)方差矩陣對角化
上文我們已經(jīng)說明了協(xié)方差矩陣是一個實對稱矩陣,由實對稱矩陣和相似矩陣性質(zhì)我們可以得出協(xié)方差矩陣C具有的性質(zhì):
和C相似的對角矩陣,其對角元素為各特征向量對應(yīng)的特征值(可能有重復(fù))即:C的特征值就是相似對角矩陣的對角元素
我們假設(shè)C的相似對角矩陣為A,那么如果存在一個矩陣P使得P-1CP=A,根據(jù)對角矩陣的特點,我們就可以發(fā)現(xiàn)矩陣P的每一行就是我們所要找的協(xié)方差矩陣的特征向量,而特征值就是對角矩陣的對角元素,現(xiàn)在我們離整個PCA過程還有一步,先把每一個特征向量變成單位向量,然后再按照特征值的大小進行排序,取前K行特征值對應(yīng)的單位向量組成的矩陣和原始數(shù)據(jù)相乘,就得到了我們需要的降維后的數(shù)據(jù)矩陣。
至此,已經(jīng)完成了整個PCA降維過程涉及到的數(shù)學(xué)理論
PCA過程總結(jié)
通過上面的數(shù)學(xué)理論闡述,總結(jié)一下PCA的過程:
1)將原始數(shù)據(jù)做轉(zhuǎn)置運算,每一行代表一個維度
2)每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值
3)得到原始數(shù)據(jù)的協(xié)方差矩陣
4)求出協(xié)方差矩陣的特征值及對應(yīng)的特征向量的單位向量
5)將特征向量按對應(yīng)特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P
6)用上面得到矩陣P和原始數(shù)據(jù)相乘,即可得到降維到k維后的數(shù)據(jù)
這里再補充說明一下,如果想看一下自己降維后的數(shù)據(jù)情況,可以將上述步驟逆行操作一遍重構(gòu)數(shù)據(jù),看看和原始數(shù)據(jù)有什么區(qū)別。理論上降維后數(shù)據(jù)肯定有少量的信息損失,所以重構(gòu)后數(shù)據(jù)和原始數(shù)據(jù)會有微小區(qū)別