降維目的:樣本資料為高維資料時,對資料進行降維操作,避免模型出現過擬合。
1.過擬合含義:訓練集誤差小,驗證集誤差大。
過擬合三種解決方案:1)增加資料集;2)正則化; 3)降維。
2.高維災難:
具有高維度特徵的資料易導致高維災難。
高維災難的幾何角度解釋: 高維災難含義:高維資料分布具有稀疏性;不容易根據特徵對資料進行分類.
3.降維
降維分類:
1)直接降維(特徵選擇(lasso))
2)線性降維(pca,mds)
3)非線性降維(流形:isomap,lle)
4.主成分分析(pca) 【一般要求覆蓋率達到85%以上】
2)pca轉化為優化問題:最大投影方差(最小重構距離)
最大投影方差:資料進行特徵轉換後,篩選出投影方差最大的前q個基變數,即主成分(盡可能多地保留原資料的資訊)
【最小重構代價:資料進行特徵轉換後,篩選出重構代價最小的(p-(q+1))個基變數,即被篩掉的特徵(使轉換篩選後去掉的資訊盡可能少),本質和最大投影方差一樣】
轉化為帶約束的優化問題:用拉格朗日乘子法求解,輸出為主成分p【被篩去的成分p1】
最大投影誤差 【最小重構代價】
=> problem: optimization
p = argmax pt*s*p 【pt*s*p是變換後樣本的協方差】
s.t ptp = 1 【p為正交陣】
=> solution: p,lambda【拉格朗日乘子法通過求解導數為0得出的最優解:當變換矩陣 p 等於協方差矩陣s的特徵向量時,可以實現方差最大化】
sp=lambda*p
取 lambda 的前q個最大的特徵值; 取前q個最大的特徵值對應的特徵向量組成變換矩陣p;
newdata=data*t(因為data(nxm):n為樣本數,m為特徵數,所以右乘變換矩陣;反之則左乘);
3)相關公式推導及理解
i)均值、協方差、中心矩陣h(幾何角度理解:將資料平移至特徵空間的原點)
x=mean: x_bar=1/n*xt*1n
covariance: s=1/n*xthx || s=1/n*xtx (兩者相等?)
centering matrix h: h=in-1/n*1n1n
tii) 為什麼用協方差(的特徵值和特徵向量) 【另一種解釋可以通過拉格朗日乘子法公式推導】
=> 最大化轉化後的樣本的協方差 s1(s1=utsu);最小化s'除了對角元素之外的元素。
為什麼要追求最大化方差:
根據資訊理論,某維度的方差越大,表示所包含的資訊越多,表明在該維度上不同樣本的差異性越大,所以要某一維度上追求樣本的方差最大化。
為什麼要最小化s1除了主對角元素之外的元素:
協方差矩陣主對角線的元素表示某一特徵維度自己的方差,除此之外的元素表示不同特徵之間的相關性,也就是問為什麼要最小化不同維度間的相關性。因為特徵間如果有相關性,即可以通過乙個特徵推導出另乙個特徵,那麼兩個特徵中就有乙個是冗餘的,沒必要。所以要最小化不同特徵間的相關性,可以通過使最終的主成分均為正交向量來實現相關性為0。(正交向量相關性為0,實對稱矩陣特徵向量均為正交向量,所以只要協方差矩陣為實對稱矩陣,對其求解特徵向量,將特徵向量作為主成分,則自動滿足主成分相關性為0的條件)
為什麼要選取大的特徵值:
當乙個矩陣作用於它的特徵向量時,相當於對特徵向量進行大小縮放,不改變其方向,特徵值越大,說明其拉伸的的比例越大,協方差的特徵值的絕對值表示變換後該主成分上保留原始資訊的多少,所以要提取出大的特徵值。大的特徵值對應的特徵向量就是主成分。
4)pca 步驟:
去均值化得到中心化的樣本x=x-x_bar;
公式得到協方差矩陣s;
公式求協方差矩陣特徵值和特徵向量;
特徵值從大到小排序,取前p個特徵值(對特徵值歸一化,p的大小由設定的貢獻率約束);
p個特徵值對應的特徵向量組成變換矩陣t;
得到降維後的新樣本 newdata=data*t;
5)**例子
特徵值函式:
matlab:eig
python3:numpy.linalg.eig
資料預處理 資料降維(主成分分析)
資料降維 在構建機器學習模型時,有時特徵是極其複雜,當特徵的維度達到幾千維時,模型訓練將會耗費大量的時間。另外,如果特徵較多,還會出現多重共線性 稀疏性的問題。因此,需要簡化屬性 去噪 去冗餘,以求取更典型的屬性,但同時又不希望不損失資料本身的意義,這時就需要對特徵進行降維。1.降維的方法 資料降維...
主成分分析 降維
import pandas as pd 引數初始化 inputfile data principal component.xls outputfile tmp dimention reducted.xls 降維後的資料 data pd.read excel inputfile,header none...
資料降維 主成分分析(PCA)
主成分分析 pca 是一種比較經典的降維方法,它的思想主要是將資料對映到低維空間時使得資料在低維空間的方差最大。演算法如下 python 如下,我主要使用了兩種方法特徵值分解和奇異值分解。import numpy as np import matplotlib.pyplot as plt from ...