都知道PCA能夠作降維,那它爲何能夠降維,到底是怎麼降維的呢?html
1. 爲何咱們要降維?學習
咱們的樣本數據好好的,爲何要去作降維,第一個要想清楚這個問題。spa
總之不少緣由致使咱們要去作降維,可是有兩個主要的因素,就是去除數據裏的冗餘和噪聲。code
2. PCA是怎麼去作降維的,怎麼去除冗餘和噪聲的?htm
PCA有一個假設,數據中越是有區分度的維度,他的方差越大,例如咱們的信號自己。越是沒有區分度的維度,方差越小能量越小,例如噪聲;blog
另外,若是兩個維度相關性很高,那麼其中一個維度就是冗餘的,對於學習分類器沒有很大的幫助,例如一個大學生的成績裏面,他的線性代數的成績,和他的矩陣分析的成績這兩個相關性就很高,分類器只須要其中的一個來判斷這個學生是工科生仍是文科生。it
綜合以上兩點,咱們降維以後的數據必定要每一個維度的方差大,同時維度之間的相關性小。方法
如何描述方差和相關性,有一個東西能夠同時描述他們兩——協方差矩陣!im
協方差矩陣是一個方陣,i,j列表示樣本的第 i 維和第 j 維之間的相關性 ( i = j 時描述的是第 i 維的方差)。總結
所以,理想的協方差矩陣的對角線應該是很大的值,而非對角線的位置都接近於0,這樣才能保證方差大,相關性小呀!
若是當前樣本的協方差矩陣已是對角矩陣了,那咱們就不用作PCA降維了,由於他們的特性已經很好了!很不幸,咱們的數據一般都不是那麼好,協方差矩陣不是理想的樣子,極可能相關性很大。那麼很明確,咱們要作的就是使得降維以後的數據協方差矩陣是對角矩陣。
那麼就要作矩陣對角化唄,什麼方法能夠獲得對角矩陣,這個就是特徵值分解,
A = P * B * P(T) (1)
B就是對角化的矩陣,A是原協方差矩陣,而咱們知道B對角線上都是特徵值,P裏面都是對應的特徵向量。若是咱們降維以後的協方差矩陣張成B這個樣就行了!
說到這裏,協方差矩陣的公式還沒提呢。
C = S(T) * S / (m - 1); (2)
C是協方差矩陣, S是m * d的樣本數據矩陣,表明咱們有m個樣本,每一個樣本的維度是d。
那麼當前有
A = S(T) * S / (m - 1);(3)
咱們想要的是
B = S’(T) * S’ / (m - 1);(4)
S’就是咱們降維以後的樣本數據。 咱們把公式(1) A = P * B * P(T),變一個樣子就是 P(T) * A * P = B; 結合式子(3),因而乎
B = P(T) * A * P = P(T) * S(T) * S * P / (m - 1) = (SP)(T) * (SP) / (m - 1);再結合式子(4)
SP不就是咱們想要的降維以後的數據S'嗎?這裏,若是把P中的特徵向量去掉幾個特徵值低的,那麼不只選出了方差大的數據,還去除了冗餘。所以,PCA就達到了目的了。
3. 總結
因此降維的公式也出來了, S’ = S * P,P是特徵值大的維度對應的特徵向量。
這是今天看完PCA以後的一點小總結,關於如何作特徵值分解,今天也看了許久,感受要補充的矩陣只是仍是頗有一些的。
貼一下http://mathfaculty.fullerton.edu/mathews/n2003/QRMethodMod.html 提到的用QR method來作特徵值分解的僞代碼。
QR Algorithm. The pseudocode for the QR method is:
1. i = 0
2.
3. repeat
4. Factor
5.
6. i = i+1
7. until convergence
迭代的方式用QR分解來求特徵值。這都是題外話了!
總之,咱們須要理解PCA爲何能用協方差矩陣作特徵值分解來求解,爲何這樣作降維的結果就是好的結果,認真理解了才能更有效地使用它 。