降維分析之PCA分析及實現

2021-08-10 13:45:37 字數 2505 閱讀 1516

不知道大家還記不記得前面我們分享 支援向量機(svm)的分析及python實現時說過,當資料遇到線性不可分時,我們可以利用kernel技巧將低維資料對映到高維資料上,從而使得資料線性可分,這是個「公升維」操作。那麼本章我們就來分享個「降維」操作。

眾所周知,降維的目標就是對輸入的資料進行削減,由此剔除資料中的雜訊並提高機器學習方法的效能。那麼為什麼會有降維的操作呢?那是因為高維空間會出現樣本稀疏、距離計算困難等問題,這些被我們稱作「維數災難」。緩解維數災難的乙個重要途徑就是降維了。首先我們來分享第乙個降維演算法pca。

主成分分析(principal component analysis,簡稱pca)是最常用的一種降維方法。我們有乙個假設,即樣本點處於乙個正交屬性空間。存在乙個超平面能夠將這些樣本恰當的表達,同時該超平面還滿足如下性質:

基於這兩個性質我們就能得到兩種等價推導。這裡我們不做推導的詳細說明(詳細過程,請戳:wiki),直接給條件,寫出最後的結論。

假定資料樣本進行了中心化,即∑i

xi=0

;再假定投影變換後得到的新座標係為

,其中wi

是標準正交基向量,即||

wi||

2=1,

wtiw

j=0,

i≠j ;最終通過一系列推導會得到: xx

tw=λ

w 於是我們只需對協方差矩陣xx

t 進行特徵值分解,將求得的特徵值排序:λ1

⩾λ2⩾

...⩾

λd,再取前d′

個特徵值對應的特徵向量構成w=

(w1,

w2,.

..,w

d′) 。這就是主成分分析的解。

那麼pca的偽**如下:

def

pca(datamat, topnfeat=9999999):

meanvals = mean(datamat, axis=0)

meanremoved = datamat - meanvals #remove mean

covmat = cov(meanremoved, rowvar=0)

eigvals,eigvects = linalg.eig(mat(covmat))

eigvalind = argsort(eigvals) #sort, sort goes smallest to largest

eigvalind = eigvalind[:-(topnfeat+1):-1] #cut off unwanted dimensions

redeigvects = eigvects[:,eigvalind] #reorganize eig vects largest to smallest

lowddatamat = meanremoved * redeigvects#transform data into new dimensions

reconmat = (lowddatamat * redeigvects.t) + meanvals

return lowddatamat, reconmat

我們採用乙個有1000個資料點組成的資料集對其進行pca降維,執行效果:

降維技術使得資料變得更易使用,並且它們往往能去除資料中的雜訊,使得其他機器學習任務更加精確。

PCA主成分分析(降維)

opencv中使用 實現降維分類預處理 參考 降維 我的理解是,通過降維得到基本特徵可以加快學習演算法。並且由於降維後的資料本身就是正交的,和聚類一樣可以實現分類 識別問題。在自我學習中也可以採用大量無標註的影象,對這些影象降維分類,並結合部分編碼資料得到特徵。例如 將很2500張人臉資訊,通過25...

降維 PCA 主成分分析

其實早該整理一下pca了,怎奈一直沒有時間,可能是自己對時間沒有把握好吧,下面進入正題。所謂降維,就是降低資料的維數。在機器學習中尤其常見,之前做過對一幅提取小波特徵,對於一幅大小為800 600的,如果每個點提取五個尺度 八個方向的特徵,那麼每乙個畫素點提取40個特徵,那麼一副的話就是40 800...

降維之PCA主成分分析法

如圖所示,尋找藍色的點到直線的垂直距離的和最小的直線 向量 pca 與 linear regression 的區別 pca衡量的是點到直線的垂直距離,而linear regression是所有x點對應的真實值y g x 與估計值f x 之間的vertical distance距離,如下圖所示 二 p...