標籤:

主成分分析(PCA)的詳細解釋

原作者:Zakaria Jaadi

翻譯:鍾勝傑

這篇文章的目的是提供主成分分析的完整同時比較簡化的解釋,特別是逐步回答它是如何工作的,這樣每個人都可以理解它並利用它,而不必具有很高的數學水平。

PCA實際上是一種使用很廣的網路方法,但只有少數人直截了當地解釋它是如何工作的,而不會過多地投入技術性的解釋。這就是為什麼我決定自己發布帖子,用簡化的方式呈現它的原因。

在開始解釋之前,文章說明了PCA在每個步驟中做了什麼,並簡化了它背後的數學概念,如標準化,協方差,特徵向量和特徵值,而沒有關注如何計算它們。

所以什麼是主成分分析呢?

主成分分析(PCA)是一種降維方法,通常用於通過將數量很多的變數轉換為仍包含集合中大部分信息的較少變數來降低數據集的維數。

減少數據集的變數數量自然是以犧牲精度為代價的,但降維是為了簡單而略微準確。因為較小的數據集更易於探索和可視化,並且使機器學習演算法更容易和更快地分析數據,而無需處理無關的變數。

總而言之,PCA的概念很簡單:減少數據集的維數,同時保留儘可能多的信息。

逐步解釋PCA

第一步:標準化

此步驟的目的是標準化輸入數據集,使數據成比例縮小。

更確切地說,在使用PCA之前必須標準化數據的原因是PCA方法對初始變數的方差非常敏感。也就是說,如果初始變數的範圍之間存在較大差異,那麼範圍較大的變數占的比重較大,和較小的變數相比(例如,範圍介於0和100之間的變數較0到1之間的變數會佔較大比重),這將導致主成分的偏差。通過將數據轉換為同樣的比例可以防止這個問題。

在數學上,可以通過減去平均值併除以每個變數的標準偏差來完成。

標準化

標準化完成後,所有變數將轉換為相同的範圍:[0,1]。

第二步:計算協方差矩陣

此步驟的目的是了解輸入數據集的變數相對於彼此平均值變化,換句話說,查看它們是否存在關係。因為有時候,變數由於高度相關,這樣就會包含冗餘信息。因此,為了識別變數的相關性,我們計算協方差矩陣。

協方差矩陣是p×p對稱矩陣(其中p是維數),變數與變數之間的協方差作為矩陣元素。例如,對於具有3個變數x,y和z的三維數據集,協方差矩陣是以下的3×3矩陣:

3維的協方差矩陣

由於變數自身的協方差是方差( Cov(a,a)=Var(a) ?),因此在主對角線(左上角到右下角)中,我們實際上具有每個起始變數的方差。並且由於協方差是可交換的( Cov(a,b)=Cov(b,a) ),協方差矩陣相對於主對角線是對稱的,這意味著上三角形部分和下三角形部分是相等的。

協方差矩陣變數有什麼用呢?

實際上協方差的符號起作用:

  • 如果是正的話:兩個變數一起增加或減少(相關),
  • 如果是負的話:當一個變數增加時,另一個變數減少(不相關)

現在,我們知道協方差矩陣不僅僅是一個矩陣,而是展示變數相關性的矩陣,讓我們進入下一步。

第三步:計算協方差矩陣的特徵向量和特徵值以識別主成分

特徵向量和特徵值是我們需要從協方差矩陣計算的線性代數概念,以便確定數據的主要成分。 在開始解釋這些概念之前,讓我們首先理解主成分的含義。

主成分是新變數,是初始變數的線性組合。這些組合以新變數(即主成分)不相關的方式完成,並且初始變數內的大部分信息被壓縮或壓縮到第一組分中。比如,10維數據提供10個主要組件,但PCA嘗試在第一個組件中獲取最大可能信息,然後在第二個組件中獲得最大剩餘信息,依此類推。

如果你有一個10維數據,你最終會得到類似下面的圖中顯示的內容,其中第一個主要組件包含原始數據集的大部分信息,而最後一個只攜帶少數幾個。因此,以這種方式組織信息,可以在不丟失太多信息的情況下減少維度,並通過丟棄攜帶較少信息的組件來實現這一點。

每個主成分方差所佔的比重

主成分不是很好解釋,並且對我們沒有任何實際意義,因為它們被構造為初始成分的線性組合。 從幾何學上講,主成分表示解釋最大方差量的數據的方向,也就是說,捕獲數據的大部分信息的線。這裡方差和信息之間的關係是,線所承載的方差越大,數據點沿著它的分散越大,沿著線的色散越大,它所具有的信息就越多。簡單地說,只需將主成分視為新軸,然後從這個軸查看和評估數據。

PCA怎麼構建主成分?

由於數據中存在與變數一樣多的主成分,因此主成分以第一主成分佔數據集中最大可能方差的方式構造。例如,假設我們的數據集的散點圖如下所示,我們可以猜出第一個主成分嗎?它大致是與紫色標記匹配的線,因為它穿過原點,並且它是點(紅點)的投影最分散的線。或者從數學上講,它是最大化方差的線(從投影點(紅點)到原點的平方距離的平均值)。

第二主成分以相同的方式計算,條件是它與第一主成分不相關(即垂直),並且它佔下一個最高方差。這一直持續到計算出總共p個主成分,等於原始變數數。 現在我們理解了主成分的含義,讓我們回到特徵向量和特徵值。你首先需要知道的是它們總是成對出現,因此每個特徵向量都有一個特徵值。它們的數量等於數據的維數。例如,對於三維數據集,存在3個變數,因此存在3個具有3個對應特徵值的特徵向量。 協方差矩陣的特徵向量實際上是方差最多的軸的方向(大多數信息),我們稱之為主成分。並且特徵值只是附加到特徵向量的係數,它們給出了每個主成分中攜帶的方差量。 通過按特徵值的順序對特徵向量進行排序,從最高到最低,按重要性順序得到主要成分。

例子:

假設我們的數據集是2維的,有2個變數,?,並且協方差矩陣的特徵向量和特徵值如下:

如果我們按降序對特徵值進行排序,則得到 lambda_1 >lambda_2 ?,這意味著對應於第一主成分(PC1)的特徵向量是? v_1 ,而對應於第二成分(PC2)的特徵向量是 v_2 ?。

在具有主成分之後,為了計算每個成分所佔的方差(信息)的百分比,我們將每個成分的特徵值除以特徵值的總和。如果我們在上面的例子中應用它,我們發現PC1和PC2分別攜帶96%和4%的數據方差。

第四步:特徵向量

正如我們在上一步中所看到的,計算特徵向量並按其特徵值按降序排序,使我們能夠按重要性順序找到主成分。在這個步驟中,我們要做的是,選擇是保留所有這些組件還是丟棄那些重要性較低的組件(低特徵值),並與其餘組件形成一個我們稱之為特徵向量的向量矩陣。 因此,特徵向量只是一個矩陣,其中包含我們決定保留的組件的特徵向量作為列。這使其成為降維的第一步,因為如果我們選擇僅保留? n 個特徵向量中的? p 個,則最終數據集將只有 p 維。

例子:

繼續前一步驟的示例,我們可以形成具有特徵向量?和?的特徵向量:

或者丟棄特徵向量?,這是較不重要的特徵向量?,這就剩下?形成的特徵向量:

丟棄特徵向量v2將使維數減少1,並且因此將導致最終數據集中的信息丟失。但鑒於v2僅攜帶4%的信息,因此損失並不重要,我們仍將擁有v1所載信息的96%。

因此,正如我們在示例中看到的那樣,您可以選擇是保留所有組件還是丟棄不重要的組件,具體取決於您要查找的內容。

最後一步:沿主要組件軸重新繪製數據

在前面的步驟中,除了標準化之外,您不對數據進行任何更改,只需選擇主要組件並形成特徵向量,但輸入數據集始終保持原始軸的方式(即初始變數)。

在這個最後一步中,目標是使用由協方差矩陣的特徵向量形成的特徵向量,將數據從原始軸重新定向到由主成分表示的數據(因此稱為主成分分析)。這可以通過將原始數據集的轉置乘以特徵向量的轉置來完成。

參考:

  • [Steven M. Holland, Univ. of Georgia]: Principal Components Analysis
  • [skymind.ai]: Eigenvectors, Eigenvalues, PCA, Covariance and Entropy
  • [Lindsay I. Smith] : A tutorial on Principal Component Analysis

原文鏈接: A step by step explanation of Principal Component Analysis

推薦閱讀:

TAG:機器學習 |