當數(shù)據(jù)特征較多時粗俱,基本有兩種方法:
1 PCA降維
2 Feature Selection(特征選擇)
PCA降維
<1> PCA降維的思路:(假設從2維降到1維)
(紅呐馆、藍分別代表兩個維度,叉叉代表樣本)
維度紅:每個樣本都依據(jù)紅線進行投影(投影到紅線上),會發(fā)現(xiàn)數(shù)據(jù)分布在紅線上會比較密集
維度藍:每個樣本都依據(jù)藍線進行投影(投影到藍線上)荆永,會發(fā)現(xiàn)數(shù)據(jù)分布在藍線上相對沒有那么密集
而實際上摆屯,數(shù)據(jù)一旦很緊密柏锄,那么model就很難將其區(qū)分開消请;
什么樣的參數(shù)能夠度量發(fā)散性呢?——方差
所以就將PCA降維問題森渐,轉(zhuǎn)化成求取方差的問題做入,即求解
該公式的方差。
<2> 另一個角度出發(fā) 同衣,在吳恩達機器學習中竟块,將PCA問題,描述為 每個點到他們對應直線上的投影點的距離(也就投影誤差)耐齐,使得距離的平方最小
常規(guī)來說浪秘,在進行PCA之間,需要進行均值歸一化和特征規(guī)范化埠况,使得所有樣本X1耸携,X2的均值分別都為0
所以,PCA降維辕翰,如從2維降到1維夺衍,會去找個向量(向量是來自2維的),能夠最小化投影誤差金蜀。
=====》生產(chǎn)中刷后,常常需要將N維特征降到K維特征的畴,這種情況下渊抄,我們不僅需要找到單個向量(一個維度的向量代表一個方向),而是需要找到K個方向來對數(shù)據(jù)進行投影(同時需要最小化投影誤差)
<3> PCA與線性回歸的區(qū)別
線性回歸:
是擬合一條直線丧裁,使得點到線的垂直距離最小护桦。
PCA:
是使得這些"斜著"的距離最小,實際上是最短的正交距離煎娇,也就是點x與紅色直線的最短距離
<4> PCA算法
a. 數(shù)據(jù)預處理
在做PCA之前二庵,需要進行數(shù)據(jù)預處理(特征縮放/均值標準化)
均值標準化:計算樣本n個特征的每個特征的均值,假設Xj是某個樣本的第j個特征缓呛,uj是所有樣本的第j個特征的均值催享,均值標準化就是使用Xj-uj來代替Xj
特征縮放:縮放不同的特征進入一個相對的價值范圍,比如說(Xj-uj)/sj哟绊,這里的sj是特征j的標準偏差
b.PCA算法需要計算兩個東西
一個是向量 u (以2維來說因妙,有了向量u就會知道投影的那條線,即降維后的樣本分布)降到k維就是計算k個向量;
另一個就是降維后的新的特征值z攀涵,比如說2維特征(X1,X2)铣耘,降到1維后特征(Z1),這個Z1如何計算出來以故。
計算過程:
<1> 計算協(xié)方差Sigma蜗细,Sigma是一個nn矩陣
<2> 計算Sigma的特征向量
使用svd(奇異值分解),最終得到3個矩陣怒详,我們需要矩陣U(也是n*n矩陣)
如果我們降到K維炉媒,那么就是提取前k個向量
<3> 得到這k個向量了,那么開始計算z值
U矩陣降到k為棘利,U_reduce=[u^(1)橱野, u^(2), u^(3)... u^(k)] 善玫,這是一個n*k水援,即n行k列矩陣,
將其轉(zhuǎn)置得到k行n列茅郎,再乘以特征X(n行1列)蜗元,最終得到k維向量,即z^(1)系冗, z^(2)... z^(k)
<5>主成分數(shù)量選擇
Xapprox應該就是X與向量u的乘積
平均投影誤差/數(shù)據(jù)總方差<=0.01
選擇K使得99%的方法被保留下來奕扣。
那么,如何快速地知道選擇哪一個k呢掌敬?
上一步中使用奇異值分解 svd(Sigma) 會返回3個矩陣 [U,S,V]惯豆,
其中的S(N*N),這個矩陣除了對角線上的元素奔害,其余都會為0楷兽,
那么計算平均投影誤差/數(shù)據(jù)總方差<=0.01,可以轉(zhuǎn)換成計算
即