在多變量分析 中,主成分分析 (英語:Principal components analysis ,縮寫:PCA )是一種統計 分析、簡化數據集的方法。它利用正交變換 來對一系列可能相關的變量的觀測值進行線性變換,從而投影為一系列線性不相關變量的值,這些不相關變量稱為主成分(Principal Components)。具體地,主成分可以看做一個線性方程 ,其包含一系列線性係數來指示投影方向。PCA對原始數據的正則化或預處理敏感(相對縮放)。
一個高斯分布 ,平均值 為(1, 3),標準差在(0.878, 0.478)方向上為3、在其正交方向上為1的主成分分析。黑色的兩個向量是此分布的共變異數矩陣 的特徵向量 ,其長度為對應的特徵值 之平方根,並以分布的平均值為原點。
基本思想:
將坐標軸中心移到數據的中心,然後旋轉坐標軸,使得數據在C1軸上的方差最大,即全部n個數據個體在該方向上的投影最為分散。意味着更多的信息被保留下來。C1成為第一主成分 。
C2第二主成分 :找一個C2,使得C2與C1的協方差 (相關係數 )為0,以免與C1信息重疊,並且使數據在該方向的方差儘量最大。
以此類推,找到第三主成分,第四主成分……第p個主成分。p個隨機變量可以有p個主成分[ 1] 。
主成分分析經常用於減少數據集的維數 ,同時保留數據集當中對方差 貢獻最大的特徵。這是通過保留低維主成分,忽略高維主成分做到的。這樣低維成分往往能夠保留住數據的最重要部分。但是,這也不是一定的,要視具體應用而定。由於主成分分析依賴所給數據,所以數據的準確性對分析結果影響很大。
主成分分析由卡爾·皮爾遜 於1901年發明[ 2] ,用於分析數據及建立數理模型,在原理上與主軸定理 相似。之後在1930年左右由哈羅德·霍特林 獨立發展並命名。依據應用領域的不同,在信號處理中它也叫做離散K-L 轉換 (discrete Karhunen–Loève transform (KLT))。其方法主要是通過對共變異數矩陣 進行特徵分解[ 3] ,以得出數據的主成分(即特徵向量 )與它們的權值(即特徵值 [ 4] )。PCA是最簡單的以特徵量分析多元統計分布的方法。其結果可以理解為對原數據中的方差 做出解釋:哪一個方向上的數據值對方差的影響最大?換而言之,PCA提供了一種降低數據維度 的有效辦法;如果分析者在原數據中除掉最小的特徵值 所對應的成分,那麼所得的低維度數據必定是最優化的(也即,這樣降低維度必定是失去訊息最少的方法)。主成分分析在分析複雜數據時尤為有用,比如人臉識別 。
PCA是最簡單的以特徵量分析多元統計分布的方法。通常,這種運算可以被看作是揭露數據的內部結構,從而更好地展現數據的變異度。如果一個多元數據集是用高維數據空間之坐標系來表示的,那麼PCA能提供一幅較低維度的圖像,相當於數據集在訊息量最多之角度上的一個投影。這樣就可以利用少量的主成分讓數據的維度降低了。
PCA 跟因子分析 密切相關。因子分析通常包含更多特定領域底層結構的假設,並且求解稍微不同矩陣的特徵向量。
PCA 也跟典型相關分析 (CCA)有關。CCA定義的坐標系可以最佳地描述兩個數據集之間的互協方差 ,而PCA定義了新的正交坐標系,能最佳地描述單個數據集當中的變異數。
通常,為了確保第一主成分描述的是最大方差的方向,我們會使用平均減法進行主成分分析。如果不執行平均減法,第一主成分有可能或多或少的對應於數據的平均值。另外,為了找到近似數據的最小均方誤差,我們必須選取一個零均值[ 6] 。
假設零經驗均值,數據集 X 的主成分w 1 可以被定義為:
w
1
=
arg
m
a
x
‖
w
‖
=
1
Var
{
w
⊤
X
}
=
arg
m
a
x
‖
w
‖
=
1
E
{
(
w
⊤
X
)
2
}
{\displaystyle \mathbf {w} _{1}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {\arg \,max} }}\,\operatorname {Var} \{\mathbf {w} ^{\top }\mathbf {X} \}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {\arg \,max} }}\,E\left\{\left(\mathbf {w} ^{\top }\mathbf {X} \right)^{2}\right\}}
為了得到第 k 個主成分,必須先從X 中減去前面的
k
−
1
{\displaystyle k-1}
個主成分:
X
^
k
−
1
=
X
−
∑
i
=
1
k
−
1
w
i
w
i
⊤
X
{\displaystyle \mathbf {\hat {X}} _{k-1}=\mathbf {X} -\sum _{i=1}^{k-1}\mathbf {w} _{i}\mathbf {w} _{i}^{\top }\mathbf {X} }
然後把求得的第k 個主成分帶入數據集,得到新的數據集,繼續尋找主成分。
w
k
=
a
r
g
m
a
x
‖
w
‖
=
1
E
{
(
w
⊤
X
^
k
−
1
)
2
}
.
{\displaystyle \mathbf {w} _{k}={\underset {\Vert \mathbf {w} \Vert =1}{\operatorname {arg\,max} }}\,E\left\{\left(\mathbf {w} ^{\top }\mathbf {\hat {X}} _{k-1}\right)^{2}\right\}.}
PCA相當於在氣象學中使用的經驗正交函數(EOF),同時也類似於一個線性隱層神經網絡。 隱含層 K 個神經元的權重向量收斂後,將形成一個由前 K 個主成分跨越空間的基礎。但是與PCA不同的是,這種技術並不一定會產生正交向量。
PCA是一種很流行且主要的模式識別技術。然而,它並不能最優化類別可分離性[ 7] 。另一種不考慮這一點的方法是線性判別分析。
More information , ...
Symbol符號
Meaning意義
Dimensions尺寸
Indices指數
X
=
{
X
[
m
,
n
]
}
{\displaystyle \mathbf {X} =\{X[m,n]\}}
由所有數據向量集組成的數據矩陣,一列代表一個向量
M
×
N
{\displaystyle M\times N}
m
=
1
…
M
{\displaystyle m=1\ldots M}
n
=
1
…
N
{\displaystyle n=1\ldots N}
N
{\displaystyle N\,}
數據集中列向量的個數
1
×
1
{\displaystyle 1\times 1}
標量
M
{\displaystyle M\,}
每個列向量的元素個數
1
×
1
{\displaystyle 1\times 1}
標量
L
{\displaystyle L\,}
子空間的維數,
1
≤
L
≤
M
{\displaystyle 1\leq L\leq M}
1
×
1
{\displaystyle 1\times 1}
標量
u
=
{
u
[
m
]
}
{\displaystyle \mathbf {u} =\{u[m]\}}
經驗均值向量
M
×
1
{\displaystyle M\times 1}
m
=
1
…
M
{\displaystyle m=1\ldots M}
s
=
{
s
[
m
]
}
{\displaystyle \mathbf {s} =\{s[m]\}}
經驗標準方差向量
M
×
1
{\displaystyle M\times 1}
m
=
1
…
M
{\displaystyle m=1\ldots M}
h
=
{
h
[
n
]
}
{\displaystyle \mathbf {h} =\{h[n]\}}
所有的單位向量
1
×
N
{\displaystyle 1\times N}
n
=
1
…
N
{\displaystyle n=1\ldots N}
B
=
{
B
[
m
,
n
]
}
{\displaystyle \mathbf {B} =\{B[m,n]\}}
對均值的偏離向量
M
×
N
{\displaystyle M\times N}
m
=
1
…
M
{\displaystyle m=1\ldots M}
n
=
1
…
N
{\displaystyle n=1\ldots N}
Z
=
{
Z
[
m
,
n
]
}
{\displaystyle \mathbf {Z} =\{Z[m,n]\}}
Z-分數,利用均值和標準差計算得到
M
×
N
{\displaystyle M\times N}
m
=
1
…
M
{\displaystyle m=1\ldots M}
n
=
1
…
N
{\displaystyle n=1\ldots N}
C
=
{
C
[
p
,
q
]
}
{\displaystyle \mathbf {C} =\{C[p,q]\}}
協方差矩陣
M
×
M
{\displaystyle M\times M}
p
=
1
…
M
{\displaystyle p=1\ldots M}
q
=
1
…
M
{\displaystyle q=1\ldots M}
R
=
{
R
[
p
,
q
]
}
{\displaystyle \mathbf {R} =\{R[p,q]\}}
相關矩陣
M
×
M
{\displaystyle M\times M}
p
=
1
…
M
{\displaystyle p=1\ldots M}
q
=
1
…
M
{\displaystyle q=1\ldots M}
V
=
{
V
[
p
,
q
]
}
{\displaystyle \mathbf {V} =\{V[p,q]\}}
C 的所有特徵向量集
M
×
M
{\displaystyle M\times M}
p
=
1
…
M
{\displaystyle p=1\ldots M}
q
=
1
…
M
{\displaystyle q=1\ldots M}
D
=
{
D
[
p
,
q
]
}
{\displaystyle \mathbf {D} =\{D[p,q]\}}
主對角線為特徵值的對角矩陣
M
×
M
{\displaystyle M\times M}
p
=
1
…
M
{\displaystyle p=1\ldots M}
q
=
1
…
M
{\displaystyle q=1\ldots M}
W
=
{
W
[
p
,
q
]
}
{\displaystyle \mathbf {W} =\{W[p,q]\}}
基向量矩陣
M
×
L
{\displaystyle M\times L}
p
=
1
…
M
{\displaystyle p=1\ldots M}
q
=
1
…
L
{\displaystyle q=1\ldots L}
Y
=
{
Y
[
m
,
n
]
}
{\displaystyle \mathbf {Y} =\{Y[m,n]\}}
X 和W 矩陣的投影矩陣
L
×
N
{\displaystyle L\times N}
m
=
1
…
L
{\displaystyle m=1\ldots L}
n
=
1
…
N
{\displaystyle n=1\ldots N}
Close
如上所述,主成分分析的結果依賴於變量的縮放。
主成分分析的適用性受到由它的派生物產生的某些假設[ 8] 的限制。
通過使用降維來保存大部分數據信息的主成分分析的觀點是不正確的。確實如此,當沒有任何假設信息的信號模型時,主成分分析在降維的同時並不能保證信息的不丟失,其中信息是由香農熵 [ 9] 來衡量的。
基於假設得
x
=
s
+
n
{\displaystyle \mathbf {x} =\mathbf {s} +\mathbf {n} }
也就是說,向量 x 是含有信息的目標信號 s 和噪聲信號 n 之和,從信息論角度考慮主成分分析在降維上是最優的。
特別地,Linsker證明了如果 s 是高斯分布,且 n 是 與密度矩陣相應的協方差矩陣的高斯噪聲,
以下是使用統計方法計算PCA的詳細說明。但是請注意,如果利用奇異值分解(使用標準的軟件)效果會更好。
我們的目標是把一個給定的具有 M 維的數據集X 變換成具有較小維度 L 的數據集Y 。現在要求的就是矩陣Y ,Y 是矩陣X Karhunen–Loève變換。:
Y
=
K
L
T
{
X
}
{\displaystyle \mathbf {Y} =\mathbb {KLT} \{\mathbf {X} \}}
假設有一組 M 個變量的觀察數據,我們的目的是減少數據,使得能夠用L 個向量來描述每個觀察值,L < M 。進一步假設,該數據被整理成一組具有N 個向量的數據集,其中每個向量都代表M 個變量的單一觀察數據。
x
1
…
x
N
{\displaystyle \mathbf {x} _{1}\ldots \mathbf {x} _{N}}
為列向量,其中每個列向量有M 行。
將計算得到的均值放入一個 M × 1維的經驗均值向量u 中
u
[
m
]
=
1
N
∑
n
=
1
N
X
[
m
,
n
]
{\displaystyle u[m]={1 \over N}\sum _{n=1}^{N}X[m,n]}
對於在最大限度地減少近似數據的均方誤差的基礎上找到一個主成分來說,均值減去法是該解決方案的不可或缺的組成部分[ 10] 。因此,我們繼續如下步驟:
B
=
X
−
u
h
{\displaystyle \mathbf {B} =\mathbf {X} -\mathbf {u} \mathbf {h} }
其中h 是一個長度為N 的全為1的行向量:
h
[
n
]
=
1
for
n
=
1
,
…
,
N
{\displaystyle h[n]=1\,\qquad \qquad {\text{for }}n=1,\ldots ,N}
C
=
E
[
B
⊗
B
]
=
E
[
B
⋅
B
∗
]
=
1
N
−
1
∑
B
⋅
B
∗
{\displaystyle \mathbf {C} =\mathbb {E} \left[\mathbf {B} \otimes \mathbf {B} \right]=\mathbb {E} \left[\mathbf {B} \cdot \mathbf {B} ^{*}\right]={1 \over N-1}\sum _{}\mathbf {B} \cdot \mathbf {B} ^{*}}
其中
E
{\displaystyle \mathbb {E} }
為期望值
⊗
{\displaystyle \otimes }
是最外層運算符
∗
{\displaystyle *\ }
是共軛轉置運算符。
請注意,如果B完全由實數組成,那麼共軛轉置與正常的轉置一樣。
為什麼是N-1,而不是N,Bessel's correction 給出了解釋
V
−
1
C
V
=
D
{\displaystyle \mathbf {V} ^{-1}\mathbf {C} \mathbf {V} =\mathbf {D} }
其中,D 是C 的特徵值對角矩陣,這一步通常會涉及到使用基於計算機的計算特徵值和特徵向量的算法。在很多矩陣代數系統中這些算法都是現成可用的,如R語言 ,MATLAB ,[ 11] [ 12] Mathematica ,[ 13] SciPy , IDL (交互式數據語言), 或者GNU Octave 以及OpenCV 。
各個特徵值和特徵向量都是配對的,m 個特徵值對應m 個特徵向量。
Correspondence analysis
Canonical correlation
CUR matrix approximation (can replace of low-rank SVD approximation)
Detrended correspondence analysis
Dynamic mode decomposition
特徵臉 (Eigenface)
多線性主成分分析 (Multilinear PCA)
Geometric data analysis
Factorial code
獨立成分分析
核主成分分析
矩陣分解
Nonlinear dimensionality reduction
Oja's rule
Point distribution model (PCA applied to morphometry and computer vision)
Principal component regression
Singular spectrum analysis
奇異值分解
Sparse PCA
變換編碼
最小二乘法
Low-rank approximation
Abdi. H., & Williams, L.J. Principal component analysis.. Wiley Interdisciplinary Reviews: Computational Statistics,. 2010, 2 : 433–459.