吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现
作者 | Peter
編輯 |?AI有道
系列文章:
吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習
吳恩達《Machine Learning》精煉筆記 2:梯度下降與正規方程
吳恩達《Machine Learning》精煉筆記 3:回歸問題和正則化
吳恩達《Machine Learning》精煉筆記 4:神經網絡基礎
吳恩達《Machine Learning》精煉筆記 5:神經網絡
吳恩達《Machine Learning》精煉筆記 6:關于機器學習的建議
吳恩達《Machine Learning》精煉筆記 7:支持向量機 SVM
吳恩達《Machine Learning》精煉筆記 8:聚類 KMeans 及其 Python實現
在本文中主要介紹的是數據降維相關的內容,重點講解了PCA算法
為什么要實施降維
數據壓縮
數據可視化
PCA算法
PCA和線性回歸算法的區別
PCA算法特點
Python實現PCA
sklearn中實現PCA
為何降維
在現實高維數據情況下,會有數據樣本稀疏、距離計算困難等問題,被稱為維數災難。
解決的方法就是降維,也稱之為“維數約簡”,即通過某種數據方法將原始高維屬性空間轉成一個低維“子空間”。在這個子空間中,樣本密度大大提高,將高維空間中的一個低維“嵌入”。
降維Dimensionality Reduction
數據降維主要是有兩個動機:
數據壓縮Data Compression
數據可視化Data Visualization
數據壓縮Data Compression
上圖解釋:
在一個三維空間中的特征向量降至二維的特征向量。
將三維投影到一個二維的平面上,迫使所有的數據都在同一個平面上。
這樣的處理過程可以被用于把任何維度的數據降到任何想要的維度,例如將1000維的特征降至100維。
數據可視化Data Visualization
降維能夠幫助我們進行數據的可視化工作。
上面圖的解釋:
假設給定數據,具有多個不同的屬性
某些屬性表示的含義可能相同,在圖形中可以放到同一個軸上,進行數據的降維
PCA- Principal Component Analysis
在PCA中,要做的是找到一個方向向量(Vector direction),當把所有的數據都投射到該向量上時,PCA的關鍵點就是找到一個投影平面使得投影誤差最小化。
方向向量是一個經過原點的向量,而投射誤差是從特征向量向該方向向量作垂線的長度。
PCA與線性回歸的區別
線性回歸中的縱軸是預測值,PCA中是特征屬性
誤差不同:PCA是投射誤差,線性回歸是嘗試最小化預測誤差。
線性回歸的目的是預測結果,`PCA·是不做任何分析。
PCA算法
主成分分析中,首先對給定數據進行規范化,使得數據每一變量的平均值為0,方差為1。
之后對數據進行正交變換,用來由線性相關表示的數據,通過正交變換變成若干個線性無關的新變量表示的數據。
新變量是可能的正交變換中變量的方差和(信息保存)最大的,方差表示在新變量上信息的大小。將新變量一次成為第一主成分,第二主成分等。通過主成分分析,可以利用主成分近似地表示原始數據,便是對數據降維。
PCA算法中從n維到k維的過程是
均值歸一化。計算所有特征的均值,令xj=xj?μj,如果特征不在一個數量級上,需要除以標準差
計算協方差矩陣 covariance matrix
計算協方差矩陣∑的特征向量 eigenvectors
在西瓜書中的描述為
主成分個數確定
關于PCA算法中主成分個數k的確定,一般是根據公式:
不等式右邊的0.01可以是0.05,或者0.1等,都是比較常見的。當為0.01的時候,表示保留了99%的方差數據,即大部分的數據特征被保留了。
當給定了個數k,協方差矩陣S中求解出來的各個特征值滿足公式:
也就是滿足:
這個和上面的公式是等價的。
重建的壓縮表示
重建的壓縮表示Reconstruction from Compressed Representation指的是將數據從低維還原到高維的過程。
將指定的點位置映射到一個三維曲面,反解前面的方程:
PCA特點
PCA本質上是將方差最大的方向作為主要特征,讓這些特征在不同正交方向上沒有相關性。
PCA是一種無參數技術,不需要進行任何參數的調節
Python實現PCA
利用numpy、pandas、matplotlib庫實現PCA算法
sklearn中實現PCA
Linear dimensionality reduction using Singular Value Decomposition of the data to project it to a lower dimensional space. The input data is centered but not scaled for each feature before applying the SVD.
用sklearn學習PCA:
https://www.cnblogs.com/pinard/p/6243025.html
實現模塊
在scikit-learn中,與PCA相關的類都在sklearn.decomposition包中。最常用的PCA類就是sklearn.decomposition.PCA。
白化:對降維后的數據的每個特征進行歸一化,讓方差都為1
class sklearn.decomposition.PCA(n_components=None, # 降維后的特征數目,直接指定一個整數copy=True,whiten=False, # 判斷是否進行白化,默認是不白化svd_solver='auto', # 指定奇異值分解SVD的方法tol=0.0,iterated_power='auto',random_state=None)demo
在這里講解一個例子,利用PCA算法來進行IRIS數據的分類
推薦閱讀
(點擊標題可跳轉閱讀)
干貨 | 公眾號歷史文章精選
我的深度學習入門路線
我的機器學習入門路線圖
重磅!
AI有道年度技術文章電子版PDF來啦!
掃描下方二維碼,添加?AI有道小助手微信,可申請入群,并獲得2020完整技術文章合集PDF(一定要備注:入群?+ 地點 + 學校/公司。例如:入群+上海+復旦。?
長按掃碼,申請入群
(添加人數較多,請耐心等待)
感謝你的分享,點贊,在看三連??
總結
以上是生活随笔為你收集整理的吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c/c++视频教程哪个比较好? 能学下去
- 下一篇: 25岁,一位女程序员的幸运几年