維數災難與PCA主成分分析

2022-07-19 21:06:32 字數 2226 閱讀 1556

維數災難是機器學習中常見的現象,具體是指隨著特徵維數的不斷增加,需要處理的資料相對於特徵形成的空間而言比較稀疏,由有限訓練資料擬合的模型可以很好的適用於訓練資料,但是對於未知的測試資料,很大機率距離模型空間較遠,訓練的模型不能處理這些未知數據點,從而形成「過擬合」的現象。

既然維數災難嚴重影響模型的泛化,那麼如何解決呢?容易想到的解決辦法是增加資料量,但是如果特徵維數比較多,需要很大的資料量才能將整個特徵空間「填滿」,代價太大;還有一種比較容易實現而且效果還不錯的解決辦法就是特徵的降維。特徵的降維的主要思想是:過濾掉一些不重要的特徵,或者把一些相關的特徵進行合併,在減少特徵維數的同時盡量保留原始資料的資訊。

pca主要包含以下幾個步驟:

1、標準化樣本矩陣中的原始資料;(通常每列是乙個維度,按列進行標準化,不可整體標準化,每列都是相互獨立的)

2、獲取標準化矩陣的協方差矩陣;  

3、計算協方差矩陣的特徵值和特徵向量;

4、依照特徵值的大小,挑選主要的特徵向量;

5、生成新的特徵。

from numpy import *

from numpy import

linalg as la

from sklearn.preprocessing import

scale

from sklearn.decomposition import

pcaimport

pandas as pd

data =

x =pd.dataframe(data)

#x_s = (x-x.mean())/x.std()

#對矩陣按列進行標準化,每列是乙個維度

x_s = scale(x, with_mean=true, with_std=true, axis=0)

print("

標準化之後的矩陣為:{}

".format(x_s))

#獲取標準化矩陣的協方差矩陣

x_cov =cov(x_s.transpose())

#計算協方差矩陣的特徵值和特徵向量

e,v =la.eig(x_cov)

print("

特徵值:{}

".format(e))

print("

特徵向量:\n{}

".format(v))

#依照特徵值的大小,挑選主要的特徵向量

pca = pca(2)

pca.fit(x_s)

#輸出變換後的資料矩陣

print("

方差(特徵值):

", pca.explained_variance_)

print("

主成分(特徵向量)

", pca.components_)

print("

變換後的樣本矩陣:

",pca.transform(x_s))

print("

資訊量:

", pca.explained_variance_ratio_)

標準化之後的矩陣為:[[-0.63753558 -0.84327404 -0.6205374]

[-0.5768179 -0.63245553 -0.58787754]

[-0.51610023 1.68654809 1.73097275]

[ 1.73045371 -0.21081851 -0.52255781]]

特徵值:[2.72019876e+00 1.27762876e+00 2.17247549e-03]

特徵向量:

[[ 0.2325202 -0.96356584 0.13219394]

[-0.67714769 -0.25795064 -0.68915344]

[-0.69814423 -0.07072727 0.71245512]]

方差(特徵值): [2.72019876 1.27762876]

主成分(特徵向量) [[-0.2325202 0.67714769 0.69814423]

[ 0.96356584 0.25795064 0.07072727]]

變換後的樣本矩陣: [[-0.85600578 -0.8757195]

[-0.7045673 -0.76052331]

[ 2.4705145 0.06017659]

[-0.90994142 1.57606622]]

資訊量: [0.68004969 0.31940719]

pca主成分分析 PCA主成分分析(中)

矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...

PCA主成分分析(降維)

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

降維 PCA 主成分分析

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