機器學習_學習筆記系列(62):稀疏主成分分析 (Sparse Principal Component Analysis)
對於上上一回PCA的介紹,我們知道我們今天想要找到一個資料集的主成分,我們只要找到其eigenvalue和eigenvector,我們就可以得到將數據降維的矩陣。
但是PCA實際上有個問題,就是我們所得到的eigenvalue和eigenvector,是由所有的資料經過線性結合(linear combination)所得到的,所以可能導致一些人為失誤或外在因素所造成偏差很大的數據,引響我們最後降維的結果。
所以我們是不是對於數據集,我們只要挑一些出來做降維就好?而對於這個概念就有人提出了「Sparse Principal Component Analysis」。
Sparse Principal Component Analysis
關於Sparse PCA,其概念想法簡單來說,就是利用LASSO和Ridge來regularize我們的PCA,而提出這個概念的其中一個作者,就是LASSO的始祖Robert Tibshirani,順帶一題他也是Waterloo和Toronto出來的,真的不得不說加拿大AI/ML的理論真的強到爆炸!!!
回到Sparse PCA的理論,其想在PCA裡面加入regularization的用意,就是希望把那些影響降維效果的數據限制住,如此一來得到更好的結果,而在這篇paper中,設我們的輸入資料集為X,總共有N筆資料、M個特徵,我們想要將數據降到K維。
首先我們會先初始化我們的矩陣A
且我們初始化A必須滿組
接著我們這裡要做的事情就是找出一組參數𝛽乘上X後的值能和降維後的數據差越小越好,同時也在這裡加上regularization作為限制
而要求解最佳化問題我們可以將這個式子微分:
然後用梯度下降的方式求出,其中我們最後想要得到的為
然後我們再計算
並用U來更新A
之後我們再用相同的步驟找出B再更新A直到收斂為止。最終得出來的𝛽再做normalization就是我們的答案
Example
接著我們實際來看PCA和Sparse PCA的差別
Python Sample Code:
Github:
Reference:
[1] Zou, H., Hastie, T., & Tibshirani, R. (2006). Sparse principal component analysis. Journal of computational and graphical statistics, 15(2), 265–286.