維數災難是機器學習中常見的現象,具體是指隨著特徵維數的不斷增加,需要處理的資料相對於特徵形成的空間而言比較稀疏,由有限訓練資料擬合的模型可以很好的適用於訓練資料,但是對於未知的測試資料,很大機率距離模型空間較遠,訓練的模型不能處理這些未知數據點,從而形成「過擬合」的現象。
既然維數災難嚴重影響模型的泛化,那麼如何解決呢?容易想到的解決辦法是增加資料量,但是如果特徵維數比較多,需要很大的資料量才能將整個特徵空間「填滿」,代價太大;還有一種比較容易實現而且效果還不錯的解決辦法就是特徵的降維。特徵的降維的主要思想是:過濾掉一些不重要的特徵,或者把一些相關的特徵進行合併,在減少特徵維數的同時盡量保留原始資料的資訊。
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...