目標(biāo):數(shù)據(jù)壓縮
如果數(shù)據(jù)特征過多,可能會(huì)產(chǎn)生冗余,你也會(huì)不太清楚自己到底有哪些特征嫂冻,需要哪些特征。
建立一條線塞椎,使每個(gè)點(diǎn)都投射到這條線上桨仿,然后建立新的特征.
將3維數(shù)據(jù)投影到一個(gè)平面上,就得到了二維數(shù)據(jù)點(diǎn)案狠。然后用一個(gè)二維數(shù)據(jù)來(lái)表示服傍。
目標(biāo)二:數(shù)據(jù)可視化
多維數(shù)據(jù)可視化困難钱雷,轉(zhuǎn)化成二維數(shù)據(jù)便于可視化,二維數(shù)據(jù)的坐標(biāo)可能沒有準(zhǔn)確的物理意義
主成分分析—PCA
數(shù)據(jù)降維最常用的方法就是PCA算法:PCA算法建立一個(gè)低維平面吹零,如下圖紅色線罩抗,然后將數(shù)據(jù)點(diǎn)投影在這個(gè)平面上,使投影誤差最小灿椅。在進(jìn)行PCA算法之前,首先要進(jìn)行均值歸一化和特征規(guī)范化茫蛹,使特征均值為0,且在可比較的范圍內(nèi)婴洼。
由上圖可以看出,紅色的線比紫色的線投影誤差較小柬采,更適合作為投影平面。
對(duì)于2D-1D礁遣,相當(dāng)于找到一個(gè)向量,將點(diǎn)投影到該向量上亡脸,使得投影誤差最小浅碾;對(duì)于高維數(shù)據(jù),相當(dāng)于找到多個(gè)向量垂谢。
上面左圖是線性回歸疮茄,右圖是PCA滥朱,兩圖計(jì)算距離的方式不同:線性回歸是計(jì)算每個(gè)x對(duì)應(yīng)的實(shí)際y值與擬合線的距離,因此力试,在計(jì)算距離的時(shí)候徙邻,距離線的方向是垂直于x軸的,表示同一個(gè)x對(duì)應(yīng)的距離差畸裳。而PCA計(jì)算的是點(diǎn)到線的投影距離缰犁,是點(diǎn)到線的最短距離,即正交距離。另一方面帅容,線性回歸中是給定x的值預(yù)測(cè)y,而在PCA中颇象,每一個(gè)x值擁有相同的權(quán)重。
在數(shù)據(jù)處理時(shí)并徘,首先進(jìn)行均值歸一化:求出所有數(shù)據(jù)點(diǎn)的均值遣钳,再用每一個(gè)數(shù)據(jù)減去均值,得到歸一化的樣本點(diǎn)麦乞,使數(shù)據(jù)都處于可比較的范圍內(nèi)蕴茴。
在進(jìn)行降維的時(shí)候,要找到合適的一個(gè)或多個(gè)向量進(jìn)行投影姐直,那么這些向量是如何得到的呢荐开?
首先建立一個(gè)相關(guān)系數(shù)矩陣,這里的表示的是相關(guān)系數(shù)矩陣简肴,他是一個(gè)n*n的矩陣,對(duì)矩陣進(jìn)行SVD計(jì)算百侧,即奇異值分解砰识,求得一個(gè)N*N的矩陣U,則根據(jù)需要佣渴,取U的前k列向量作為我們的投影向量辫狼。
得到k個(gè)向量以后,轉(zhuǎn)置得到k*n的矩陣辛润,與樣本X的N*N的矩陣相乘膨处,得到k*1新的矩陣,則投影完畢真椿。
總的來(lái)說(shuō)突硝,PCA算法如下:先進(jìn)行特征縮放解恰,然后計(jì)算sigma函數(shù)求得一個(gè)n*n的矩陣浙于;對(duì)求出的矩陣進(jìn)行SVD分解羞酗,取前k個(gè)向量作為投影向量Ureduce;轉(zhuǎn)置的投影矩陣右乘樣本x完成降維围苫。
主成分?jǐn)?shù)量的選擇
計(jì)算兩個(gè)指標(biāo)剂府,Average squared projection error和Total variation in the data腺占,然后根據(jù)上述公式計(jì)算指標(biāo)痒谴,選擇對(duì)應(yīng)最小指標(biāo)的向量個(gè)數(shù)k.99%通常表示新形成的特征保留了原有數(shù)據(jù)99%的信息积蔚。指將映射后的數(shù)據(jù)壓縮重現(xiàn)后得到的近似值意鲸,壓縮重現(xiàn)方法見后文怎顾。
進(jìn)行向量數(shù)目選擇的時(shí)候槐雾,首先設(shè)定一個(gè)k值募强,然后計(jì)算指標(biāo)擎值,然后改變k值在計(jì)算一次幅恋,選擇指標(biāo)最小的k的數(shù)目泵肄。在實(shí)際計(jì)算中有較為簡(jiǎn)便的方法:SVD分解的時(shí)候求得的S是一個(gè)對(duì)角陣腐巢,通過對(duì)角陣上的數(shù)據(jù)計(jì)算指標(biāo),這樣就不用重復(fù)設(shè)置k值進(jìn)行計(jì)算和比較肉瓦,只用根據(jù)s矩陣進(jìn)行計(jì)算即可。
先進(jìn)行SVD分解哪雕,然后根據(jù)S矩陣計(jì)算指標(biāo)斯嚎,然后進(jìn)行選擇挨厚。
壓縮重現(xiàn)
在之前的計(jì)算中都是對(duì)數(shù)據(jù)進(jìn)行壓縮降維疫剃,那么壓縮的數(shù)據(jù)怎么還原成原來(lái)的高維數(shù)據(jù)呢?
PCA的使用建議
在有標(biāo)簽的數(shù)據(jù)中,可以先忽略標(biāo)簽壤躲,對(duì)樣本進(jìn)行PCA計(jì)算,先對(duì)樣本進(jìn)行特征縮放和均值歸一化處理,然后求sigma函數(shù)和SVD分解棉胀,找到投影向量冀膝,根據(jù)投影向量求得新的特征向量窝剖。但是PCA這一過程即特征選擇必須在訓(xùn)練集上進(jìn)行,求得的投影向量可以用于驗(yàn)證集和測(cè)試集脊奋。上例中诚隙,我們假設(shè)將10000維的數(shù)據(jù)降到了1000維久又,這其實(shí)是不切實(shí)際的,通常降維處理只能將數(shù)據(jù)維度降維1/5或1/10炉峰,保留大部分的方差從而幾乎不影響性能疼阔,如分類精度和準(zhǔn)確度适瓦。
PCA可以壓縮數(shù)據(jù)玻熙,從而可以降低數(shù)據(jù)占據(jù)的存儲(chǔ)空間嗦随,提高學(xué)習(xí)算法的效率,這一過程通過根據(jù)信息保留指標(biāo)的大小來(lái)選擇合適的k值來(lái)實(shí)現(xiàn)贴浙,通常指標(biāo)大小為99%崎溃。另一方面盯质,PCA可以幫助實(shí)現(xiàn)可視化呼巷,將數(shù)據(jù)講到2維或3維王悍。
PCA算法不能用來(lái)防止過擬合压储!因?yàn)镻CA在進(jìn)行降維的時(shí)候只考慮到了輸入x的信息,而不管對(duì)應(yīng)的標(biāo)簽y,在進(jìn)行降維時(shí)會(huì)丟失很多信息宇整。即使其信息保留程度達(dá)到了99%鳞青,其效果也不會(huì)比正則化防止過擬合更好。
PCA在適當(dāng)?shù)臅r(shí)候使用是很有效的厚脉,但是胶惰,在建立學(xué)習(xí)系統(tǒng)之前,不要急著使用PCA中捆,現(xiàn)在原始數(shù)據(jù)上進(jìn)行試驗(yàn)泄伪,除非你真的確定進(jìn)行不下去或者計(jì)算太復(fù)雜蟋滴,存儲(chǔ)空間不夠的情況下津函,在使用PCA孤页,很多情況下直接使用原始數(shù)據(jù)效果可能更好行施。