PCA 算法幾何理解

PCA(Principal component analysis)

PCA 是一種基於多變量的降維技術,主要用於降維、可視化、去相關、分類、確定潛在因子、壓縮和去噪音等方面。是特徵工程中不可缺少的一部分,有利於我們構建更加適合模型的特徵。

PCA 旨在找到數據中的主成分,並利用這 些主成分表徵原始數據 ,從而達到降維的目的 。

PCA的主要思想是將n維特徵映射到k維上,這k維是全新的正交特徵也被稱爲主成分,是在原有n維特徵的基礎上重新構造出來的k維特徵。

PCA的工作就是從原始的空間中順序地找一組相互正交的座標軸,新的座標軸的選擇與數據本身是密切相關的。
第一個新座標軸選擇是原始數據中方差最大的方向,

第二個新座標軸選取是與第一個座標軸正交的平面中使得方差最大的,

第三個軸是與第1,2個軸正交的平面中方差最大的。

依次類推,可以得到n個這樣的座標軸。通過這種方式獲得的新的座標軸,我們發現,大部分方差都包含在前面k個座標軸中,後面的座標軸所含的方差幾乎爲0。於是,我們可以忽略餘下的座標軸,只保留前面k個含有絕大部分方差的座標軸。事實上,這相當於只保留包含絕大部分方差的維度特徵,而忽略包含方差幾乎爲0的特徵維度,實現對數據特徵的降維處理

現在假設有一組數據如下:
在這裏插入圖片描述

  行代表了樣例,列代表特徵,這裏有10個樣例,每個樣例兩個特徵。可以這樣認爲,有10篇文檔,x是10篇文檔中“learn”出現的TF-IDF,y是10篇文檔中“study”出現的TF-IDF。

第一步,分別求x和y的平均值,然後對於所有的樣例,都減去對應的均值。這裏x的均值是1.81,y的均值是1.91,那麼一個樣例減去均值後即爲(0.69,0.49),得到

在這裏插入圖片描述
第二步,求特徵協方差矩陣,如果數據是3維,那麼協方差矩陣是
在這裏插入圖片描述
這裏只有x和y,求解得
在這裏插入圖片描述
對角線上分別是x和y的方差,非對角線上是協方差。協方差是衡量兩個變量同時變化的變化程度。協方差大於0表示x和y若一個增,另一個也增;小於0表示一個增,一個減。如果x和y是統計獨立的,那麼二者之間的協方差就是0;但是協方差是0,並不能說明x和y是獨立的。協方差絕對值越大,兩者對彼此的影響越大,反之越小。協方差是沒有單位的量,因此,如果同樣的兩個變量所採用的量綱發生變化,它們的協方差也會產生樹枝上的變化。

第三步,求協方差的特徵值和特徵向量,得到

在這裏插入圖片描述
在這裏插入圖片描述
上面是兩個特徵值,下面是對應的特徵向量,特徵值0.0490833989對應特徵向量爲,這裏的特徵向量都歸一化爲單位向量。

第四步,將特徵值按照從大到小的順序排序,選擇其中最大的k個,然後將其對應的k個特徵向量分別作爲列向量組成特徵向量矩陣。

這裏特徵值只有兩個,我們選擇其中最大的那個,這裏是1.28402771,對應的特徵向量是(-0.677873399, -0.735178656)T。

第五步,將樣本點投影到選取的特徵向量上。假設樣例數爲m,特徵數爲n,減去均值後的樣本矩陣爲DataAdjust(m*n),協方差矩陣是n*n,選取的k個特徵向量組成的矩陣爲EigenVectors(n*k)。那麼投影后的數據FinalData爲

FinalData(101) = DataAdjust(102矩陣) x 特徵向量(-0.677873399, -0.735178656)T

得到的結果是

在這裏插入圖片描述
這樣,就將原始樣例的n維特徵變成了k維,這k維就是原始特徵在k維上的投影。

有了這個過程,我一直在疑問,幾何意義上的 PCA 是如何實現的呢?
接下來十一組數據,二維,Gene1 和 Gene2 是兩個座標軸張成的平面,Mouse1-6 是6 個樣本數據.生成的圖像如右下圖:
在這裏插入圖片描述

第一步,我們先計算出樣本點的中心,也就是他們 兩個座標的值得平均值.之後每個樣本點減去均值,也就是中心化,將樣本數據中心移到了原點.雖然移動了數據,中心化後,但是數據的相互關係沒有發生變化,最高的點還是最高的,最右邊的點還是最右邊的.這是一次整體平移.
在這裏插入圖片描述

在這裏插入圖片描述

第二步,我們從原點找一條直線,任意的,隨機的找,如下圖,下圖雖然畫了一條線,但實際上它只是我們尋找的直線的一條,
找到直線後,計算所有樣本點到這個直線的投影點,之後計算投影點到原點的距離,我們要找到,所有點到這條直線的距離的平方的和.這個和要是最大的,也就是對應了方差最大的那個方向.

在這裏插入圖片描述
這個數據樣本點到這條直線的距離(b)的平方的和最小,因爲數據點到原點的距離(a)是不變的.也可以說是這個數據點到直線的投影的點到原點的距離©的距離的平方和最大.

在這裏插入圖片描述在這裏插入圖片描述現在數據有六個點,那我們找到這六個點的距離平方的和小的那個直線後.他就是 PC1,
在這裏插入圖片描述

找到這條直線後,我們就知道了斜率,他是一個穿過原點的直線,知道了斜率
就知道,一單位 Gene1 對應Gene2 的值,下圖數字是 (4,1),他是原內容的數據,我這裏沒有修改,如果我們把圖上的 4 換成有 1,就和我的意思一樣了.這個座標值,就是我們的特徵向量.

在這裏插入圖片描述在這裏插入圖片描述
而d距離的平方的和叫做特徵值.

接下來我們找 PC2:
方法和上面類似,只是我們要通過原點沿着垂直於PC1 去找,能夠使數據點到這條直線的距離平方的和最小值.
由於我們的數據是 2 維,所以找到 PC2 也就到頭了.如果我們是 n 維,可以一直找到 PCn.算出他們的特徵值,特徵向量.

求出
將PC1 和 PC2 作爲新的座標軸,旋轉這兩條直線,使得PC1 水平,則 PC2垂直於 PC1.
樣本點在兩個新座標的位置,就是他們投影到這兩條直線的位置的座標.
在這裏插入圖片描述
我們可以看出 PC1 所承載的信息數量更大,而且我們也可以求出他的特徵值也大.推廣到 n 維,我們可以找到 n 的主成分.
然後我們根據他們所佔比例,來確定降的維度.

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