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