PCA原理解釋(二)

PCA在作數據處理,通常會有一個數據預處理,其中一個目標就是將取數據特徵向相關性。 html

爲何要去特徵的相關性? 函數

由於數據若是有相關性,在學習的時候是冗餘的,徒增學習成本;因此對於數據處理(也稱之爲白化,英文有的時候稱之爲sphering),白化的目的:1.實現特徵之間的相關性較低;2.全部的特徵具備相同的方差。 學習

怎麼去特徵相關性,就是讓他們的協方差爲0,協方差,顧名思義,就是兩組變量的協同性,若是兩個變量的變化趨勢是一致的,某個變量範圍內,取值一樣趨於增大、減小,這個時候,協方差就是正常,若是變化趨勢相反,協方差就是正直;那麼若是兩個變量(函數)的變化趨勢無關,協方差取值是0. url

若是:E(X)=m,E(Y)=v,協方差公式以下: spa

cov(X,Y) = E((X-m)(Y-v)) = E(X*Y) - mv .net

若是E(X)和E(Y)二者獨立,則協方差爲0,這是由於: 3d

E(X*Y) = E(X)E(Y) = mv htm

這裏在深刻講一下,什麼是指望?在學習機率的時候,前面幾章都是在講述分佈(正態分佈,0,1分佈,T分佈),分佈講述的數據的規律,指望講述的一個值,用一個數來表明你的這些數集,這個就是指望,也稱之爲均值,咱們看一下指望的公式: blog

 

你就會發現其實不管是離散的機率仍是連續的指望都是計算求全平均,這就印證上面說的:找一個數來表明你的這個分佈;在numpy的array裏面有一個mean函數,就是計算指望的。 get

講到指望,就要說一下中心化(centered),所謂中心化就是列之間的指望爲0。或者說PCA認爲各個點都是以原點爲中心來進行分散的。

 

SVD:奇異值分解,Singular Value Decomposition.

他的思路就是將一個矩陣(不管多複雜)用三個矩陣相乘得來:

其中M就是原始矩陣,U是M.dot(M.T)的特徵向量,V是M.T.dot(M)的向量,Sigma就是一個對角矩陣。裏面的元素就是奇異值。

關於矩陣乘法和特徵值

矩陣的乘法(dot)本質實際上是將一個矩陣中的向量從長度(伸縮)到方向(旋轉)進行轉變;若是一個M.dot(N),只是有伸縮可是沒有旋轉,那麼這個N就是M的特徵向量。

那麼迴歸本源,什麼是特徵值,特徵向量?

對於矩陣A,若是存在數m以及向量x,知足Ax=mx,則成m爲A的特徵值,x是矩陣A對於m特徵值的特徵向量。

PCA中的核函數

不少時候,降維是爲了減小數據量,提升運算速度;可是有的時候低維度的數據很差對數據進行劃分,這個時候須要將數據提升維度,不少時候,高緯度數據反而更好找到super plane來對數據進行劃分,那麼核函數就是作這件事情的,經過提升維度來進行數據劃分,將底維數據向高維數據作映射的函數,就是"核函數(kernel function)"。在sklearn裏面就有KernelPCA用於爲PCA指定核函數。

提到了PCA必定要提一下無偏估計。由於PCA的有一部分就是就協方差的。

方差嘛,原本應該是[X-E(X)]**2,可是主要,你如今出列都是矩陣,因此若是想要實現平方,是須要和他的轉置矩陣相乘來處理的。

 

 

參考:

關於SVD很硬的一篇博客

https://www.cnblogs.com/lzllovesyl/p/5243370.html

相關文章
相關標籤/搜索