07 特征工程 - 特征降維 - PCA

06 特征工程 - 特征選擇

特征降維必須在特征選擇做完以后才能進(jìn)行。

當(dāng)特征選擇完成后,可以直接可以進(jìn)行訓(xùn)練模型了,但是可能由于特征矩陣過大,導(dǎo)致計算量比較大,訓(xùn)練時間長的問題,因此降低特征矩陣維度也是必不可少的。

常見的降維方法除了基于L1的懲罰模型外,還有主成分析法(PCA)線性判別分析法(LDA),這兩種方法的本質(zhì)都是將原始數(shù)據(jù)映射到維度更低的樣本空間中;

但是采用的方式不同,PCA是為了讓映射后的樣本具有更大的發(fā)散性,LDA是為了讓映射后的樣本有最好的分類性能。

除了使用PCA和LDA降維外,還可以使用主題模型來達(dá)到降維的效果。主題模型主要還是用在自然語言處理中的。如果找到一個互聯(lián)網(wǎng)產(chǎn)品的用戶日志還用主題模型去降維那效果就非常不好了,這個時候還是要用PCA和LDA來處理。

在實際的機(jī)器學(xué)習(xí)項目中,特征選擇/降維是必須進(jìn)行的,因為在數(shù)據(jù)中存在以下幾個方面的問題:
1、數(shù)據(jù)的多重共線性:特征屬性之間存在著相互關(guān)聯(lián)關(guān)系。多重共線性會導(dǎo)致解的空間不穩(wěn)定,從而導(dǎo)致模型的泛化能力弱;
2、高緯空間樣本具有稀疏性,導(dǎo)致模型比較難找到數(shù)據(jù)特征;
3、過多的變量會妨礙模型查找規(guī)律;
4、僅僅考慮單個變量對于目標(biāo)屬性的影響可能忽略變量之間的潛在關(guān)系。

PCA降維: 新數(shù)據(jù)是原數(shù)據(jù)的一個線性表達(dá),如下圖:

降維后的數(shù)據(jù)Z11,其實已經(jīng)包含了原數(shù)據(jù)x1~xn之間的某些潛在關(guān)系

通過降維的目的是:
1、減少特征屬性的個數(shù)。
2、確保特征屬性之間是相互獨(dú)立的。


降維-PCA

主成分分析(PCA): 將高緯的特征向量合并成為低緯度的特征屬性,是一種無監(jiān)督的降維方法。

n_components:產(chǎn)生新特征的個數(shù)。
另外explained_variance_ratio_等重要方法,參考:scikit-learn PCA類介紹


PCA原理

PCA(Principal Component Analysis)是常用的線性降維方法,是一種無監(jiān)督的降維算法。算法目標(biāo)是通過某種線性投影,將高維的數(shù)據(jù)映射到低維的空間中表示,并且期望在所投影的維度上數(shù)據(jù)的方差最大(最大方差理論),以此使用較少的數(shù)據(jù)維度,同時保留較多的原數(shù)據(jù)點的特性。

通俗來講的話,如果將所有點映射到一起,那么維度一定降低下去了,但是同時也會將幾乎所有的信息(包括點點之間的距離等)都丟失了,而如果映射之后的數(shù)據(jù)具有比較大的方差,那么可以認(rèn)為數(shù)據(jù)點則會比較分散,這樣的話,就可以保留更多的信息。從而我們可以看到PCA是一種丟失原始數(shù)據(jù)信息最少的無監(jiān)督線性降維方式。

在PCA降維中,數(shù)據(jù)從原來的坐標(biāo)系轉(zhuǎn)換為新的坐標(biāo)系,新坐標(biāo)系的選擇由數(shù)據(jù)本身的特性決定。
第一個坐標(biāo)軸選擇原始數(shù)據(jù)中方差最大的方向,從統(tǒng)計角度來講,這個方向是最重要的方向;
第二個坐標(biāo)軸選擇和第一個坐標(biāo)軸垂直或者正交的方向;
第三個坐標(biāo)軸選擇和第一個、第二個坐標(biāo)軸都垂直或者正交的方向;
該過程一直重復(fù),直到新坐標(biāo)系的維度和原始坐標(biāo)系維度數(shù)目一致的時候結(jié)束計算。
而這些方向所表示的數(shù)據(jù)特征就被稱為“主成分”。

PS: WTxi 中的WT是一個線性變換,通過這個向量,使得上圖左邊的樣子變成了右邊的樣子。

假設(shè)X是已經(jīng)中心化(z-score)過的數(shù)據(jù)矩陣,每列一個樣本(每行一個特征);樣本點xi在新空間中的超平面上的投影是:WTxi;若所有樣本點的投影能夠盡可能的分開,則表示投影之后的點在各個維度上的方差應(yīng)該最大化,那么投影樣本點的各個維度方差和可以表示為:

對用的就是中心化(z-score)的思想

為什么要中心化?

從而我們可以得到PCA的最優(yōu)目標(biāo)函數(shù)是:

在PCA的目標(biāo)函數(shù)基礎(chǔ)上,帶入拉格朗日求解最終,可以得到最終的拉格朗日函數(shù)函數(shù)為:

對拉格朗日函數(shù)求偏導(dǎo)數(shù)0:

可以發(fā)現(xiàn)如果,此時將XXT看成一個整體A,那么求解W的過程恰好就是求解矩陣A的特征向量的過程,所以我們可以認(rèn)為PCA的計算其實就是對進(jìn)行去中心化后的數(shù)據(jù)的協(xié)方差矩陣求解特征值和特征向量。


PCA的執(zhí)行過程

輸入: 樣本集X={x1,x2,...,xn};每個樣本有m維特征,X是一個m行n列的矩陣。
步驟:
1、數(shù)據(jù)中心化:對X中的每一行(即一個特征屬性)進(jìn)行零均值化,即減去這一行的均值。
2、求出數(shù)據(jù)中心化后矩陣X的協(xié)方差矩陣(即特征與特征之間的協(xié)方差構(gòu)成的矩陣)
3、求解協(xié)方差矩陣的特征值和特征向量
4、將特征向量按照特征值從大到小按列進(jìn)行排列稱為矩陣,獲取最前面的k列數(shù)據(jù)形成矩陣W。
5、利用矩陣W和樣本集X進(jìn)行矩陣的乘法得到降低到k維的最終數(shù)據(jù)矩陣。


PCA案例


PCA降維的SVD求解方式

PCA的求解相當(dāng)于是求解XXT的特征向量和特征值的求解。

而且此時恰好XXT是對角矩陣,所以我們可以將其進(jìn)行特征分解:

另外對矩陣X進(jìn)行SVD矩陣分解,那么可以得到下列式子:

08 特征工程 - 特征降維 - IDA

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

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

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