一步步教你輕鬆學主成分分析PCA降維演算法
文章推薦指數: 80 %
1.2 什麼是降維 · 主成分分析就是找出一個最主要的特徵,然後進行分析。
· 因子分析(Factor Analysis),將多個實測變數轉換為少數幾個綜合指標。
· 獨立成分 ...
MdEditor
一步步教你輕鬆學主成分分析PCA降維演算法
語言:CN/TW/HK
時間 2020-03-1314:01:40
AINLP
主題:
主成分分析
演算法
機器學習和自然語言處理
公眾號ID:datathinks
1資料降維
1.1預備知識
均值
方差
標準差
協方差
正交矩陣
1.2什麼是降維
降維是對資料高維度特徵的一種預處理方法。
降維是將高維度的資料保留下最重要的一些特徵,去除噪聲和不重要的特徵,從而實現提升資料處理速度的目的。
在實際的生產和應用中,降維在一定的資訊損失範圍內,可以為我們節省大量的時間和成本。
降維也成為了應用非常廣泛的資料預處理方法。
我們正通過電視觀看體育比賽,在電視的顯示器上有一個足球。
顯示器大概包含了100萬畫素點,而球則可能是由較少的畫素點組成,例如說一千個畫素點。
人們實時的將顯示器上的百萬畫素轉換成為一個三維影象,該影象就給出運動場上球的位置。
在這個過程中,人們已經將百萬畫素點的資料,降至為三維。
這個過程就稱為降維(dimensionalityreduction)
資料降維的目的:
使得資料集更容易使用
確保這些變數是相互獨立的
降低很多演算法的計算開銷
去除噪音
使得結果易懂
適用範圍:
在已標註與未標註的資料上都有降維技術。
本文主要關注未標註資料上的降維技術,將技術同樣也可以應用於已標註的資料。
常見降維技術(PCA的應用目前最為廣泛)
主成分分析就是找出一個最主要的特徵,然後進行分析。
例如:考察一個人的智力情況,就直接看數學成績就行(數學、語文、英語成績)
因子分析(FactorAnalysis),將多個實測變數轉換為少數幾個綜合指標。
它反映一種降維的思想,通過降維將相關性高的變數聚在一起,從而減少需要分析的變數的數量,而減少問題分析的複雜性.例如:考察一個人的整體情況,就直接組合3樣成績(隱變數),看平均成績就行(存在:數學、語文、英語成績),應用的領域包括社會科學、金融等。
在因子分析中,
假設觀察資料的成分中有一些觀察不到的隱變數(latentvariable)。
假設觀察資料是這些隱變數和某些噪音的線性組合。
那麼隱變數的資料可能比觀察資料的數目少,也就說通過找到隱變數就可以實現資料的降維。
獨立成分分析(IndependComponentAnalysis,ICA),ICA認為觀測訊號是若干個獨立訊號的線性組合,ICA要做的是一個解混過程。
例如:我們去ktv唱歌,想辨別唱的是什麼歌曲?ICA是觀察發現是原唱唱的一首歌【2個獨立的聲音(原唱/主唱)】。
ICA是假設資料是從N個數據源混合組成的,這一點和因子分析有些類似,這些資料來源之間在統計上是相互獨立的,而在PCA中只假設資料是不相關(線性關係)的。
同因子分析一樣,如果資料來源的數目少於觀察資料的數目,則可以實現降維過程。
2PCA概述
主成分分析(PrincipalComponentAnalysis,PCA):通俗理解:就是找出一個最主要的特徵,然後進行分析。
主成分分析(英語:Principalcomponentsanalysis,PCA)是一種分析、簡化資料集的技術。
主成分分析經常用於減少資料集的維數,同時保持資料集中的對方差貢獻最大的特徵。
這是通過保留低階主成分,忽略高階主成分做到的。
這樣低階成分往往能夠保留住資料的最重要方面。
但是,這也不是一定的,要視具體應用而定。
由於主成分分析依賴所給資料,所以資料的準確性對分析結果影響很大。
主成分分析由卡爾·皮爾遜於1901年發明,用於分析資料及建立數理模型。
其方法主要是通過對協方差矩陣進行特徵分解,以得出資料的主成分(即特徵向量)與它們的權值(即特徵值)。
PCA是最簡單的以特徵量分析多元統計分佈的方法。
其結果可以理解為對原資料中的方差做出解釋:哪一個方向上的資料值對方差的影響最大?換而言之,PCA提供了一種降低資料維度的有效辦法;如果分析者在原資料中除掉最小的特徵值所對應的成分,那麼所得的低維度資料必定是最優化的(也即,這樣降低維度必定是失去訊息最少的方法)。
主成分分析在分析複雜資料時尤為有用,比如人臉識別。
PCA是最簡單的以特徵量分析多元統計分佈的方法。
通常情況下,這種運算可以被看作是揭露資料的內部結構,從而更好的解釋資料的變數的方法。
如果一個多元資料集能夠在一個高維資料空間座標系中被顯現出來,那麼PCA就能夠提供一幅比較低維度的影象,這幅影象即為在訊息最多的點上原物件的一個‘投影’。
這樣就可以利用少量的主成分使得資料的維度降低了。
PCA跟因子分析密切相關,並且已經有很多混合這兩種分析的統計包。
而真實要素分析則是假定底層結構,求得微小差異矩陣的特徵向量。
PCA場景
例如:考察一個人的智力情況,就直接看數學成績就行(存在:數學、語文、英語成績)
PCA思想
去除平均值
計算協方差矩陣
計算協方差矩陣的特徵值和特徵向量
將特徵值排序
保留前N個最大的特徵值對應的特徵向量
將資料轉換到上面得到的N個特徵向量構建的新空間中(實現了特徵壓縮)
PCA原理
找出第一個主成分的方向,也就是資料方差最大的方向。
找出第二個主成分的方向,也就是資料方差次大的方向,並且該方向與第一個主成分方向正交(orthogonal如果是二維空間就叫垂直)。
通過這種方式計算出所有的主成分方向。
通過資料集的協方差矩陣及其特徵值分析,我們就可以得到這些主成分的值。
一旦得到了協方差矩陣的特徵值和特徵向量,我們就可以保留最大的N個特徵。
這些特徵向量也給出了N個最重要特徵的真實結構,我們就可以通過將資料乘上這N個特徵向量從而將它轉換到新的空間上。
PCA演算法流程
下面我們看看具體的演算法流程。
PCA優缺點
優點:降低資料的複雜性,識別最重要的多個特徵。
缺點:不一定需要,且可能損失有用資訊。
適用資料型別:數值型資料。
3例項理解
真實的訓練資料總是存在各種各樣的問題:
比如拿到一個汽車的樣本,裡面既有以“千米/每小時”度量的最大速度特徵,也有“英里/小時”的最大速度特徵,顯然這兩個特徵有一個多餘。
拿到一個數學系的本科生期末考試成績單,裡面有三列,一列是對數學的興趣程度,一列是複習時間,還有一列是考試成績。
我們知道要學好數學,需要有濃厚的興趣,所以第二項與第一項強相關,第三項和第二項也是強相關。
那是不是可以合併第一項和第二項呢?
拿到一個樣本,特徵非常多,而樣例特別少,這樣用迴歸去直接擬合非常困難,容易過度擬合。
比如北京的房價:假設房子的特徵是(大小、位置、朝向、是否學區房、建造年代、是否二手、層數、所在層數),搞了這麼多特徵,結果只有不到十個房子的樣例。
要擬合房子特徵->房價的這麼多特徵,就會造成過度擬合。
這個與第二個有點類似,假設在IR中我們建立的文件-詞項矩陣中,有兩個詞項為“learn”和“study”,在傳統的向量空間模型中,認為兩者獨立。
然而從語義的角度來講,兩者是相似的,而且兩者出現頻率也類似,是不是可以合成為一個特徵呢?
在訊號傳輸過程中,由於通道不是理想的,通道另一端收到的訊號會有噪音擾動,那麼怎麼濾去這些噪音呢?
這時可以採用主成分分析(PCA)的方法來解決部分上述問題。
PCA的思想是將n維特徵對映到k維上(k
)
當cov(X,Y)<0時,表明X與Y負相關;
當cov(X,Y)=0時,表明X與Y不相關。
4.3視覺化結果分析
接下來我們檢視降維後的資料與原始資料視覺化效果,我們將原始資料採用綠色△表示,降維後的資料採用紅色○表示。
視覺化程式碼如下:
呼叫程式碼:
執行結果顯示:
5PCA對半導體制造資料降維
5.1專案概述
半導體是在一些極為先進的工廠中製造出來的。
裝置的生命早期有限,並且花費極其巨大。
雖然通過早期測試和頻繁測試來發現有瑕疵的產品,但仍有一些存在瑕疵的產品通過測試。
如果我們通過機器學習技術用於發現瑕疵產品,那麼它就會為製造商節省大量的資金。
具體來講,它擁有590個特徵。
我們看看能否對這些特徵進行降維處理。
對於資料的缺失值的問題,將缺失值NaN(NotaNumber縮寫),全部用平均值來替代(如果用0來處理的策略就太差了)。
收集資料:提供文字檔案,檔名:secom.data.文字檔案部分資料格式如下:
5.2資料預處理
將資料集中NaN替換成平均值,程式碼實現如下:
5.3分析資料
我們拿到資料進行資料預處理之後,再跑下程式,看看中間結果如果,分析資料程式碼如下:
去均值化的特徵值結果顯示如下:
資料分析結果如下:
我們發現其中有超過20%的特徵值都是0。
這就意味著這些特徵都是其他特徵的副本,也就是說,它們可以通過其他特徵來表示,而本身並沒有提供額外的資訊。
最前面值的數量級大於10^5,實際上那以後的值都變得非常小。
這就相當於告訴我們只有部分重要特徵,重要特徵的數目也很快就會下降。
最後,我們可能會注意到有一些小的負值,他們主要源自數值誤差應該四捨五入成0.
根據實驗結果我們繪製半導體資料中前七個主要成分所佔的方差百分比如下
主成分
方差百分比(%)
累積方差百分比(%)
1
59.25
59.3
2
24.12
83.4
3
9.15
92.5
4
2.30
94.8
5
1.46
96.3
6
0.52
96.8
7
0.32
97.1
20
0.09
99.3
5.4PCA降維結果視覺化
呼叫我們上文寫的程式碼如下:
lowDmat,reconMat=pca(dataMat,20)
print(shape(lowDmat))
show_picture(dataMat,reconMat)
執行結果如下:
6參考文獻
主成分分析
中文維基百科
GitHub
圖書:《機器學習實戰》
圖書:《自然語言處理理論與實戰》
一篇深入剖析PCA的好文
主成分分析原理總結
7完整程式碼下載
原始碼請進【機器學習和自然語言QQ群:436303759】檔案下載:
宣告:文章來源機器學習和自然語言處理(ID:datathinks)。
本公眾號旨在技術傳播與分享,未經授權不能轉載釋出。
「其他文章」
畢業快1年了
先入為主:將先驗知識注入推薦模型
BERT的花式玩法
GPT-3「全面」開放,變現模式開啟!
基於知識圖譜的行業問答系統搭建分幾步?
分散式大資料推薦演算法,速度絕對耍X幾條街
被放養導致申博論文難產,該不該硬gang導師?
引用次數在19000次的,都是什麼神仙論文?
盤點一下今年以來的各種大模型們
詳解萬方學術檢索:SimCSE、Sentence-BERT等模型如何落地?
2021最全深圳網際網路公司
Transformer眼中世界Vs.CNN眼中世界
NLP學起來不容易,工作也不好找,該堅持嗎?
近期任務型對話系統綜述以及百度UNIT,理論和實踐,我全都要!(手動鰲拜)
聊一聊“超大模型”
中文歌詞自動生成器:來試試自動寫歌
小樣本學習.中文上的實踐|NLPCC.FewCLUE測評方案總結
聊一聊北美演算法工程師日常
推薦|圖神經網路線上影片教程
Beyond預訓練語言模型,NLP還需要什麼樣的知識?
「主成分分析」
NeurIPS2021|Garment4D:從點雲序列中重建衣物
何為多標籤分類?這裡有幾種實用的經典方法
ICCV2021|UCLA提出:基於張量CUR的快速魯棒張量主成分分析演算法
ASMNet:一種用於人臉對齊和姿態估計的輕量級深度神經網路
WhichBeta(III)?
opencv——PCA(主要成分分析)數學原理推導
Python好壞質檢分類示例
Deepmind最新成果:博弈論視角下的主成分分析
資料分析——因子分析怎麼用?
Faiss原始碼剖析:類結構分析
「演算法」
築牢“安全網”|劍指“演算法”亂象保護資料安全新規出臺
基於機器學習和TFIDF的情感分類演算法,詳解自然語言處理
云溪資料庫選型ART樹作為資料查詢演算法
人民網評:向演算法“技術霸凌”說不
基於機器學習和TFIDF的情感分類演算法,詳解自然語言處理
2022,「演算法」屬於人民
DIff演算法看不懂就一起來錘我(帶圖)
中國演算法治理升級“2.0”
網信辦等4部門規範管理演算法推薦未來演算法產業方向明朗
網信辦等四部門:保障使用者演算法知情權、選擇權
延伸文章資訊
- 1世上最生動的PCA:直觀理解並應用主成分分析 - LeeMeng
世上最簡單的降維:給我一個數字就好!
- 2機器/統計學習:主成分分析(Principal Component Analysis, PCA)
「主成分分析在機器學習內被歸類成為降維(Dimension reduction)內特徵擷取(Feature extraction)的一種方法,降維就是希望資料的維度數減少,但整體的效能不會差異太...
- 3【機器學習】最經典的降維方法:PCA主成分分析 - Jason ...
對於有學習過統計學、人工智慧、機器學習的人來說,你跟他提到「降維」這兩個字,他腦海中閃過的第一個方法一定就是「主成分分析(Principal ...
- 4主成分分析PCA數據降維原理及python應用(葡萄酒案例分析)
數據降維的一種方法是通過特徵提取實現,主成分分析PCA就是一種無監督 ... 換言之,PCA技術就是在高維數據中尋找最大方差的方向,將這個方向投影到 ...
- 5機器學習- 降維- PCA主成分分析 - Jimmy Huang
機器學習- 降維- PCA主成分分析 ... 這兩者的差別主要是,PCA速度快,而且是線性降維,也就是彼此線性相關的資料很適合使用PCA降維,但是如果特徵與 ...