用 Excel 做主成分分析(中篇)

施威銘研究室
5 min readDec 17, 2021

--

上週的文章中,我們嘗試要用 Excel 進行主成分分析(Principal Component Analysis, PCA)。再讓我們回顧一下操作步驟:

步驟 1:資料集中心化(Centralise)。

步驟 2:計算共變異數矩陣(Covariance Matrix)。

步驟 3:用 Power Iteration 找出共變異數矩陣的特徵向量(Eigenvector)。

步驟 4:計算主成分(Principal Component)。

步驟 5:計算共變異數矩陣投影在特徵向量的法向量。

步驟 6:重複步驟 3 到步驟 5,直到取得夠多主成分。

我們已經介紹了前 2 個步驟,接下來要介紹步驟 3 跟步驟 4。

步驟 3:用 Power Iteration 找出共變異數矩陣的特徵向量(Eigenvector)

我們現在要找出共變異數矩陣的特徵向量,一般來說教科書都是解聯立方程組,計算過程可以參考施威銘研究室的 Medium 文章。但是 Excel 要做這件事情是有點困難,該怎麼辦呢?

圖一、共變異數矩陣。

這邊文章要介紹的方法叫 Power Iteration,雖然這是一個需要迴圈的操作,但是收斂速度非常快,通常 5 次就足夠,所以可以用 Excel 操作。方法如下:

步驟 3-1:初始化 1 個元素個數與共變異數矩陣欄數相同的隨機向量,這可以使用 Excel 資料分析增益集的亂數產生器處理。

圖二、點選「資料」中的「資料分析」。
圖三、選擇「亂數產生器」之後點「確定」。
圖四、設定變數個數、亂數個數、分配、參數、輸出範圍。

經過上面步驟,我們就可以得到一個隨機向量。

圖五、隨機向量。

步驟 3-2:將隨機向量轉成隨機單位向量,這可以使用 Excel 的 SQRT 函數完成。

I2 = H2/SQRT(H2*H2+H3*H3)
I3 = H3/SQRT(H2*H2+H3*H3)
圖六、隨機單位向量。

步驟 3-3:計算共變異數矩陣乘上單位向量,得到新的向量。

這一步需要使用矩陣乘法,還好 Excel 已經有 MMULT 函數可以進行這項操作。

圖七、一次選取 2 個儲存格。
圖八、使用MMULT,輸入想要相乘的 2 個矩陣所在的儲存格索引。
圖九、按下ctrl+shift+enter

步驟 3-4:重複步驟 3-2 跟 3-3(再把欄位 J 的向量轉成單位向量,然後跟共變異數矩陣相乘)。會發現 5 次之後單位向量就收斂,收斂的成果就是特徵向量了。

圖十、得到特徵向量。

步驟 4:計算主成分(Principal Component)

接下來,我們把中心化的特徵,使用 Excel 的 MMULT 矩陣乘法,乘上特徵向量,就是第一主成分了。第一主成分將會包含資料中最大的變異,因此就是只用一個維度,來捕捉最多資料的訊息

圖十一、計算主成分。

今天就先操作到這裡,下週會介紹如何計算第二主成分。先幫大家做一個整理。

重點整理

1、Power Iteration 是一連串矩陣乘上單位向量的動作,收斂之後可以得到該矩陣的特徵向量。

2、計算出共變異數矩陣的特徵向量後,將中心化特徵乘上特徵向量,即可得到主成分。

3、Excel 資料分析增益集的亂數產生器,可以幫助我們產生一組亂數。

4、Excel 的 SQRT 函數,可以幫助我們將向量轉換成單位向量。

5、Excel 的 MMULT 函數,可以幫助我們計算矩陣相乘。

關於作者

Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.

--

--

施威銘研究室
施威銘研究室

Written by 施威銘研究室

致力開發AI領域的圖書、創客、教具,希望培養更多的AI人才。整合各種人才,投入創客產品的開發,推廣「實作學習」,希望實踐學以致用的理想。

No responses yet