PCA(主成分分析)降維 找使得方差最大的投影方向

2021-09-24 20:41:11 字數 1545 閱讀 2892

本質:去掉資料中沒什麼用處的資訊,減少維度。

方法:找到乙個方向,使得資料在這些投影方向上的方差最大。計算原始資料在這些正交基上投影的方差,方差越大,就說明在對應正交基上包含了更多的資訊量。這個方向就是主成分。

可以用numpy實現對資料的降維,利用資料的特徵值和特徵向量。

例如:乙個100*4(性別;顏值;身高;收入)維的矩陣,pca降維就是保留差別最大的那幾列。假設性別都為女,對特徵沒影響就去掉;假設收入這一列差別特別大,就要保留這一列。

方法:(把n維的降維成k維)

1.去掉均值

2.計算協方差矩陣的特徵值和特徵向量;特徵值代表重要程度。

3.保留最大的k個特徵值對應的特徵向量

4.把資料轉化到上述特徵向量構建的新空間

def pca(datamat, topnfeat=999999):

meanvals = mean(datamat)

meanremoved = datamat - meanvals #去均值

covmat = cov(meanremoved, rowvar=0) #協方差矩陣

ei**als,ei**ects = linalg.eig(mat(covmat))

# numpy內建函式,一次性求出特徵值和特徵向量

ei**alind = argsort(ei**als)

ei**alind = ei**alind[:-(topnfeat+1):-1]

redei**ects = ei**ects[:,ei**alind]

# 對特徵值從小到大排序

lowddatamat = meanremoved * redei**ects

# 將資料集投影到新的空間,結果是乙個低維資料

reconmat = (lowddatamat * redei**ects.t) + meanvals

return lowddatamat, reconmat

例如:

乙個1004(性別;顏值;身高;收入)維的矩陣,經過pca降維成1002的矩陣的過程:

對每一列求乙個特徵值,按照降序排列,去掉最後兩列,就變成100*2的了。可能只剩下身高和收入了。

pca 還能從回歸的角度求解問題。順著這個思路 , 在高維空間中 , 我們實際上是要找到 乙個 d 維超平

面,使得資料點到這個超平面的距離平方和最小 。 以 d= l 為例,超平面退化為直線 , 即把樣本點投影到最佳直線,最小化的就是所有點到直線的距離平方之。目標函式為:

等價於:

PCA主成分分析(降維)

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

降維 PCA 主成分分析

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

降維方法 主成分分析(PCA)

推薦一篇絕對好的文章 理解pca的數學原理 pca principle component analysis 主成分分析,主要應用於資料降維,它是一種非監督的降維方法,主要捕獲觀測資料之間的變異程度。當資料集的維度過高之後,運用各種演算法處理起來的時間複雜度可能會很高,所以需要對資料進行降維處理,而...