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

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

--

資料科學、機器學習一定都要用高階、複雜的程式嗎?並不一定喔,高階程式的好處是有許多現成的函式庫可以使用,但是要享受到函式庫的方便性,必須先經過一段學習程式語言的痛苦期...現在救星來了,就是 Excel!!!

Photo by Mika Baumeister on Unsplash

雖然基本的 Excel 沒有內建機器學習的函式庫,但是我們依然可以使用 Excel 內建的數學函數、增益集,完成一些資料分析演算法。接下來的三篇文章,我們要用 Excel 進行主成分分析(Principal Component Analysis, PCA)。為什麼是主成分分析呢?因為在資料分析的世界裡,我們常常會拿到很大的資料集,這會造成分析上的困難,比如說變數太多無法畫出圖形,或是執行時間太久。主成分分析是一個有效將變數減少的方法,概念是萃取出少數幾個變化較大的變數,來代表全體資料。

文章的講解不只是要讓讀者知道怎麼做主成分分析,同時可以讓讀者在實作的過程中發現 Excel 有很多好用的函數跟增益集。

首先,我們來拆解主成分分析的演算法:

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

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

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

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

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

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

為了方便確認實作過程的正確性,我們先用如圖一的 2 維資料集,這樣就可以畫出圖形來看看實作成果。更高維度的資料,其演算法流程是一樣。

圖一、原始資料集。

步驟 1:資料集中心化

這一步很簡單,就是把每一個特徵,減去該特徵的平均數,讓資料的中心點位置(平均數)是 0。在 Excel 當中,平均數的計算為:

AVERAGE($A$2:$A$19)
AVERAGE($B$2:$B$19)

因此,對於 A2 欄位,中心化的計算即為 :

A2 — AVERAGE($A$2:$A$19)

藉此就可以算出中心化的資料集,結果如圖二。

圖二、中心化的資料集。

步驟 2:計算共變異數矩陣

接下來,我們要計算中心化資料集的共變異數矩陣,關於什麼是共變異數,可以參考施威銘研究室在Medium的文章,我們就不再多說明。計算共變異數矩陣的方式,就是將「中心化資料集的轉置」乘上「中心化資料集」。

計算矩陣相乘好麻煩喔...不用擔心,Excel 資料分析增益集可以幫助我們計算「共變異數矩陣除以資料數」,我們只要將增益集的計算結果,全部乘上資料數 18,就是答案囉!操作方式如下。

圖三、點選「資料」中的「資料分析」。
圖四、點選「共變數」後點「確定」。
圖五、設定輸入資料、選擇「逐欄」、設定輸出範圍、點選「確定」。

按下確定就算出來囉!

圖六、增益集的計算結果。

接下來我們要把每一個元數都乘上資料數,此外,欄 1 對 欄 2 的共變異數,跟欄 2 對 欄 1 的共變異數是一樣的數值,因此我們將數字抄過去。

圖七、計算出共變異數矩陣。

我們的資料集是 18 列(資料筆數)、2 欄(特徵個數),轉置之後會是 2 列、18 欄的型態,矩陣乘完之後就會變成 2 列、2 欄的型態。這樣數字大大低減少囉!

今天就先操作到這裡,幫大家做一個整理。

重點整理

1、資料中心化的意思是就是將資料的平均數調整為 0,做法是將每一筆資料減去該資料的平均數。

2、資料的共變異數矩陣算法是「資料的轉置」乘上「資料本身」。

3、Excel 的 AVERAGE 函數,可以計算一群資料的平均數。

4、Excel 資料分析增益集的共變數,可以幫助我們算出共變異數矩陣。

關於作者

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