主成分分析和因子分析是資料探勘中常用的方法,幫助我們對原始資料有更好的理解,同時也可以實現降維等操作,為後續工作提供便利。
但是有一些部落格的介紹中,其中數學推導的部分過多,沒有很好地跟實際例子結合到一起,通俗易懂地解釋這兩個東西。我更想更需要直白的解釋。
pca
何謂主成分分析,其實大家通常意義說的那個借助於特徵值和特徵向量的pca方法,應該叫做「基於方差最大化的特徵主成分分析」。
真正的主成分分析,應該是所有能夠對資料實現主要成分表示的方法的總的稱謂。
因為,主成分分析的目標是: xm
∗nbn
∗k=c
m∗k
其中, xm
∗n表示 m
行n列的樣本矩陣, b
表示k維空間的基底矩陣, c
m∗k 表示原始資料 x
經過空間變換
b之後,得到的新空間內的資料。其中的 b
是特徵主成分的表示
如何表示
b有很多種角度,也就意味著有很多種主成分分析方法。
先講「基於方差最大化的特徵主成分分析-pca」,我們暫且還是這麼叫它為pca。
pca一開始就沒打算直接對資料怎麼樣,而是研究維度之間的關係,將維度簡化,比如去掉相關性之類的,或者是去掉一些用處不大的維度。
假設樣本矩陣去中心後,表示為 z
。 如果從線性相關性入手研究的話,就必須要提到協方差矩陣zt
z,注意其是 n
∗n的,表示的是維度之間的協方差關係。啥叫兩個隨機變數 m
,n的協方差,就是: c
ov(m
,n)=
e(m−
m¯¯¯
¯)(n
−n¯¯
¯)=1
m∗∑m
i=1(
mi−m
i¯¯¯
¯¯)(
ni−n
i¯¯¯
¯)剛好co
v(a,
a)=1
m∗zt
z 。m表示樣本數量,是常數。
協方差在一定程度上描述了維度之間的線性關係,為什麼呢?
因為線性相關係數 ρ
xy=c
ov(x
,y)d
(x)√
d(y)
√ ,協方差是分子部分,可以描述方差意義下的相關性。
這個協方差矩陣是否可以縮減一下,(有些維度是線性相關性很強的,並且我們如果把主要資訊所在的維度)如果可以把相關性這層關係表示成另外一種簡化形式,豈不是更好。
這個時候就需要特徵值和特徵向量的登場了。
對某個矩陣 a
來說,如果存在不是零向量的β使得
aβ=λβ
,則稱 β
為矩陣 a
的特徵向量,
λ為矩陣 a
的特徵值。
從空間變換上來看,
β這個向量有個很好的特點,就是矩陣
a 經過
β的變換之後,還在
β 這個方向上,只不過是數值大小(包括正負)會出現變化。
怎麼解釋特徵值呢,就是資料在特徵向量方向上的方差。方差越大,資訊量越大。(可否理解為方差越大,不確定性越大,資訊量越大。方差小的表示本維度的值波動範圍小,對樣本標籤的**也就無法很好地**,方差大的才能更好地。)
那麼,這樣就好了,我們對維度之間的關係矩陣,進行特徵值分解, z
tz=q
λqt 就找到了特徵向量,q是由特徵向量正交單位化之後組成的。
於是將維度之間的關係矩陣,表示在了特徵向量為基底的空間內,得到 z
tz[β
1,β2
,...
βn]=
[λ1β
1,λ2
β2,.
...λ
nβn]
,其中的 λ
表示的是在各個基底方向上的大小(乙個資料在三維中的表示為(1000,999,1),當然可以認為x,y維度上更重要)。
(1) z
tz剛好是實對稱矩陣,所以可以譜分解為上述形式。
(2)q也可以不單位正交化。
根據原始維度之間的協方差關係,可以找到新的維度空間(特徵向量為基底表示的空間),且能夠變換過去,且不同特徵值之間的特徵向量線性不相關(所以有人也說是去相關)。 選擇
λ較大的前幾個,作為新的特徵基底,比如 [
λ1,λ
2,λ3
] (到這裡,主成分分析算是完畢了,主要成分都已經找到了),對原始資料進行空間變換 x
[λ1,
λ2,λ
3]=[
xλ1,
xλ2,
xλ3]
,將其表示在新的基底下,就是保留了較大方差的新資料(實現了降維)(因為方差小的維度對分類判斷沒有太大作用,去掉了認為資料損失不大,這個限度就看你取前幾個最大的佔所有的比例)。
我們看到,主成分是指的維度的主成分,此處用的是方差最大的一種主成分分析,當然還可以用其他標準來分析其主成分,所以主成分分析是個很大的概念。
factor analysis
因子分析,實際上應該叫做公共因子分析,為什麼呢?看其定義: x=
af+ε
x表示原始資料,
f表示公共因子, ε
是特殊因子
因子分析的原理是假設原始的資料是由公共因子(公共維度)與誤差因子(非公共維度)構成的,如上式所寫。(但因子分析更關心公共因子,對特殊因子不甚關心)
那麼,問題來了,如何找到公共因子呢?
我從乙個易於理解的角度,為大家解析基於特徵向量的公共因子分析,而不是從很恐怖的統計角度。我僅僅是去湊出公共因子分析的定義形式,然後去比對著定義找公共因子。其中很多地方是與任浩同學的討論明白的。
我們先嘗試對上式變形運算: x
tx=(
af+ε
)t(a
f+ε)
先看右側,我們將非公共部分去掉,得到: x
tx≈(
af)t
(af)
注意此處的約等於不是抽取公共因子(用少量公共因子)之後造成的約等,而是因為去掉了特殊因子造成的約等。 x
tx=v
λvt 實對稱矩陣的特徵值分解,此處不做單位化處理。 x
tx=[
β1,β
2,..
.,βn
]⎡⎣⎢
⎢⎢λ1
λ2..
.λn⎤
⎦⎥⎥⎥
⎡⎣⎢⎢
⎢⎢β1
β2..
.βn⎤
⎦⎥⎥⎥
⎥ xt
x=[λ
1−−√
β1,λ
2−−√
β2,.
..,λ
n−−√
βn]⎡
⎣⎢⎢⎢
⎢λ1−
−√β1
λ2−−
√β2.
..λn
−−√β
n⎤⎦⎥
⎥⎥⎥
對比上式: x
tx≈(
af)t
(af)
如果從 [λ
1−−√
β1,λ
2−−√
β2,.
..,λ
n−−√
βn] 抽取幾個 β
作為公共因子,豈不是個很好的想法。於是,就有了公共因子。
此處的左側 x
tx,怎麼看著這麼眼熟,是不是跟前面提到的協方差矩陣很像。哈哈,是的,很像。但是請注意:這裡可以不用去中心化,因為沒有嚴格的去研究維度之間的相關性,而是單純的做了轉置再乘以自身(當然也可以去中心化),這種變形運算是為了湊出右側乘的形式,以便於跟定義的公共因子的樣子相近。
至此,公共因子的抽取也就結束了,至於公共因子旋轉之類的操作,是為了使得公共因子更具有可解釋性,暫時還不做解釋了。
還有如何利用公共因子去分析原始維度的重要性,這裡也不做贅述了,大家自己上網搜尋了解吧。
公共因子的形式可以有很多種,都能湊出定義的形式來,那麼也就有很多因子分析方法了。
小結
pca和fa是很常用的因素分析方法,他們之間既有聯絡又各不相同。
主成分分析,是分析維度屬性的主要成分表示。
因子分析,是分析屬性們的公共部分的表示。
主成分分析和因子分析
1 主成分分析 pca 主成分分析 將原始特徵 變數 按一定的線性組合而成新的若干個變數,這些若干個變數就稱為主成分,通常主成分個數少於自變數個數,從而達成降維目的。主成分分析與svd都是可以降維,那麼它們的區別在哪?區別在於pca需要先計算協方差矩陣,接著通過協方差矩陣進行與svd相似的步驟 而s...
主成分分析與因子分析的區別
主成分分析和因子分析有十大區別 1.原理不同 主成分分析基本原理 利用降維 線性變換 的思想,在損失很少資訊的前提下把多個指標轉化為幾個不相關的綜合指標 主成分 即每個主成分都是原始變數的線性組合,且各個主成分之間互不相關,使得主成分比原始變數具有某些更優越的效能 主成分必須保留原始變數90 以上的...
pca主成分分析 PCA主成分分析(中)
矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...