27.降维
文章目錄
- 一、降維的兩大主要動機
- 1.1 動機一:數據壓縮
- 1.2 動機二:數據可視化
- 二、主成分分析PCA問題描述
- 2.1 PCA的介紹
- 2.2 主成分分析問題的描述
- 2.3 主成分分析與線性回顧的比較
- 2.4 PCA的優點分析
- 三、主成分分析算法
- 第一步:均值歸一化
- 第二步:計算**協方差矩陣**(**covariance matrix**) Σ Σ Σ:
- 第三步:計算協方差矩陣 Σ Σ Σ的**特征向量**(**eigenvectors**):
- 四、原始數據的重構方法
- 五、選擇主成分的數量
- 5.1 選擇主成分數量的具體辦法:
- 5.2 更好的方式選擇K——調用“svd”函數
- 六、主成分分析法的應用建議
- 6.1 PCA具體使用例子
- 6.2 正確的主要成分分析PCA情況
- 6.3 錯誤的主要成分分析PCA情況
- 6.4 建議
一、降維的兩大主要動機
1.1 動機一:數據壓縮
-
降維也是一種無監督學習問題,降維的一個作用是數據壓縮
-
數據壓縮不僅允許我們壓縮數據,因而使用較少的計算機內存或磁盤空間,但它也讓我們加快我們的學習算法
-
具體例子一:從二維降到一維
- 假設用兩個特征描述同一個物品的長度,x1單位是厘米cm,x2單位是英寸inches。這將導致高度冗余,所以需要減到一維
- 即將二維數據都投影到 Z 直線上變成一維的
-
具體例子二:從三維降到二維
- 將數據從三維降至二維: 將三維向量投射到一個二維的平面上,強迫使得所有的數據都在同一個平面上,降至二維的特征向量
-
這樣的降維處理數據過程可以被用于把任何維度的數據降到任何想要的維度,例如將1000維的特征降至100維
1.2 動機二:數據可視化
-
降維可以幫我們將數據可視化,我們便能尋找到一個更好的解決方案
-
具體例子:
-
假使有關于許多不同國家的數據,每一個特征向量都有 50 個特征(如 GDP,人均 GDP,平均壽命等)。如果要將這個 50 維的數據可視化是不可能的
-
將其降至 2 維,便可將其可視化了
-
這樣做的問題在于,降維算法只負責減少維數,新產生的特征的意義就必須由我們自己去發現
-
二、主成分分析PCA問題描述
2.1 PCA的介紹
-
主成分分析(PCA)是最常見且有效的降維算法
-
PCA將相關性高的變量轉變為較少的獨立新變量,實現用較少的綜合指標分別代表存在于各個變量中的各類信息,既減少高維數據的變量維度,又盡量降低原變量數據包含信息的損失程度,是一種典型的數據降維方法
-
PCA保留了高維數據最重要的一部分特征,去除了數據集中的噪聲和不重要特征,這種方法在承受一定范圍內的信息損失的情況下節省了大量時間和資源,是一種應用廣泛的數據預處理方法
-
在PCA中,我們要做的是找到一個方向向量(Vector direction),當我們把所有的數據都投射到該向量上時,我們希望投射平均均方誤差能盡可能地小
-
方向向量是一個經過原點的向量,而投射誤差是從特征向量向該方向向量作垂線的長度
-
如上圖所示,可以由兩條方向向量,PCA會選擇方向向量1,因為所有數據的投射平均均方誤差更小,直觀看就圖中的藍線長度更短
-
-
PCA 在數據挖掘和機器學習實踐中的主要應用:
2.2 主成分分析問題的描述
- 主成分分析 試圖找一個投影(可以是平面可以是線)來把數據投影到上面,使投影誤差(點到直線的距離)最小
- 主成分分析降維的同時,也帶來一定的誤差,即與原始數據相比,數據可靠性降低;看取舍 ;假設常數項為0,直線過原點更容易觀察
- 問題是要將 n n n維數據降至 k k k維,目標是找到向量 u ( 1 ) u^{(1)} u(1), u ( 2 ) u^{(2)} u(2),…, u ( k ) u^{(k)} u(k)使得總的投射誤差最小
?
- ? 若是2維平面,距離就是原3維空間上的點到二維平面的距離
2.3 主成分分析與線性回顧的比較
-
主成分分析與線性回歸是兩種不同的算法
-
主成分分析最小化的是投射誤差(Projected Error)
-
線性回歸嘗試的是最小化預測誤差
-
線性回歸的目的是預測結果,而主成分分析不作任何預測
- 上圖中,左邊的是線性回歸的誤差(垂直于橫軸投影),
- 右邊則是主要成分分析的誤差(垂直于紅線投影)
-
2.4 PCA的優點分析
- PCA 將n個特征降維到k個,可以用來進行數據壓縮,PCA 要保證降維后,還要保證數據的特性損失最小
- PCA技術的一大好處是對數據進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將后面的維數省去,可以達到降維從而簡化模型或是對數據進行壓縮的效果。同時最大程度的保持了原有數據的信息。
- PCA技術的一個很大的優點是,它是完全無參數限制的。在PCA的計算過程中完全不需要人為的設定參數或是根據任何經驗模型對計算進行干預,最后的結果只與數據相關,與用戶是獨立的
- 但是,這一點同時也可以看作是缺點。如果用戶對觀測對象有一定的先驗知識,掌握了數據的一些特征,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高
三、主成分分析算法
-
PCA 減少 n n n維到 k k k維:
第一步:均值歸一化
-
計算出所有特征的均值,然后令 x j = x j ? μ j x_j= x_j-μ_j xj?=xj??μj?
-
如果特征是在不同的數量級上,我們還需要將其除以標準差 σ 2 σ^2 σ2
第二步:計算協方差矩陣(covariance matrix) Σ Σ Σ:
-
∑ = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T \sum=\dfrac {1}{m}\sum^{n}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T} ∑=m1?∑i=1n?(x(i))(x(i))T
第三步:計算協方差矩陣 Σ Σ Σ的特征向量(eigenvectors):
-
在 Octave 里我們可以利用奇異值分解來求解,[U, S, V]= svd(sigma)
-
S i g m a = 1 m ∑ i = 1 n ( x ( i ) ) ( x ( i ) ) T Sigma=\dfrac {1}{m}\sum^{n}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T} Sigma=m1?i=1∑n?(x(i))(x(i))T
-
對于一個 n × n n×n n×n維度的矩陣,上式中的** U U U是一個具有與數據之間最小投射誤差的方向向量構成的矩陣**
-
如果我們希望將數據從 n n n維降至 k k k維,我們只需要從 U U U中選取前 k k k個向量,獲得一個 n × k n×k n×k維度的矩陣,我們用 U r e d u c e U_{reduce} Ureduce?表示,然后通過如下計算獲得要求的新特征向量 z ( i ) z^{(i)} z(i): z ( i ) = U r e d u c e T ? x ( i ) z^{(i)}=U^{T}_{reduce}*x^{(i)} z(i)=UreduceT??x(i)
-
其中 x x x是 n × 1 n×1 n×1維的,因此結果為 k × 1 k×1 k×1維度。注,我們不對方差特征進行處理
-
四、原始數據的重構方法
-
在上面的介紹中,我們已經知道了PCA作為壓縮算法,由給定壓縮后的低維數據$ z^{(i)} 反向得到高維的 反向得到高維的 反向得到高維的 x^{(i)} $數據的過程稱為重建原始數據
-
**具體方法:**我們假設 x x x為2維, z z z為1維, z = U r e d u c e T x z=U^{T}_{reduce}x z=UreduceT?x,相反的方程為: x a p p o x = U r e d u c e ? z x_{appox}=U_{reduce}\cdot z xappox?=Ureduce??z, x a p p o x ≈ x x_{appox}\approx x xappox?≈x。如圖:
- 對于U矩陣,它是正交矩陣,轉置等于逆,所以這里直接 x a p p o x = U r e d u c e ? z x_{appox}=U_{reduce}\cdot z xappox?=Ureduce??z
- 求出來的 X a p p r o x X_{approx} Xapprox?和以前的 X X X會有一定的誤差,因為存在投影誤差;
五、選擇主成分的數量
-
主要成分分析是減少投射的平均均方誤差:
訓練集的方差為: 1 m ∑ i = 1 m ∥ x ( i ) ∥ 2 \dfrac {1}{m}\sum^{m}_{i=1}\left\| x^{\left( i\right) }\right\| ^{2} m1?∑i=1m?∥ ∥?x(i)∥ ∥?2
-
我們希望在平均均方誤差與訓練集方差的比例盡可能小的情況下選擇盡可能小的 k k k值
-
如果希望比例小于 1%, 就意味著原本數據的偏差有 99% 都保留下來了。 另外,還可以使用5%(對應95%的偏差), 10%(對應90%的偏差) 這些比例
-
通常95%到99%是最常用的取值范圍。(注:對于許多數據集,通??梢栽诒A舸蟛糠植町愋缘耐瑫r大幅降低數據的維度。這是因為大部分現實數據的許多特征變量都是高度相關的)
-
5.1 選擇主成分數量的具體辦法:
先令 k = 1,然后進行主要成分分析,獲得 U r e d u c e U_{reduce} Ureduce? 和 z z z,然后計算比例是否小于1%
如果不是的話,再令k = 2,如此類推,直到找到可以使得比例小于 1%的最小 k k k值
5.2 更好的方式選擇K——調用“svd”函數
-
SVD代表為奇異值分解,函數調用 [U, S, V] = svd(sigma) 返回一個與 Σ(即Sigma) 同大小的對角矩陣 S(由Σ的特征值組成),兩個矩陣 U 和 V ,且滿足 Σ = U * S * V’。
-
若 A 為 m×n 矩陣,則 U 為 m×m 矩陣,V 為 n×n 矩陣
-
奇異值在 S 的對角線上,非負且按降序排列,對角線之外的其它元素都是 0
-
我們的目的是從 n 維降到 k 維,也就是選出這 n 個特征中最重要的 k 個,也就是選出特征值最大的 k 個
-
所以得到矩陣 S 后,我們可以直接用它來計算平均均方誤差與訓練集方差的比例,而不用一遍遍重復計算誤差和方差:
1 m ∑ i = 1 m ∥ x ( i ) ? x a p p r o x ( i ) ∥ 2 1 m ∑ i = 1 m ∥ x ( i ) ∥ 2 = 1 ? Σ i = 1 k S i i Σ i = 1 m S i i ≤ 1 % \dfrac {\dfrac {1}{m}\sum^{m}_{i=1}\left\| x^{\left( i\right) }-x^{\left( i\right) }_{approx}\right\| ^{2}}{\dfrac {1}{m}\sum^{m}_{i=1}\left\| x^{(i)}\right\| ^{2}}=1-\dfrac {\Sigma^{k}_{i=1}S_{ii}}{\Sigma^{m}_{i=1}S_{ii}}\leq 1\% m1?∑i=1m?∥ ∥?x(i)∥ ∥?2m1?∑i=1m?∥ ∥?x(i)?xapprox(i)?∥ ∥?2?=1?Σi=1m?Sii?Σi=1k?Sii??≤1%
也就是: Σ i = 1 k s i i Σ i = 1 n s i i ≥ 0.99 \frac {\Sigma^{k}_{i=1}s_{ii}}{\Sigma^{n}_{i=1}s_{ii}}\geq0.99 Σi=1n?sii?Σi=1k?sii??≥0.99
六、主成分分析法的應用建議
6.1 PCA具體使用例子
- 假使我們正在針對一張 100×100 像素的圖片進行某個計算機視覺的機器學習,即總共有 10000 個特征。使用 PCA 算法的步驟如下:
運用 PCA 將數據壓縮至 1000 個特征
對訓練集運行學習算法
在預測時,采用之前學習得到的 Ureduce 將輸入的特征 x 轉換成特征向量 z ,然后再進行預測
- 注:如果我們有交叉驗證集合測試集,也采用對訓練集學習而來的 U r e d u c e U_{reduce} Ureduce?
6.2 正確的主要成分分析PCA情況
- 壓縮和可視化:
6.3 錯誤的主要成分分析PCA情況
-
錯誤使用PCA情況之一:將其用于減少過擬合(減少了特征的數量
-
這樣做非常不好,不如使用正則化處理。原因在于 PCA 只是近似地丟棄掉一些特征,它并不考慮任何與結果變量有關的信息,因此可能會丟失非常重要的特征
-
而當進行正則化處理時,會考慮到結果變量,不會丟掉重要的數據。
-
-
錯誤使用PCA情況之二:默認地將主要成分分析作為學習過程中的一部分
- 導致算法運行太慢或者占用太多內存
6.4 建議
-
不要一開始就使用PCA,最好先使用原始數據,只有當原始數據進行不下去了才考慮PCA
-
與其考慮降低維度,不如想想如何優化算法;
總結
- 上一篇: MyBatis 使用 Redis 缓存
- 下一篇: GSM 劫持短信验证码盗刷引关注:手机处