PCA(主成分分析)與FA(因子分析)的直白理解

2021-07-05 23:23:42 字數 4454 閱讀 4734

主成分分析和因子分析是資料探勘中常用的方法,幫助我們對原始資料有更好的理解,同時也可以實現降維等操作,為後續工作提供便利。

但是有一些部落格的介紹中,其中數學推導的部分過多,沒有很好地跟實際例子結合到一起,通俗易懂地解釋這兩個東西。我更想更需要直白的解釋。

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中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...