PCA算法來簡化數據

1.降維技術

        在日常處理數據的時候,數據往往是好多維的,也就是一條數據往往有好多個特徵,導致數據處理和分析起來比較麻煩,但是這些特徵絕大部分都是非主要的,對數據的處理分析過程起到的作用特別少,但是卻大大增加了數據處理的複雜度,所以我們就需要對數據進行降維處理,將多維度的數據減低到適當的低維度,從而達到對數據進行簡化的目的。對數據進行簡化有如下好處:

  1. 使得數據集更易於使用;
  2. 降低很多算法的計算開銷;
  3. 去除噪聲;
  4. 使得結果更易懂。

        常用的降維技術有:主成分分析(Principal Component Analysis, PCA)、因子分析(Factor Analysis)、獨立成分分析(Independent Componenet Analysis,ICA)我們這篇文章主要介紹PCA。

注意:

        我個人是這樣理解降維的:所謂的降維,並不是說去掉一些特徵,保留一些主要的特徵值,然後達到簡化數據的目的,而是將數據矩陣按照一定的矩陣變換方式,變換到更低維度的數據形式。變換的方式就是保留原數據矩陣主要的變換方向,這些主要的變換方向決定了原始數據大部分的變化形式,如90%,而這些主要的變換方向可能只佔所有變換方向的10%,甚至更少。假設原來是100維,主要的變化方向是10維,那麼我們只取這10維的變化,將原來的數據進行降維,然後就將原來的數據降到了10維,數據就簡化了好多。

        理解上面的一段話,需要一定的線性代數矩陣的一些基礎知識,在下面的PAC算法中,我會通過對特徵值,以及特徵向量的簡單介紹來幫助理解,如果需要更深一步理解則需要自行了解相關的基礎知識,建議從特徵值和特徵向量瞭解起。文章後面我也會給出幾個鏈接,方便大家更深一步瞭解。

2.PCA

        本來降維就是一個特別抽象的概念,用畫圖來理解的話,雖然直觀,但是可能也會限制自己的一些想象,所以我不贊成用畫圖去理解降維的概念。我們先從特徵值和特徵向量說起。

                                                               

        式1是特徵值和特徵向量的定義式(這裏的特徵只單單是相對於A矩陣的特徵,和原始數據中的特徵沒有關係),其中|A|≠0,A是方陣,x是一個向量,也就是特徵向量,λ是一個常數,是該特徵向量對應的特徵值。所以式1中,Ax就可以理解成A沿x方向的變化等於向量x乘以一個常數,這裏的x相當於一個單位向量,也就是x變化的一個基,而λ也可以理解爲A在x上的一個變化量。

        我們也知道一個m×m的方陣,會有m個線性無關的特徵向量,對應有m個特徵值,我覺得也可以理解爲m個變化的向量基。所以對於方陣A我們可以求解其所有的特徵值以及對應的特徵向量,然後按照特徵值倒序排列,就可以看到排列到最前面的幾個λ,往往最前面的幾個λ和可以佔到多有λ和的90%以上,即前幾個λ決定了A的主要變化方向,所以我們就只考慮這些個變換方向上的變化即可。

 

        上面我們對數據進行了降維,只保留了主要的變化方向(維度),也就是說這些維度的變化對數據差異性比較大,反過來也就是說我們也更容易通過這些維度的數據對其進行分類。具體怎麼做呢?我們通過數據集的協方差矩陣再加上前面說的特徵值分析,我們就可以對數據進行降維,求得這些主成分的值。協方差的計算公式如下:

                                                          

        協方差是衡量特徵和特徵之間相關性的計算方式,如果有n個特徵,那麼就會得到一個n×n的一個方陣,這個方陣是一個對角矩陣。一旦得到了協方差矩陣的特徵向量,我們就可以保留最大的N(不是方陣的n,只是單純的最大個前N個數)個值。這些特徵向量也給出了N個最重要特徵的真實結構,我們可以通過將數據乘上這N個特徵向量而將它轉換到新的空間。

        注:協方差的特徵向量都是正交的,這一點很重要。即這些向量都不能用其他向量表示,從側面表示這些向量都表示不同的方向,就像我們熟悉的三維座標中,x,y,z軸,可以表示三維中的任一點,但是他們之間卻不能相互表示。

        下面給出PCA算法的基本步驟:

  1. 計算原始數據中每個維度的平均值
  2. 通過平均值計算協方差矩陣
  3. 計算協方差矩陣的特徵值和特徵向量
  4. 將特徵值從大到小排列
  5. 保留最上面的N個特徵值,及其對應的特徵向量
  6. 將原始數據轉換乘以上述N個特徵向量構建的新空間中。

3.總結

        上面的一些思考主要是我對PCA降維算法的一些理解,實際上結合具體的例子看更好,下面給出個帶有實例的博客,以供更加詳細的理解這個PCA原理。

        思考:對於數據降維之後,我們可以對降維之後的數據進行處理,分類什麼的,更加方便。我覺得具體測試以及分類的時候,也是要先將待測的數據降維,然後進行分類。個人理解,還沒看過一個完整的例子。

        看別人寫的,感覺還是別人寫的更詳細:

        PCA及相關實例:https://blog.csdn.net/u012421852/article/details/80458340

        特徵值及特徵向量:https://blog.csdn.net/qq_32742009/article/details/82217051

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章