上週的文章中,我們嘗試要用 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 函數可以進行這項操作。
步驟 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.