主成分分析方法,是一種使用最廣泛的資料降維演算法,pca的主要思想是將高維的特徵對映到k維上。這k維就是主成分,並能保留原始變數的大部分資訊,這裡的資訊是指原始變數的方差。
如果用座標系進行直觀解釋,乙個座標系表示乙個變數,對原座標系中的資料進行主成分分析等價於進行座標系旋轉變換,將資料投影到新座標系的座標軸上。新座標軸表示的變數是原來多個變數的線性組合。
什麼是方差?
資料在每一軸上的座標值的平方表示相應變數的方差。
什麼是第一主成分?
第一主成分就是新座標系的第一座標軸,為旋轉變換中座標值的平方和最大的軸,即方差最大的軸。需要注意第一主成分,第二主成分。。。第 k 主成分是相互正交的。
如何得到包含最大差異性的主成分方向?
通過計算資料矩陣的協方差矩陣,然後得到協方差矩陣的特徵值特徵向量,選擇特徵值最大的k個特徵所對應的特徵向量組成的矩陣。那麼就可以將資料矩陣轉換到新的空間當中,實現資料特徵的降維。
得到協方差矩陣的特徵值向量有兩種方法:特徵值分解協方差矩陣、奇異值分解協方差矩陣。
pca演算法有兩種實現方法:
基於特徵值分解協方差矩陣:
a =q
σq−1
a = q \sigma q^
a=qσq−
1基於svd分解協方差矩陣:
a =u
σv
ta = u \sigma v^
a=uσvt
基於特徵值分解協方差矩陣:
輸入:資料集 x
=x = \
x=,需要降到 k 維
1) 去平均值(即去中心化),即每一位特徵減去各自的平均值
2)計算協方差矩陣
1 (n
−1)x
xt
\frac 1 xx^t
(n−1)1
xxt
,這裡除或不除樣本數量 n 或 n-1 ,其實對求出的特徵向量沒有影響
3) 用特徵值分解方法求協方差矩陣 1(n
−1)x
xt
\frac 1 xx^t
(n−1)1
xxt
的特徵值或特徵向量。
4)對特徵值從小到大排序,選擇其中最大的 k 個,然後對其對應的 k 個特徵向量分別作為列向量組成特徵向量矩陣p
4)將資料轉換到 k 個特徵向量構建的新空間中,即 y=px。
基於svd分解協方差矩陣:
輸入:資料集 x
=x = \
x=,需要降到 k 維
1) 去平均值(即去中心化),即每一位特徵減去各自的平均值
2). 構造新的 n*m 矩陣:
x ′=
1n−1
xt
x' = \frac 1 } x^t
x′=n−1
1x
tx』 的每一列的均值為零。因為 x′t
x′=1
n−1x
xt
x'^tx' = \frac 1 xx^t
x′tx′=
n−11
xxt
,即等於x的協方差矩陣,而主成分分析歸結於求協方差矩陣的特徵值和對應的單位特徵向量,那麼問題轉化為求矩陣 x′t
x′
x'^tx'
x′tx
′ 的特徵值和對應的單位特徵向量,即對 x′x'
x′進行svd分解求得的vkt
v^t_k
vkt
為所需的 k 個主成分。
這裡我們需要注意奇異值分解中求解是xtx
x^tx
xtx的特徵值特徵向量。
3). 對矩陣x』 進行截斷奇異值分解,得到
x ′=
uσvt
x' = u\sigma v^t
x′=uσv
t有k個奇異值、奇異向量。矩陣v 的前 k 列構成 k 個樣本主成分。
4). 求 k * n 樣本主成分矩陣
y =v
kt
xy = v_k^t x
y=vkt
xsvd分解協方差矩陣有兩個優點:
有些svd的實現演算法可以先不求出協方差矩陣也能求出右奇異矩陣v。
也就是說,pca演算法可以不通過做特徵分解而是通過svd來完成,這個方法在樣本量很大的時候很有效。實際是,scikit-learn的pca演算法的背後真正的實現就是用的svd,而不是特徵值分解。
注意到pca僅僅使用了svd的右奇異矩陣,沒有使用的左奇異矩陣。
假設樣本是 m∗n
m*nm∗
n 的矩陣 x, 如果我們通過了svd找到了矩陣 xtx
x^tx
xtx 最大的 k 個特徵向量組成的 k * n 的矩陣 v
tv^t
vt,則可以做如下處理:可以得到乙個 m * k 的矩陣 xm∗
k′=x
m∗nv
n∗kt
x'_ = x _v_^t
xm∗k′
=xm∗
nvn
∗kt
這個矩陣原來 m * n 的矩陣 x 相比,列數從 n 見到了 k,可見對列數進行了壓縮,也就是說,左奇異矩陣可以用於對行數的壓縮;右奇異矩陣可以用於對列(即特徵維度)的壓縮。這就是我們用svd分解協方差矩陣實現pca可以得到兩個方向的 pca 降維(即行和列兩個方向)
總體主成分:在資料總體上進行的主成分分析
樣本主成分: 在有限樣本上進行的主成分分析
區別:樣本主成分用樣本的均值向量 z
‾\overline
z 代替總體主成分均值向量 μ
\muμ。
用協方差矩陣 s 代替總體方差矩陣 σ
\sigma
σ。z ‾=
1n∑j
=1nz
j=(z
‾1,z
‾2,.
..,z
‾m)s
=[si
j]si
j=1n
−1∑k
=1n(
zik−
z‾i)
(zjk
−z‾j
),i,
j=1,
2,..
.m
/\overline = \frac 1 n \sum_^n z_j = (\overline_1,\overline_2,...,\overline_m)\\ s = [s_]\\ s_ = \frac 1 \sum_^n (z_ - \overline_i) (z_ - \overline_j), i,j = 1,2,...m/
z=n1j
=1∑n
zj
=(z1
,z2
,..
.,zm
)s=
[sij
]si
j=n
−11
k=1∑
n(z
ik−
zi)
(zjk
−zj
),i
,j=1
,2,.
..m/
機器學習 主成分分析(PCA)
主成分分析是一種統計方法,通過正交變換將一組可能存在相關性的變數轉換成一組線性不相關的變數,轉換後的這組變數叫主成分。sklearn.decomposition.pca pca pca n components 1 newdata pca.fit transform data n component...
pca主成分分析 PCA主成分分析(中)
矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...
統計學習 PCA主成分分析
資訊的表示與降維 通常情況下,資料被表示成一組記錄的組合,在機器學習領域通常用一維列向量表示一組特徵。而當資料需要的特徵過多時,在面對成百上千的維度情況下,演算法的開銷顯著增大,因為資料的降維顯得非常有必要,降維意味著部分資料的丟失,不過由於資料本身之間具備一定的相關性,因為採用合理的方法使得損失降...