主成分分析法(PCA)等降維(dimensionality reduction)算法-Python

機器學習算法學習路上的伙伴們,早安、午安、晚安,機器學習一些基礎算法的初級知識學的差不多啦,跟著《機器學習算法實戰(zhàn)》這本書來看看在使用這些算法之前,對數(shù)據(jù)處理的一些方法。首先看看降維(dimensionality reduction)。

降維簡單說就是指減少計算時的特征維度,因為很多特征可能對于最后的分析不重要,尤其是當特征值很多的情況下,完全可以通過減少這些不重要的特征來降低計算的復雜度,提升算法效率,同時一定程度上可以去除噪聲。目前,主要降維方法有:主成分分析法(Principal Component Analysis, PCA)、因子分析法(Factor Analysis)、獨立成分分析(Independent Component Analysis, ICA),本篇文章主要學習主成分分析法(PCA)。

主成分分析法(Principal Component Analysis, PCA)

你還記得高維向量空間里的向量的基么?面對高維的向量,求解一些線性不相關列向量來表示向量空間內(nèi)的任何一個向量;主成分分析方法其實也是這樣的想法,希望找到這些主要的特征。簡單說:主成分分析(PCA), 是一種統(tǒng)計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換后的這組變量叫主成分。

最大方差理論:在信號處理中認為信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。

圖1

如圖1所示,樣本在u1上的投影方差較大,在u2的投影方差較小,那么可以認為u2上的投影是由噪聲引起的。因此,u1就是主成分方向。那么,實際計算中,u1,u2這種軸怎么計算呢,主要是依據(jù)協(xié)方差矩陣。

啥是協(xié)方差矩陣?

協(xié)方差:當存在兩個變量時(X,Y),分析他們的關系時就出現(xiàn)了協(xié)方差的概念:

二維協(xié)方差公式:Cov(X,Y)=E{[X?E(X)][Y?E(Y)]}=E(XY)?E(X)E(Y)

當樣本含有大量維度(隨機變量多)的時候,我們就需要使用矩陣來刻畫各個維度之間的關聯(lián)關系。設某個矩陣如下:(下面矩陣中每一行代表一個樣本,每一列代表一個隨機變量。)

圖2

則此時各個變量之間的關系就得用協(xié)方差矩陣來表示:

圖3 協(xié)方差矩陣

圖3中,協(xié)方差矩陣對角線上的值表示對應特征的方差。

綜上,再簡單說明下PCA的計算模式:在PCA中,數(shù)據(jù)從原來的坐標系轉換到了新的坐標系,新坐標系的選擇是由數(shù)據(jù)本身決定的。第一個新坐標軸選擇餓的是原始數(shù)據(jù)中方差最大的方向(也就是協(xié)方差對角線上數(shù)值最大的特征),第二個新坐標軸的選擇和第一個坐標軸正交且具有最大方差的方向。該過程一直重復,重復次數(shù)為原始數(shù)據(jù)中特征的數(shù)目。事實表明,大部分方差都包含在最前面的幾個新坐標軸中。因此,我們可以忽略余下的坐標軸,即對數(shù)據(jù)進行了降維處理。

PCA偽代碼

將數(shù)據(jù)轉換為前N個主成分的偽代碼大致如下:去除平均值(將數(shù)據(jù)統(tǒng)一在坐標原點,利于計算)->計算協(xié)方差矩陣->計算協(xié)方差矩陣的特征值和特征向量->將特征值從大到小排序->保留最上面的N個特征向量->將數(shù)據(jù)轉換到上述N個特征向量構建的新空間中。

代碼如下:

圖4

結合數(shù)據(jù),查看效果(藍色的三角形表示原始點,紅色的圓點表示主成分分析得到的):

圖5
圖6

好噠,關于主成分分析法PCA的初步學習基本到這里,希望對大家有用,也請大牛不吝賜教,非常感謝。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容