數據處理|主成分分析法

  • 2019 年 10 月 10 日
  • 筆記

本文首發於微信公眾號:"演算法與編程之美"

主成分分析法,簡稱PCA,主要運用於數據的降維處理,提取更多有價值的資訊(基於方差),涉及知識主要是線性代數中的基變換、特徵值和特徵向量。

問題提出

1.為什麼要對數據進行降維處理?

2.怎麼對數據進行降維?

3.降維後數據的意義?

問題解決

1. 維度越低的數據越有利於電腦處理、分析。在實際應用中,多維資訊在一定程度上有重疊,而我們在做某些數據處理時都儘可能的希望數據之間的相關性盡量的少,這樣有利於從有限的數據中分析出更多有用的資訊,PCA演算法便可以做到這點。

2. 通過基變換將數據投影到低維度上,什麼是基呢?在形式上就很像維度比如三維(x.y,z)、二維(x,y),但是也還有其他要求:

首先:基是正交的(即內積為0,或者說相互垂直,也相當於線性無關)。

其次:要求線性無關。

如何得出適當的基?

a. 將數據中心化,這樣有利於數據的處理。如果表示在一個二維坐標軸上,就是將所有散點向坐標軸原點移動,因為數據的表示、處理都是基於向量,所有數據集中在某個方向的某個區域不利於數據的處理分析,這時就要給每個數據減去其所有數據的均值,這個操作稱為零均值化。

b.在對數據進行零均值化處理後,就需要考慮到,一個多維數據集合降維後會出現數據過於集中的情況,而我們在處理數據時是希望有限的樣本數據盡量能表達多的資訊,所以這種情況是我們不希望看得的。而方差就能簡單而且較好的處理數據降維後過於集中的問題。方差的大小可以表示數據的離散程度,所以在選擇基的時候我們會盡量去要求方差最大的。

方差:表示一個維度偏離其均值的程度。

c.在數據降維中,可能不是直接降為一維,這就涉及到多個方差的選擇,如果都選方差最大的,就會存在這些方差的方向過於集中的問題,比如最大的方差是在x軸方向,那麼第二大第三大的一般情況下都會緊挨最大的方差,但是我們在數學建模時又會要求提供的數據盡量是線性無關的,又或者我們盡量將其處理成線性無關的。就比如買菜,一組數據是元,一組數據是角,那麼100元和1000角是線性相關的,這樣其中一組數據的意義可能就不大。這時就要引入協方差,對其做正交處理,也就是內積等於0。

協方差:表示各個維度偏離其均值的程度。協方差的值如果為正值,則說明兩者是正相關的,結果為負值就說明負相關的,如果為0,也就是統計上說的「相互獨立」。

由於已經對數據進行零均值化處理,所以這裡a,b的均值都為0。公式就簡化為:

有沒有發現上面的公式其實就是內積的和,我只需要令其等於零,便能做到想要的正交。

d.結合a、b、c,我們首先要乾的就兩件事,求方差最大(表達更多的資訊),令協方差為零(正交處理)。

協方差矩陣就能很好的同時處理這兩個問題的問題。

很容易就可以看出,協方差矩陣的主對角線就是由方差組成的,而副對角線就是內積。所以我們要先對協方差矩陣做對角化處理,讓主對角線兩側的內積變為0.對角化矩陣可以直接通過特徵值得出,需要降到幾維,就選取幾個特徵值,因為特徵值即方差,所以要選取最大的幾個,然後通過特徵值得出基礎解系並對其單位化,就得到我們想要的基。

e.最後用基乘原始數據便能得到降維後的數據。

3. 假設一個多維數據包括年齡、姓名、身份證等資訊,將其降成一維後,這樣的數據還有意義嗎?對於人來說很大程度上這些數據的意義可能已經消失,但這並不會影響電腦對這些數據進行分析,因為哪怕在沒降維前這些數據對於電腦來說也是沒有意義的,所以消失的物理意義並不影響電腦處理。

END