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