在講pca之間,我們先來討論一下過擬合的問題。通常遇到過擬合,會有兩種方式解決。增加訓練的資料、正則化。在資料很難增加的情況下,我們一般採取正則化來避免過擬合。但除了正則化之外,我們也可以採取降維的方式來解決這個問題。下面是解決過擬合的方式。
為什麼降維可以解決過擬合的問題?
在我們通常收集的資料中,有很多特徵是可以由其他特徵推測出來,或者兩個特徵其實是描述的同一件事情。比如,描述人的身高這個特徵,資料集是由不同的人收集的,有的人用公尺和厘公尺表示身高,有的人用英呎和英吋表示身高,但他們都是描述的乙個屬性,如果能找到這些屬性把他們去掉,就能很好的處理資料。pca就可以完成這個事情。pca就是將n維特徵對映到k維上,這k個維度是正交的特徵。
現在把pca運用到乙個擁有590個特徵的半導體資料集上,然後計算他的方差百分比、和累積方差百分比(用來衡量資料與原始資料的偏差程度),可以看出只保留前6個主成分,達到的累積方差百分比為96.8%,而20個主成分,幾乎達到100%。剩下的500多個特徵都是多餘的特徵。
下面是中心矩陣的性質:
pca要做的事情就是把n個線性相關的特徵轉化為k個線性無關的特徵,達到對原始特徵空間的重構。可以從兩個角度達到這個目的,分別是最大投影方差角度和最小重構距離角度。
可以看出pca就這麼點東西,首先對資料進行中心化,然後求樣本的方差矩陣,對方差矩陣進行特徵值分解,特徵值最大的前k個元素,就是投影的方向。
# 讀入資料
def loaddataset(filename, delim='\t'):
fr = open(filename)
stringarr = [line.strip().split(delim) for line in fr.readlines()]
datarr = [list(map(float,line)) for line in stringarr]
return np.array(datarr)
def pca(datamat, topnfeat=9999999):
# 計算資料的均值
meanvals = np.mean(datamat, axis=0)
# 資料減去均值
meanremoved = datamat - meanvals
# 計算協方差矩陣
covmat = np.cov(meanremoved, rowvar=0)
# 進行特徵值分解
ei**als,ei**ects = np.linalg.eig(covmat)
# 從小到大對特徵值進行排序,並選取最大的特徵值
ei**alind = np.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
datamat = loaddataset('testset.txt')
lowdmat,reconmat = pca(datamat,1)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datamat[:,0],datamat[:,1],marker="^",s=90)
ax.scatter(reconmat[:,0],reconmat[:,1],marker="o",s=50,c='red')
如下圖所示:藍色代表原始資料,紅色代表將原始資料投影到主成分向量上
pca主成分分析 PCA主成分分析(中)
矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...
主成分分析PCA
主要參考這篇文章 個人總結 pca是一種對取樣資料提取主要成分,從而達到降維的目的。相比於上篇文章介紹到的svd降維不同,svd降維是指減少資料的儲存空間,資料的實際資訊沒有缺少。個人感覺pca更類似與svd的去噪的過程。pca求解過程中,涉及到了svd的使用。針對資料集d 假設di 的維度為 w ...
PCA 主成分分析
在進行影象的特徵提取的過程中,提取的特徵維數太多經常會導致特徵匹配時過於複雜,消耗系統資源,不得不採用特徵降維的方法。所謂特徵降維,即採用乙個低緯度的特徵來表示高緯度。將高緯度的特徵經過某個函式對映至低緯度作為新的特徵。pca和lda區別 pca是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...