1. 程式人生 > >主成分分析PCA演算法:為什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是“投影”?

主成分分析PCA演算法:為什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是“投影”?

這是從網上看到的PCA演算法的步驟: 第一步,分別求每列的平均值,然後對於所有的樣例,都減去對應的均值。 第二步,求特徵協方差矩陣。 第三步,求協方差的特徵值…顯示全部

關注者

1,218

被瀏覽

78,113

關注問題寫回答

​新增評論

​分享

​邀請回答

22 個回答

預設排序​

史博

史博

資料科學家 | 自然語言處理Ph.D | 公眾號:AI2ML

收錄於編輯推薦 · 429 人贊同了該回答

千萬不要小看PCA, 很多人隱約知道求解最大特徵值,其實並不理解PCA是對什麼東西求解特徵值和特徵向量。 也不理解為什麼是求解特徵值和特徵向量。 要理解到Hinton對PCA的認知,需要跨過4個境界,而上面僅僅是第1個境界的問題。

為什麼要理解PCA?

其實深度學習在成為深度學習以前,主要是特徵表達學習, 而特徵表達學習追溯到始祖象階段,主要是無監督特徵表達PCA和有監督特徵表達LDA。 對了這裡LDA不是主題模型的LDA,是統計鼻祖Fisher搞的linear discriminant analysis(參考“Lasso簡史”)。 而Hinton在這方面的造詣驚人, 這也是為什麼他和學生一起能搞出牛牛的 t-Distributed Stochastic Neighbor Embedding (t-SNE) 。

至於t-SNE為啥牛, 這裡給兩個對比圖片, 然後我們再回到PCA,以後有機會再擴充套件!

t-SNE vs PCA: 可以看到線性特徵表達的侷限性

t-SNE 優於 已有非線性特徵表達 Isomap, LLE 和 Sammon mapping

依然還記得2004年左右Isomap橫空出世的驚奇, 再看t-SNE的誕生,真是膜拜! 也正是Hinton對PCA能理解到他的境界, 他才能發明t-SNE。

PCA理解第一層境界:最大方差投影

正如PCA的名字一樣, 你要找到主成分所在方向, 那麼這個主成分所在方向是如何來的呢?

其實是希望你找到一個垂直的新的座標系, 然後投影過去, 這裡有兩個問題。 第一問題: 找這個座標系的標準或者目標是什麼? 第二個問題, 為什麼要垂直的, 如果不是垂直的呢?

如果你能理解第一個問題, 那麼你就知道為什麼PCA主成分是特徵值和特徵向量了。 如果你能理解第二個問題, 那麼你就知道PCA和ICA到底有什麼區別了。

對於第一個問題: 其實是要求解方差最小或者最大。 按照這個目標, 你代入拉格朗日求最值, 你可以解出來, 主成分方向,剛好是S的特徵向量和特徵值! 是不是很神奇? 偉大的拉格朗日(參考 "一步一步走向錐規劃 - QP" "一挑三 FJ vs KKT ")

現在回答了,希望你理解了, PCA是對什麼東西求解特徵值和特徵向量。 也理解為什麼是求解的結果就是特徵值和特徵向量吧!

這僅僅是PCA的本意! 我們也經常看到PCA用在影象處理裡面, 希望用最早的主成分重建影象:

這是怎麼做到的呢?

PCA理解第二層境界:最小重建誤差

什麼是重建, 那麼就是找個新的基座標, 然後減少一維或者多維自由度。 然後重建整個資料。 好比你找到一個新的視角去看這個問題, 但是希望自由度小一維或者幾維。

那麼目標就是要最小重建誤差,同樣我們可以根據最小重建誤差推匯出類似的目標形式。

雖然在第二層境界裡面, 也可以直觀的看成忽略了最小特徵值對應的特徵向量所在的維度。 但是你能體會到和第一層境界的差別麼? 一個是找主成分, 一個是維度縮減。 所以在這個層次上,才是把PCA看成降維工具的最佳視角。

PCA理解第三層境界:高斯先驗誤差

在第二層的基礎上, 如果引入最小二乘法和帶高斯先驗的最大似然估計的等價性。(參考"一步一步走向錐規劃 - LS" “最小二乘法的4種求解” ) 那麼就到了理解的第三層境界了。

所以, 重最小重建誤差, 我們知道求解最小二乘法, 從最小二乘法, 我們可以得到高斯先驗誤差。

有了高斯先驗誤差的認識,我們對PCA的理解, 進入了概率分佈的層次了。 而正是基於這個概率分佈層次的理解, 才能走到Hinton的理解境界。

PCA理解第四層境界(Hinton境界):線性流形對齊

如果我們把高斯先驗的認識, 到到資料聯合分佈, 但是如果把資料概率值看成是空間。 那麼我們可以直接到達一個新的空間認知。

這就是“Deep Learning”書裡面寫的, 烙餅空間(Pancake), 而在烙餅空間裡面找一個線性流行,就是PCA要乾的事情。 我們看到目標函式形式和最小重建誤差完全一致。 但是認知完全不在一個層次了。

小結

這裡羅列理解PCA的4種境界,試圖通過解釋Hinton如何理解PCA的, 來強調PCA的重要程度。 尤其崇拜Hinton對簡單問題的高深認知。不僅僅是PCA,尤其是他對EM演算法的再認識, 誕生了VBEM演算法, 讓VB演算法完全從物理界過渡到了機器學習界(參考 “變の貝葉斯”)。 有機會可以看我對EM演算法的回答,理解EM演算法的8種境界。

​贊同 429​​11 條評論

​分享

​收藏​感謝收起​

話說

話說

47 人贊同了該回答

樓主這個問題提得很好,我嘗試著答一下,希望可以解答樓主的疑惑。

首先我們來複習一下PCA的基本思想吧。

The central idea of principal component analysis (PCA) is to reduce the dimensionality of a data set consisting of a large number of interrelated variables, while retaining as much as possible of the variation present in the data set. This is achieved by transforming to a new set of variables, the principal components (PCs), which are uncorrelated, and which are ordered so that the first few retain most of the variation present in all of the original variables. [Jolliffe, Pricipal Component Analysis, 2 nd edition]

有了這個基本思想作為指導,我應該可以更好地回答樓主的兩個問題了。 第一個問題:

用PCA演算法得到的這個“最合適”的低緯空間到底是什麼?

回答這個問題之前,我們先來做幾個定義:

  • \textbf{x} 是一個矩陣, 它有p 列,每一列都是一個隨機向量
  • \alpha_k 是一個含有p個常數的向量
  • \textbf{x}的協方差矩陣是已知的,我們稱之為\Sigma

根據PCA的基本思想,要定義,或者說找到這個所謂“最合適”的低緯空間,我們只要做以下幾步:

  1. 找到一個\textbf{x}的線性方程,使得\alpha_1'\textbf{x}的方差最大
  2. 找到另一個\textbf{x}的線性方程,\alpha_2' \textbf{x},使得\alpha_2' \textbf{x}\alpha_1'\textbf{x}不相關(uncorrelated),並且\alpha_2' \textbf{x}的方差最大
  3. 重複以上步驟,找到別的\textbf{x}的線性方程

我們接下來來做第1步:

  • \alpha_1'\textbf{x}的方差:Var(\alpha_k' \textbf{x}) = \alpha_k'\Sigma\alpha_k
  • 我們發現如果要最大化 \alpha_1'\textbf{x}的方程,我們只要選一個巨大無比的\alpha_k就好了,這顯然不是我們想要的
  • 於是我們家一個約束條件,我們讓\alpha_k的長度等於1,\alpha_k' \alpha_k = 1

我們再來做第1步:\frac{d}{d\alpha_k}(\alpha_k' \Sigma \alpha_k - \lambda (\alpha_k' |alpha_k - 1)) = 0 \\ \Sigma \alpha_k -  \lambda_k \alpha_k = 0 \\ \Sigma \alpha_k = \lambda_k \alpha_k\alpha_k' \Sigma \alpha_k = \alpha_k' \lambda_k \alpha_k = \lambda_k \alpha_k'\alpha_k = \lambda_k

  • 最大化Var(\alpha_k' \textbf{x}) = \alpha_k'\Sigma\alpha_k,約束條件是\alpha_k' \alpha_k = 1。我們可以用Lagrange方法,最大化\alpha_k' \Sigma \alpha_k - \lambda(\alpha_k' \alpha_k -1),w.r.t. \alpha_k
  • \alpha_k求導,並令其導數等於0。
  • 我們發現\alpha_k就是\Sigma的特徵向量,\lambda_k就是其對應的特徵值嘛。那麼問題來了,我們改選那個特徵向量呢?
  • 我們再盯著Var(\alpha_k' \textbf{x}) = \alpha_k'\Sigma\alpha_k看一會兒,發現這傢伙其實就是:
  • 所以我們選最大的那個特徵值以及其對應的特徵向量。
  • \alpha_1就是the first principal component.

然後我們來做第2步:cov(\alpha_1' \textbf{x}, \alpha_2' \textbf{x}) = \alpha_1' \Sigma \alpha_2 = \alpha_2' \Sigma \alpha_1 = \alpha_2' \lambda_1 \alpha_1=\lambda_1 \alpha_2' \alpha_1 = \lambda_1 \alpha_1' \alpha_2 = 0\frac{d}{d\alpha_2}(\alpha_2' \Sigma \alpha_2 - \lambda_2 (\alpha_2' \alpha_2 -1) - \phi \alpha_2'\alpha_1) = 0 \\ \Sigma\alpha_2 - \lambda_2 \alpha_2 - \phi \alpha_1 = 0\alpha_1' \Sigma \alpha_2 - \lambda_2 \alpha_1' \alpha_2 - \phi \alpha_1' \alpha_1 =0 \\ 0 - 0 - \phi 1 = 0 \\ \phi = 0

  • 最大化\alpha_2' \Sigma \alpha_2,同時\alpha_2' \textbf{x}\alpha_1'\textbf{x}不相關
  • 用Lagrange方法,最大化\alpha_2' \Sigma \alpha_2 - \lambda_2(\alpha_2' \alpha_2 -1) - \phi \alpha_2' \alpha_1
  • 上式左右同左乘\alpha_1'得:
  • 所以我們有: \Sigma \alpha_2 - \lambda_2 \alpha_2 = 0
  • 這又是一個特徵向量特徵值,有了上一部的經驗,我們知道要選特徵值第二大的那個。

以此類推,我們會得到一系列\alpha_k,他們組成的空間是一個跟\textbf{x}相同維度的空間。至於那個“最合適”的低緯空間就是吧最小特徵值對應的特徵向量扔掉,剩下來的那個空間。

第二個問題:

為什麼PCA這麼操作:去均值的原矩陣?

從我上面的推導來看,貌似並沒有涉及到去均值這一步。我去研究了一下,其實有些時候的確需要去均值,另外一些時候不需要。Pearson在1901年的一篇論文中間提到,如果不去均值的話,最優擬合超平面會通過原點,而不是\textbf{x}的幾何中心。但是也有一些例外情況中,超平面做的僅僅是把\textbf{x}劃分到相互垂直的子超平面上,這個時候去均值就不是必要的。具體情況請參見一下連結。http://www.ulb.ac.be/di/map/yleborgn/pub/NPL_PCA_07.pdf

不知道我的回答是否解決了樓主的疑惑,如果有講的不清楚或者不對的地方還請大家指出。

​贊同 47​​21 條評論

​分享

​收藏​感謝收起​

達聞西

達聞西

280 人贊同了該回答

看到那麼多帶公式的,完善的推導,我寫個帶圖的,公式少一些詳細一些,但是不嚴謹的直觀理解把,僅供參考。

一、先從旋轉和縮放角度,理解一下特徵向量和特徵值的幾何意義 從定義來理解特徵向量的話,就是經過一個矩陣變換後,空間沿著特徵向量的方向上相當於只發生了縮放,比如我們考慮下面的矩陣:\begin{bmatrix} 1.5 & 0.5\\  0.5 & 1.0 \end{bmatrix} 求這個變換的特徵向量和特徵值,分別是:U=\begin{bmatrix} 0.85 & -0.53\\  0.53 & 0.85 \end{bmatrix}(列向量) 和 1.81,0.69

用一個形象的例子來說明一下幾何意義,我們考慮下面笑臉圖案:

為方便演示笑臉圖案在0,0和1,1圍起來的單位正方形裡,同時也用兩個箭頭標出來了特徵向量的方向。經過\begin{bmatrix} 1.5 & 0.5\\  0.5 & 1.0 \end{bmatrix}的變換,也就是用這個圖案中的每個點的座標和這個矩陣做乘法,得到下面圖案:

可以看到就是沿著兩個正交的,特徵向量的方向進行了縮放。這就是特徵向量的一般的幾何理解,這個理解我們也可以分解一下,從旋轉和沿軸縮放的角度理解,分成三步:

第一步,把特徵向量所指的方向分別轉到橫軸和縱軸

這一步相當於用U的轉置,也就是U^{T}進行了變換

第二步,然後把特徵值作為縮放倍數,構造一個縮放矩陣\begin{bmatrix} 1.81 & 0\\  0 & 0.69 \end{bmatrix},矩陣分別沿著橫軸和縱軸進行縮放:

第三步,很自然地,接下來只要把這個圖案轉回去,也就是直接乘U就可以了

所以,從旋轉和縮放的角度,一個矩陣變換就是,旋轉-->沿座標軸縮放-->轉回來,的三步操作,表達如下:T=U \Sigma U ^{T} 多提一句,這裡給的是個(半)正定矩陣的例子,對於不鎮定的矩陣,也是能分解為,旋轉-->沿座標軸縮放-->旋轉,的三步的,只不過最後一步和第一步的兩個旋轉不是轉回去的關係了,表達如下:T=U \Sigma V^{T} 這個就是SVD分解,就不詳細說了。 另外,這個例子是二維的,高維類似,但是形象理解需要腦補。

二、協方差矩陣的特徵向量 PCA的意義其他答主都說得差不多了,一句話概括就是找到方差在該方向上投影最大的那些方向,比如下邊這個圖是用\begin{bmatrix} 1 & 0.5\\  0.5 & 1 \end{bmatrix}作為些協方差矩陣產生的高斯分佈樣本: :

大致用個橢圓圈出來分佈,相關性最強的(0.707,0.707)方向就是投影之後方差最大的方向。 接下來我們不嘗試嚴格證明,而是從旋轉和縮放的角度形象理解一下,我們可以考慮把這個分佈也旋轉一下,讓長軸在x軸上,短軸在y軸上,變成如下:

然後再沿著x軸和y軸,除以標準差,縮放成標準差為1的單位分佈

注意,在這個除以標準差的過程中,標準差最大的軸,就對應著原空間中,樣本投影后方差最大的方向。接下來,假設這個分佈中的樣本為X_U,則我們可以把一開始的樣本表示為:X=ULX_U 用這麼彆扭的表示方式主要是為了接下來推公式方便,所以接下來推個簡單的公式: 協方差矩陣,用S表示,則有S_{ij}=E\left[ (X_i-\mu _i)(X_j-\mu _j) \right] 因為這個分佈裡兩個維度的均值都是0,所以有S_{ij}=E\left[ X_iX_j \right] 所以S=\frac{1}{N} XX^T 其中N是樣本數,根據前面的X=ULX_U,進一步展開這個公式:S=\frac{1}{N} XX^T=\frac{1}{N}(ULX_U)(ULX_U)^T=UL(\frac{1}{N}X_U{X_U}^T)L^TU^T 因為X_U是個單位方差的且無相關性的樣本,所以\frac{1}{N}X_U{X_U}^T=I 另外L是個對角矩陣所以有S=ULL^TU^T=UL^2U^T=U\Sigma U^T

這個公式上一部分已經說過了。 所以\Sigma對角線上的元素對應的就是方差的大小,而縮放倍數就是標準差的大小,也就是特徵值的開根號,而U就是要沿著縮放的方向,也就是問題中投影的方向,正是特徵向量。

​贊同 280​​16 條評論

​分享

​收藏​感謝收起​知乎使用者

知乎使用者

30 人贊同了該回答

1、一個向量\bm{x}在一個單位向量\bm{u}的投影是\bm{x}^T\bm{u}。特徵向量是一組正交基,矩陣相乘就是把每個樣本分別向每個特徵向量上去投影。 2、PCA裡找到的投影方向是投影后方差最大的前k個方向(簡單理解就是區分度最好的方向)。 這種東西還是要找書,tutorial看提高姿勢水平,網文多不靠譜。

​贊同 30​​4 條評論

​分享

​收藏​感謝

曹榮禹

曹榮禹

persist......forever

30 人贊同了該回答

PCA的思想是將資料降維,降到哪些維上呢,就是使得資料分佈方差最大的那些維上。主成分的意思就是,那些使得資料分佈方差最大的那些維就是主成分。這個是PCA模型的思想,後面如何讓方差最大,如何選出這些方向下面分步介紹。

  1. 將資料中心移動到0並正則化這些資料,也就是將所有樣本點X減去均值併除以方差,獲得X‘是歸一化後的資料。
  2. 設降維後的空間是p維的,現在要將每一個樣本點投影到這個p維空間中,因此需要乘以投影矩陣P,設這個p維空間的正交基是U=[u1,u2,...,up]。則投影矩陣就是P=(U^{T}U )^{-1}U^{T},具體推導去補一下線性代數中投影方面的知識吧,然後由於U是正交矩陣,因此P=U^T,這樣,我們就把一個樣本點xi投影到這個p維空間中就行了,獲得的在p維空間中的座標為y=Px^{(i)}=U^Tx^{(i)},同樣這部分知識來自於線性代數中投影方面。
  3. 這樣我們獲得了每個樣本點在降維後的空間中的座標,那麼現在,我們需要計算方差了,很明顯,降維後的資料分佈的方差是\sum_i y_i^Ty_i,把步驟2中的y帶入進來,推導一下可以獲得資料分佈的方差可以表示為U^T\Sigma U,其中\Sigma是x的協方差矩陣。這個推導過程雖然簡單但是需要自己推一邊,我推過好幾次了,題主可以去試著推一推,因為其他演算法也會用到類似的推導。
  4. 現在整個模型就轉化成了最優化問題,max_U U^T\Sigma U (s.t. U^TU=I),這個最優化問題是瑞利熵問題的一種最簡單的形式,瑞利熵問題的解是協方差矩陣的前p大的特徵值對應的特徵根組成的矩陣U。現在題主應該知道為什麼要求這個矩陣的前k個特徵根了吧。瑞利熵問題的推導感覺挺煩的,本科生的我完全看不懂,但是記住結論會用就知道了,關鍵是能看出來某一個優化問題就是瑞利熵問題

至此,我們已經學習出了降維後的空間,這個空間的p個正交基組成的矩陣就是U,這個U就代表了這個空間,對於一個新的樣本點x,我們只需要將x投影到U代表的這個p維空間上就達到了降維的目的了。因此,最後的降維後的向量y=U^Tx

整個演算法的大致思路就是這樣。記住PCA的思想,就是找到這樣一個空間,使得原始資料投影到這個空間後的分佈的方差最大化!希望對有所幫助,如有錯誤,還請指出!

​贊同 30​​6 條評論

​分享

​收藏​感謝

靠靠靠譜

靠靠靠譜

Pessimist / Machine quitting engineer / data fakist

18 人贊同了該回答

題主的問題是: 1. 什麼是『最合適』的低維空間  2. 為什麼這麼操作就能得到『最合適』的低維空間

數學推導通通可跳過版: 一般來說原始資料維度太高消耗儲存空間,我們就想壓縮一下維度。於是我們想在低維空間得到一個原始資料的近似表達,代價是損失了一些精度。至於如何衡量精讀的損失,一般是通過『距離』來衡量,也就是L_2Norm。這應該是題主最想知道的部分,其餘的結果(包括使用特徵值分解)都是從這裡推匯出來的

先定義一下幾個Notation,不要著急推導還沒有開始: 高維原始資料 x 有維度 n 低維近似資料 y 設定維度 l <n

PCA,其實是由高低維度之間切換的函式定義的,而這個函式又是『人們』選擇的。

  • 高to低(降維):y=f(x)
  • 低to高(重建):x\approx \hat{x} =g(y)=g(f(x))

因為人們real懶,總想簡單一點,所以選擇了矩陣乘法來在高低維度自由轉換。不如先記一個重建矩陣D\in \Re^{n\times l},保證size合適。

  • 低to高(重建):\hat{x}=Dy
  • 因為real懶,我們簡化D的列都是兩兩正交的
  • 為了唯一解,還要D的列是單位長度的(D等比例地伸縮自如的解是沒有意義的)

我們現在仍然不知道D為何物,也不知道怎麼降維,但我們馬上就可以知道了:

# # # # # # # # # # # 推導 B E G I N # # # # # # # # # # # # 1. 求得最優降維公式

# 利用L2 norm定義最優的低維近似y^*=\arg\min_{y}\left\| x-\hat{x} \right\|_2 =\arg\min_{y}\left\| x-\hat{x} \right\|_2^2 # 展開L2 norm\left\| x-\hat{x} \right\|_2^2=(x-\hat{x})^T(x-\hat{x}) =x^Tx-2x^T\hat{x}+\hat{x}^T\hat{x} # 其中\hat{x}=Dyy^*=\arg\min_{y}-2x^TDy + y^TD^TDy # 因為我們設定D有正交的且單位長度的列y^*=\arg\min_{y}-2x^TDy + y^TI_lyy^*=\arg\min_{y}-2x^TDy + y^Ty # 求導取零得到最優解\nabla_y(-2x^TDy + y^Ty)=0-2D^Tx+2y=0y^*=D^Tx # 哇也就是說重構矩陣轉置就是可以實現降維真的好簡單! # 但是重構矩陣是什麼?

2. 求得最優D

# 我們之前說到用L2 norm衡量距離,這是對一個向量而言的。拓展到矩陣之間的距離就要使用Frobenius norm:\left\| X \right\| =\sqrt{\sum_{i,j}{X_{ij}} } # 因為我們定義的D就是最小化精度損失得來的:D^*=\arg\min_D \sqrt{\sum_{i,j}{ x_j^{(i)}-[DD^Tx]_j^{(i)}} } subject to D^TD=I_l # 為了看得清楚一點,我們先看l=0情況:d^*=\arg\min_d \sum_{i}{ \left\|x^{(i)}-dd^Tx^{(i)}\right\|} _2^2 subject to \left\| d \right\| _2=1 # 用矩陣表達去掉求和的sigmad^*=\arg\min_d \left\| X-Xdd^T\right\|^2_F subject to \left\| d \right\| _2=1 # 用跡 (trace) 去掉normd^*=\arg\min_d \ trace((X-Xdd^T)^T(X-Xdd^T)) subject to \left\| d \right\| _2=1 # 中間都是用trace相關的化簡,如果有需要再補充,因為公式real煩d^*=\arg\min_d \ -trace(X^TXdd^T) subject to \left\| d \right\| _2=1d^*=\arg\max_d \ trace(X^TXdd^T) # trace中的連乘可以轉圈圈d^*=\arg\max_d \ trace(d^TX^TXd) subject to \left\| d \right\| _2=1 # 現在階段的最優解需要用到特徵值分解,i.e. 當dX^TX最大的特徵值對應的特徵向量的時候。括號裡對應為\lambda_{max} ^2,最大的特徵值的平方 # 特徵值分解可以理解為:將矩陣分解為好幾個『方向』(特徵向量基eigenvector basis(特徵向量:你才基!)),每個方向的『權重』通過特徵值來衡量。特徵值大,

# 因為X^TX是實對稱的,特徵值分解可得Q\Lambda Q^T(我一直覺得好像QAQ) # 如果不是降維到一維呢? # 那就多挑幾個特徵值大的特徵向量嘛。 # 可以證明D就是l個較大的特徵值對應的特徵向量的組合

# # # # # # # # # # # 推導 E N D # # # # # # # # # # #

Plus, 這裡用到X^TX自然是有特徵值分解的,實際使用PCA的矩陣不一定是滿秩的方陣,所以才會用到奇異值分解 (SVD) 。如果需要再補充SVD的細節=w=

Plus^2, 挑選幾個特徵向量好呢?可以畫variance explained,近似為使用的特徵值的比例圖,挑選折點。

到此為止,問題應該已經有很清楚的答案了。 那就是:L2 norm 和 推匯出來的啦。

​贊同 18​​5 條評論

​分享

​收藏​感謝收起​

賦布斯

賦布斯

學不動...

19 人贊同了該回答

最近剛剛學了這些 來獻醜了  首先你要理解特徵向量的含義。 把矩陣理解成一個空間,那麼對於一個對稱正定的矩陣A,它的特徵向量就是對A所構成的空間的一個正交化。特徵值大小就代表 空間在 該特徵值對應的特徵向量上的“影響”能力,即越大在對應特徵向量這個基上,包含資訊‘最多’。 所謂合適的低維空間,舉例說明,以128*128的影象說明,我們選最大的10個特徵值對應的特徵向量重構影象(如下圖)

再將這10個影象疊加,就能得到和原圖相差無幾的圖片,實際上這10個特徵向量構成的空間包含了原圖95%的能量。

第二問參考機器學習中的數學(4)-線性判別分析(LDA), 主成分分析(PCA) 基本思想是 我們找一組基底,按照方差最大為原則,得到目標函式,用拉格朗日法,求該目標函式極值,這樣發現該基底為特徵向量時取得極值。 如

@姚鵬鵬

所說,參考部落格中還提到了按照能量損失最小為原則,也得到了一樣的結果。這裡有一點要注意

這裡的S是原矩陣每一行Xi 自相關得到的矩陣的和,即\sum_{i}^{}{}  x_{i}x_{i}^{T}。那麼按照之前的理論分析,我們應該求這個矩陣的特徵值而不是協方差矩陣,有關教科書上理論推導也都是求這個矩陣特徵值。 但是實際情況 都是求的協方差矩陣的特徵值。 而他們之間的特徵向量存在轉換關係,如下式

右邊的\Phi是協方差矩陣的特徵向量 \Psi是上面S矩陣的特徵向量,U是原矩陣。 具體證明可參照 邊肇祺的模式識別,其實就是svd分解。 這樣一個好處就是,還是以128*128圖片為例子,就不用去解128*128維的特徵值,大矩陣的特徵值計算很費時,轉而求小規模矩陣的特徵值,然後再轉化回去。 你所說的 去均值的原矩陣*(去均值的原矩陣的協方差矩陣的特徵向量作為列向量形成的矩陣) 實際上之後還要做一步歸一化的過程,也就是上面那個公式。

​贊同 19​​8 條評論

​分享

​收藏​感謝收起​知乎使用者

知乎使用者

10 人贊同了該回答

題主顯然已經懂了PCA怎樣實現,問題就是為什麼這樣實現。 在prml的第12章,有兩種解釋, 

說的是第一種解釋,最大投影后方差解釋,然後就是怎樣表示投影后方差的問題,顯然就是\mathbb{E} = \frac{1}{N}\sum_{n=1}^{N}\{\bm{u}_1^T\bm{x}_n-\bm{u}_1^T\bar{x}\}^2 = \bm{u}_1^T\bold{S}\bm{u}_1很顯然,這裡面的S就是你說的“去均值的原矩陣*(去均值的原矩陣的協方差矩陣的特徵向量作為列向量形成的矩陣)”。然後的問題就是怎樣最小化E的問題,因為\bm{u}是帶約束條件的,所以這邊的優化要加上一個朗格朗日的乘子,也就是\bm{u}_1^T\bm{u}=1,所以呢\mathbb{E}_1 = \bm{u}_1^T\bold{S}\bm{u}_1+\lambda_1(1-\bm{u}_1^T\bm{u_1}),通過對\bm{u}_1求導,這樣就能夠得到\bold{S}\bm{u}_1 = \lambda_1\bm{u}_1,這也就是為什麼求特徵向量的原因了

​贊同 10​​7 條評論

​分享

​收藏​感謝

謝潤

謝潤

28 人贊同了該回答

鋪墊:

很容易看出,圖中紅線向量座標為(3,2)。我們之所以有這個結論,是在一個前提條件下,那就是預設基為(1,0)和(0,1)。通常情況下,為了能夠簡潔的表示,我們將基選為單位長度並且正交的一組向量。

但是假如我們將基選為(1,1)和(-1,1),那麼紅色向量的座標變成什麼呢?(1,1)*(3,2)=5,(-1,1)*((3,2)=-1,即變成(5,-1)。

本質上講,PCA就是將高維的資料通過線性變換投影到低維空間上去,但這個投影可不是隨便投投,要遵循一個指導思想,那就是:找出最能夠代表原始資料的投影方法。首先的首先,我們得需要知道各維度間的相關性以及個維度上的方差啊!那有什麼資料結構能同時表現不同維度間的相關性以及各個維度上的方差呢?自然是非協方差矩陣莫屬。 協方差矩陣的主對角線上的元素是各個維度上的方差(即能量),其他元素是兩兩維度間的協方差(即相關性)。我們要的東西協方差矩陣都有了,先來 看“降噪”,讓保留下的不同維度間的相關性儘可能小,也就是說讓協方差矩陣中非對角線元素都基本為零。達到這個目的的方式自然不用說,線代中講的很明確——矩陣對角化。而對角化後得到的矩陣,其對角線上是協方差矩陣的特徵值,它還有兩個身份:首先,它還是各個維度上的新方差;其次,它是各個維度本身應該擁有的能量(能量的概念伴隨特徵值而來)。 對角化後的協方差矩陣,對角線上較小的新方差對應的就是那些該去掉的維度。 所以我們只取那些含有較大能量(特徵值)的維度,其餘的就舍掉即可。PCA的本質其實就是對角化協方差矩陣

前面的回答理論講得很多,不過看著也累。這裡就舉個例子,應該更容易理解。

這個例子是將二維轉化為一維。五個點(-1,-2)(-1,0)(0,0)(0,1)(2,1),確定一個基座標,將其投影過去,要求儲存最大的資訊量。首先,很直觀的知道,不能投影去x軸或者y軸。如果投影去x軸,有兩點在x軸方向投影一致,會造成資訊損失。y軸也同理。 那麼我們就用主成分分析方法來推導

那麼降維之後的影象便是這樣

之前(-1,-2)這點現在的座標變為了

那麼我們就成功地將二維向量降為一維,並且儘可能多地保留了資訊。 那麼回到題主問題“為什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是“投影”?”就我舉的這個例子來說,其實這個特徵向量就是我們在一維空間內選擇的基,乘以原向量,其結果剛好為新基的座標,即相當於其投影。當然推廣到多維肯定更加複雜,但其原理不變。題主可以結合這個例子好好理解一下。 答主本科學習過PCA,但一直沒弄清其本質,現在想來重新溫習一下,有不對之處請指出。本文內容大量參考PCA的數學原理(非常值得閱讀)!!!!想要更加深入瞭解請點選連結。

​贊同 28​​4 條評論

​分享

​收藏​感謝收起​

相關推薦

成分分析PCA演算法為什麼均值以後高維矩陣乘以矩陣特徵向量矩陣就是“投影”?

這是從網上看到的PCA演算法的步驟: 第一步,分別求每列的平均值,然後對於所有的樣例,都減去對應的均值。 第二步,求特徵協方差矩陣。 第三步,求協方差的特徵值…顯示全部 關注者 1,218 被瀏覽 78,113 關注問題寫回答 ​新增評論 ​分享 ​邀請回答

機器學習降維演算法-成分分析PCA演算法兩種角度的推導

若把高維空間的樣本點(可以想象是一個3維的)對映到一個超平面,怎樣的超平面可以認為是“好的”,可以想到這個超平面大概有這樣的性質: 最近重構行:樣本點到超平面的距離都足夠近;(樣本點變化儘可能小,丟失的資訊儘可能少) 最大可分性:樣本點在這個超平面上的投影儘可能分開.(樣

機器學習之路python 特征降維 成分分析 PCA

repo nts total python learning bsp ota spa 像素 python3 學習api使用 主成分分析方法實現降低維度 使用了網絡上的數據集,我已經下載到了本地,可以去我的git上參考 git:https://github.com/lin

【機器學習演算法實現】成分分析 PCA ——基於python+numpy

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

一步步教你輕鬆學成分分析PCA降維演算法

(白寧超 2018年10月22日10:14:18) 摘要:主成分分析(英語:Principal components analysis,PCA)是一種分析、簡化資料集的技術。主成分分析經常用於減少資料集的維數,同時保持資料集中的對方差貢獻最大的特徵。常常應用在文字處理、人臉識別、圖片識別、自然語言處

深度學習入門教程UFLDL學習實驗筆記三成分分析PCA與白化whitening

主成分分析與白化是在做深度學習訓練時最常見的兩種預處理的方法,主成分分析是一種我們用的很多的降維的一種手段,通過PCA降維,我們能夠有效的降低資料的維度,加快運算速度。而白化就是為了使得每個特徵能有同樣的方差,降低相鄰畫素的相關性。 主成分分析PCA 第一步:首先我們需要獲取旋轉矩陣U,為了實現這一目的,我

機器學習(七)成分分析PCA降維_Python

六、PCA主成分分析(降維) 1、用處 資料壓縮(Data Compression),使程式執行更快 視覺化資料,例如3D-->2D等 …… 2、2D–>1D,nD–&

【機器學習】成分分析PCA(Principal components analysis)

大小 限制 總結 情況 pca 空間 會有 ges nal 1. 問題 真實的訓練數據總是存在各種各樣的問題:  1、 比如拿到一個汽車的樣本,裏面既有以“千米/每小時”度量的最大速度特征,也有“英裏/小時”的最大速度特征,

成分分析PCA & 奇異值分解SVD

一 特徵值和特徵向量 想了解PCA和SVD,首先要了解的一個概念就是特徵值和特徵向量。        A是矩陣,x是向量、是數。如果滿足公式,則說是矩陣A的一個特徵值,非零向量x為矩陣A的屬於特徵值的特徵向量。矩陣A的特徵值和特徵向量可以寫成以下格式,請注

吳恩達老師機器學習筆記成分分析PCA

接著學習主成分分析,這個演算法在之前計量地理學的作業裡寫過,不過前者稍微囉嗦了一點。 原始二維資料: 放程式碼: load('ex7data1.mat'); [m n]=size(X); X=(X-mean(X))./std(X); sigma=1/m*(X'*X); % 求取協

成分分析PCA學習一條龍

轉自:https://yoyoyohamapi.gitbooks.io/mit-ml/content/%E7%89%B9%E5%BE%81%E9%99%8D%E7%BB%B4/articles/PCA.html https://www.jianshu.com/p/162bb4ea1b7f 1.有什麼功能?

【機器學習筆記15】成分分析(PCA)

PCA演算法 去平均值,即每一位特徵減去各自的平均值 計算新矩陣的協方差矩陣 設$X=(X_1, X_2…X_N)^T $,在鳶尾花例子裡N=4,會生成一個4*4的協方差矩陣 稱矩陣 C=(cij)n×n=(c11c12⋯c1nc21c22⋯c2n⋯⋯⋯⋯

Python資料分析學習筆記(6)資料規約實戰--以成分分析PCA為例

一、相關理論: 1、資料規約:產生更小且保持資料完整性的新資料集。意義在於降低無效、錯誤資料;降低儲存成本;少量且具有代表性的資料大幅加快,主要分為以下兩類: ①屬性規約:屬性合併或刪除無關維,目標是尋找最小子集使子集概率分佈儘可能與原來相同。     常用方法: (

成分分析(PCA)

主成分分析(PCA) 我們希望將N維資料降低為K維資料,對資料簡化有如下一系列原因: 1 使得資料集更易使用使用 2 降低很多演算法的計算開銷 3 去除噪聲 4 使得結果易懂     在所有的降維技術中,PCA的應用目前最為廣泛,在PCA中,資料從原來的座標系轉換

成分分析PCA以及特徵值和特徵向量的意義

定義: 主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變數轉換為一組線性不相關的變數,轉換後的這組變數叫主成分。PCA的思想是將n維特徵對映到k維上(k<n),這k維是全新的正交特徵

人臉識別中用成分分析PCA來將資料降維--MATLAB程式碼

人臉識別的資料集,維度一般都比較高,在自己的電腦上跑這麼高維的資料集,很多個人計算機需要跑很長時間,因此一般都需要改變影象大小或者是降維。 常用的方式有以下幾種,最普通的是改變影象的大小,是用的MATLAB自帶的imresize函式來直接改變影象的大小,如何使用請自行查詢。其次就是降維,基本的降

成分分析(PCA)原理及推導

 什麼是PCA?   在資料探勘或者影象處理等領域經常會用到主成分分析,這樣做的好處是使要分析的資料的維度降低了,但是資料的主要資訊還能保留下來,並且,這些變換後的維兩兩不相關!至於為什麼?那就接著往下看。在本文中,將會很詳細的解答這些問題:PCA、SVD、特徵值、奇異值

(3)成分分析(PCA)——基於python+numpy

【機器學習演算法實現】主成分分析(PCA)——基於python+numpy 1、PCA演算法介紹 主成分分析(Principal Components Analysis),簡稱PCA,是一種資料降維技術,用於資料預處理。一般我們獲取的原始資料維度都很高,比如1000個特

成分分析---PCA

一.PCA(Principal Component Analysis) is what ? 主成分分析是一種特徵提取技術,以某種特定的方式組合進行變數輸入,進一步保留價值量較大的部分,丟棄不重要的變數! PCA上場的機會: 降低變數的數目,不需要識別可以完全移除的變數,變數之間相互獨立

成分分析以及應用企業綜合實力排序

這段時間一直在學習資料探勘的一些演算法,今天通過不斷查閱資料,學習整理了一下主成分分析這個資料降維演算法。並且結合一個例項進行matlab程式設計實現。 主成分基本原理 在資料探勘中,經常會遇到一個問題就是一個問題出現了n多個變數,而且變數之間還可能會存在