如圖所示,尋找藍色的點到直線的垂直距離的和最小的直線(向量)
pca 與 linear regression 的區別:
pca衡量的是點到直線的垂直距離, 而linear regression是所有x點對應的真實值y=g(x)與估計值f(x)之間的vertical distance距離,如下圖所示:
(二)、pca 演算法流程
假設有m個samples,每個資料有n維。
第一步:資料處理
首先要進行資料正則化,將點的各個features處理在相同的數量級。
第二步:pca演算法選取k個主分量
1. 求n×n的協方差矩陣σ:
2. 根據svd求取特徵值和特徵向量:
[u,s,v] = svd(σ)
其中,svd為奇異值分解(
singular value decomposition
),在matlab中有函式[u,s,v] = svd(a) 返回乙個與a同大小的對角矩陣s(由σ的特徵值組成),兩個酉矩陣u和v,且滿足= u*s*v'。若a為m×n陣,則u為m×m陣,v為n×n陣。奇異值在s的對角線上,非負且按降序排列。
那麼對於方陣σ呢,就有
σ = usv'
σς' = usv'*vs'u' = u(σς')u'
σ'ς = vs'u'*usv' = v(σ'ς)v'
i.e. u是σς'的特徵向量矩陣;v是σ'ς的特徵向量矩陣,都是n*n的矩陣
由於方陣的svd相當於特徵值分解,所以事實上u = v, 即σ = usu', u是特徵向量組成的正交矩陣(數值分析這門課中關於矩陣分解有相關介紹)
我們的目的是,從n維降維到k維,也就是選出這n個特徵中最重要的k個,也就是選出特徵值最大的k個~so...goto next step
3. 按特徵值從大到小排列,重新組織u
如果使用matlab的svd求得特徵值,就可以直接跳過這步了,因為該函式返回值中,奇異值在s的對角線上按照降序排列。否則的話應進行排序,並按照該次序找到對應的特徵向量重新排列。
4. 選擇k個分量
按照第五、六步中講的svd過後,我們得到了乙個n×n的矩陣σ和u,這時,我們就需要從u中選出k個最重要的分量;即選擇前k個特徵向量,即為ureduce, 該矩陣大小為n×k
這樣對於乙個n維向量x,就可以降維到k維向量z了:
***********************************==
(三)、從壓縮資料中恢復原資料
我們已經知道,可以根據z(i) = ureduce'× x(i) 將n維向量x降維到k維向量z,那麼有時我們需要恢復n維向量,怎麼做呢?
由於ureduce是正交矩陣(下面u
reduce簡記為u),即u' = u-1
, 所以
= (u')-1×z = (u-1
)-1×z = uz
(ps:這裡的逆操作為偽逆操作)
並不是原先的x,而是向量x的近似值。(恢復後相當於將2d到1d時,將投影作為原先的點)
***********************************==
(四)、怎樣決定降維個數/主成分個數
首先從乙個general一點的思路去想呢,我們是希望,選出主成分之後進行資料分析,不會造成大量特徵的丟失,也就是說可以用下式的error ratio表示經過壓縮後的效能如何。
然後呢,我們定義乙個threshold(10% for example),如果error ratio
從數學上可以證明,上面這個error ratio 可以表示為
所以,可以用下式進行k的合理選取:
(五)、應用pca進行降維的建議
1. pca可以降維,那讓我們聯想到了之前說過擬合問題是由維度過高或者引數過多造成的,那麼可不可以用pca解決overfitting的問題呢?
ans:no!應用pca提取主成分可能會解決一些overfitting的問題,但是呢,不建議用這種方法解決overfitting問題,還是建議用第三章
中講過的加入regularization項
(也稱為ridge regression)
來解決。畢竟,pca降維過程中是丟棄了某些特徵,存在資料損失。
2. pca中主成分分析應用到那部分資料呢?
ans:only training data!可以用cross-validation data 和 test data進行檢驗,但是選擇主分量的時候只應用training data.
3. 不要盲目pca
notice:只有當你在源資料上處理結果不理想時,可以考慮用pca處理。
參考:
主成分分析法(PCA) 降維
主成分分析是一種降維演算法,它能將多個指標轉換為少數幾 個主成分,這些主成分是原始變數的線性組合,且彼此之間 互不相關,其能反映出原始資料的大部分資訊。一般來說,當研究的問題涉及到多變數且變數之間存在很強的相關性時,我們可考慮使用主成分分析的方法來對資料進行簡化。樣本標準化 計算標準化樣本協方差矩陣...
主成分分析法(PCA)
一 數學基礎 1.方差 用來計算每乙個變數 觀察值 與總體均數之間的差異。總體方差計算公式 為總體方差,為變數,為總體均值,為總體例數。2.協方差 在概率論 和統計學中,協方差用於衡量兩個變數的總體誤差。而方差是 協方差的一種特殊情況,即當兩個變數是相同的情況。期望值分別為 e x 與 e y 的兩...
資料降維 主成分分析法
什麼叫做主成分分析法,我們先看一張圖橢圓的圖,如果讓你找一條線,使得橢圓上所有點在該線上對映的點最分散,保留下來的資訊最多,你會怎麼選擇這條線?若是下圖,會選擇水平線,這是用一維的方式去盡可能多的表示二維的資料,那麼多維的資料呢,是否可以用較低維的資料盡可能表示。如何用二維的平面去盡可能表示乙個橢球...