天天看點

PCA與特征選取

一、什麼是PCA

PCA,即PrincipalComponents Analysis,也就是主成份分析;

通俗的講,就是尋找一系列的投影方向,高維資料按照這些方向投影後其方差最大化(方差最大的即是第一主成份,方差次大的為第二主成份...

如下圖:資料點沿該方向投影後,方差最大,投影之後,由于各個點之間的距離之最大化的,是以彼此之間是最容易區分的

PCA與特征選取

二、一些應用

1、資料降維

比如比較常見的人臉識别,假設有10副臉部圖像,每副圖像存貯為512*512大小的矩陣,經過特征提取後features可能為10000甚至更多,形成一個10*10000的矩陣;針對如此多的特征進行識别計算量很大同時也沒有必要(因為一部分特征就已經反應了臉部的大部分資訊)。但同時,人為的(指主觀的)對這些特征進行篩選也很可能會把很多有用的資訊剔除掉了;這時PCA就派上用場了,通過PCA降維的方法就可以控制特征的多少了(通常取Score>85%的前N個主成份就夠了,還視具體情況而定吧)。關于PCA降維的應用與理論,PCA算法學習_1(OpenCV中PCA實作人臉降維),講的很清楚了。

2、特征分析、選擇

常用PCA進行資料降維,但使用PCA進行特征選擇的案例并不常見。而使用PCA、小波變換等方法可以做到将維數降低、以簡化後續分類等過程的複雜度,但這些降維方法本身的計算量也不小,在一些應用場景中需要線上實時的進行資料處理時,在保障模型預測準确性的基礎上,模型當然越簡單消耗的資源越少越好。面對海量特征,其中每個特征對模型預測準确性的貢獻是有所不同的,某個特征與PCA主成分方向夾角越小(可用餘弦相似性衡量),該特征對PCA主成分的貢獻就越大,新特征F與原特征矩陣X的關系可用X的特征向量A聯系:

F=Af

三維情況下,新特征F與原特征f變換關系表示為:

PCA與特征選取
則原特征fj對新特征F的貢獻通過下式計算:
PCA與特征選取

貢獻度Conj的大小及衡量了原有的某個特征對所有新特征的重要程度。

若原特征維數巨大,線上分析的應用中對其進行PCA的降維操作也有一定的計算量。在模型建構之初,即可使用PCA方法,通過計算特征貢獻度Con,選取貢獻度大的一些特征來直接訓練模型以及後續的分類預測工作。

以上是個人實踐中的一些總結,歡迎批評指正~