pca(principal component analysis)是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組各維度線性無關的表示,可用於提取資料的主要特徵分量,常用於高維資料的降維。網上關於pca的文章有很多,但是大多數只描述了pca的分析過程,而沒有講述其中的原理。這篇文章的目的是介紹pca的基本數學原理,幫助讀者了解pca的工作機制是什麼。
當然我並不打算把文章寫成純數學文章,而是希望用直觀和易懂的方式敘述pca的數學原理,所以整個文章不會引入嚴格的數學推導。希望讀者在看完這篇文章後能更好的明白pca的工作原理。
一般情況下,在資料探勘和機器學習中,資料被表示為向量。例如某個**店2023年全年的流量及交易情況可以看成一組記錄的集合,其中每一天的資料是一條記錄,格式如下:
(日期, 瀏覽量, 訪客數, 下單數, 成交數, 成交金額)
其中「日期」是乙個記錄標誌而非度量值,而資料探勘關心的大多是度量值,因此如果我們忽略日期這個欄位後,我們得到一組記錄,每條記錄可以被表示為乙個五維向量,其中一條看起來大約是這個樣子:
(500
,240,25
,13,2312.15)t
(500,240,25,13,2312.15)t
。則在二維平面上a和b可以用兩條發自原點的有向線段表示,見下圖:
好,現在我們從a點向b所在直線引一條垂線。我們知道垂線與b的交點叫做a在b上的投影,再設a與b的夾角是a,則投影的向量長度為|a
|cos
(a)|a|cos(a)
也就是說,設向量b的模為1,則a與b的內積值等於a向b所在直線投影的向量長度!這就是內積的一種幾何解釋,也是我們得到的第乙個重要結論。在後面的推導中,將反覆使用這個結論。
下面我們繼續在二維空間內討論向量。上文說過,乙個二維向量可以對應二維笛卡爾直角座標系中從原點出發的乙個有向線段。例如下面這個向量:
在代數表示方面,我們經常用線段終點的點座標表示向量,例如上面的向量可以表示為(3,2),這是我們再熟悉不過的向量表示。
不過我們常常忽略,只有乙個(3,2)本身是不能夠精確表示乙個向量的。我們仔細看一下,這裡的3實際表示的是向量在x軸上的投影值是3,在y軸上的投影值是2。也就是說我們其實隱式引入了乙個定義:以x軸和y軸上正方向長度為1的向量為標準。那麼乙個向量(3,2)實際是說在x軸投影為3而y軸的投影為2。注意投影是乙個向量,所以可以為負。
更正式的說,向量(x,y)實際上表示線性組合:x(
1,0)
t+y(
0,1)
tx(1,0)t+y(0,1)t
不難證明所有二維向量都可以表示為這樣的線性組合。此處(1,0)和(0,1)叫做二維空間中的一組基。
所以,要準確描述向量,首先要確定一組基,然後給出在基所在的各個直線上的投影值,就可以了。只不過我們經常省略第一步,而預設以(1,0)和(0,1)為基。
我們之所以預設選擇(1,0)和(0,1)為基,當然是比較方便,因為它們分別是x和y軸正方向上的單位向量,因此就使得二維平面上點座標和向量一一對應,非常方便。但實際上任何兩個線性無關的二維向量都可以成為一組基,所謂線性無關在二維平面內可以直觀認為是兩個不在一條直線上的向量。
例如,(1,1)和(-1,1)也可以成為一組基。一般來說,我們希望基的模是1,因為從內積的意義可以看到,如果基的模是1,那麼就可以方便的用向量點乘基而直接獲得其在新基上的座標了!實際上,對應任何乙個向量我們總可以找到其同方向上模為1的向量,只要讓兩個分量分別除以模就好了。例如,上面的基可以變為(1
2√,1
2√)(12,12)
。下圖給出了新的基以及(3,2)在新基上座標值的示意圖:
另外這裡要注意的是,我們列舉的例子中基是正交的(即內積為0,或直觀說相互垂直),但可以成為一組基的唯一要求就是線性無關,非正交的基也是可以的。不過因為正交基有較好的性質,所以一般使用的基都是正交的。
下面我們找一種簡便的方式來表示基變換。還是拿上面的例子,想一下,將(3,2)變換為新基上的座標,就是用(3,2)與第乙個基做內積運算,作為第乙個新的座標分量,然後用(3,2)與第二個基做內積運算,作為第二個新座標的分量。實際上,我們可以用矩陣相乘的形式簡潔的表示這個變換:(1
/2–√−
1/2–√
1/2–√
1/2–√
)(32
)=(5
/2–√−
1/2–√
)(1/21/2−1/21/2)(32)=(5/2−1/2)
我們可以看下五條資料在平面直角座標系內的樣子:
現在問題來了:如果我們必須使用一維來表示這些資料,又希望盡量保留原始的資訊,你要如何選擇?
通過上一節對基變換的討論我們知道,這個問題實際上是要在二維平面中選擇乙個方向,將所有資料都投影到這個方向所在直線上,用投影值表示原始記錄。這是乙個實際的二維降到一維的問題。
那麼如何選擇這個方向(或者說基)才能盡量保留最多的原始資訊呢?一種直觀的看法是:希望投影後的投影值盡可能分散。
以上圖為例,可以看出如果向x軸投影,那麼最左邊的兩個點會重疊在一起,中間的兩個點也會重疊在一起,於是本身四個各不相同的二維點投影後只剩下兩個不同的值了,這是一種嚴重的資訊丟失,同理,如果向y軸投影最上面的兩個點和分布在x軸上的兩個點也會重疊。所以看來x和y軸都不是最好的投影選擇。我們直觀目測,如果向通過第一象限和第三象限的斜線投影,則五個點在投影後還是可以區分的。
下面,我們用數學方法表述這個問題。
上文說到,我們希望投影後投影值盡可能分散,而這種分散程度,可以用數學上的方差來表述。此處,乙個欄位的方差可以看做是每個元素與字段均值的差的平方和的均值,即:va
r(a)
=1m∑
i=1m
(ai−
μ)2var(a)=1m∑i=1m(ai−μ)2
,則c是乙個對稱矩陣,其對角線分別個各個欄位的方差,而第i行j列和j行i列元素相同,表示i和j兩個欄位的協方差。
根據上述推導,我們發現要達到優化目前,等價於將協方差矩陣對角化:即除對角線外的其它元素化為0,並且在對角線上將元素按大小從上到下排列,這樣我們就達到了優化目的。這樣說可能還不是很明晰,我們進一步看下原矩陣與基變換後矩陣協方差矩陣的關係:
設原始資料矩陣x對應的協方差矩陣為c,而p是一組基按行組成的矩陣,設y=px,則y為x對p做基變換後的資料。設y的協方差矩陣為d,我們推導一下d與c的關係:d=
====
1myy
t1m(
px)(
px)t
1mpx
xtpt
p(1m
xxt)
ptpc
p
PCA的數學原理
pca的數學原理 pca principal component analysis 是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組各維度線性無關的表示,可用於提取資料的主要特徵分量,常用於高維資料的降維。網上關於pca的文章有很多,但是大多數只描述了pca的分析過程,而沒有講述其中...
PCA的數學原理Matlab演示
pca principal component analysis 主成分分析,是svd singular value decomposition 奇異值分析的一種特殊情況。主要用於資料降維,特徵提取。這裡生成乙個3 3 的小矩陣便於說明。a rand 3,3 a 2.7694 1.3499 3.03...
PCA數學原理及程式設計實現
一.乙個場景 已知一家超市,銷售a,b,c,d四種產品,現對每種產品的一周之內每天的銷售情況記錄如下 a b c d 周一 2 0 8 9 周二 4 0 11 13 週三 3 1 10 12 周四 2 3 11 10 周五 1 0 12 9 週六10 11 1 2 週日11 12 2 1 我們將a,...