本文的目的是為主成分分析(PCA)提供一個完整且簡單的解釋,特别是其運作方式,以增進大家對該分析法的理解并加以利用,而不必具有強大的數學背景。
PCA實際上是網上廣泛提及的一種方法,很多文章都有涉及。但是,隻有極少數文章能直接切入主題,并在不過多鑽研技術細節的前提下解釋PCA的工作原理以及“為什麼”。這就是這篇文章的目的:以更簡單的方式解釋主成分分析法。
在開始解釋之前,本文提供了PCA在每一步驟的運作原理的邏輯解釋,簡化了其背後的數學概念,如标準化,協方差,特征向量和特征值,而暫未關注如何運算的問題。
什麼是PCA?
PCA是一種常用于減少大數據集維數的降維方法,把大變量集轉換為仍包含大變量集中大部分信息的較小變量集。
減少數據集的變量數量,自然是以犧牲精度為代價的,降維的好處是以略低的精度換取簡便。因為較小的數據集更易于探索和可視化,并且使機器學習算法更容易和更快地分析數據,而不需處理無關變量。
總而言之,PCA的概念很簡單——減少數據集的變量數量,同時保留盡可能多的信息。
逐步解釋
第1步:标準化
這一步的目的是把輸入數據集變量的範圍标準化,以使它們中的每一個均可大緻成比例地分析。
更具體地說,在使用PCA之前必須标準化數據的原因是PCA對初始變量的方差非常敏感。也就是說,如果初始變量的範圍之間存在較大差異,那麼範圍較大的變量将占據範圍較小的變量(例如,範圍介于0和100之間的變量将占據0到1之間的變量),這将導緻主成分的偏差。因此,将數據轉換為可比較的比例可避免此問題。
在數學上,這一步可以通過減去平均值,再除以每個變量值的标準偏差來完成。
隻要标準化完成後,所有變量都将轉換為相同的範圍[0,1]。
第2步:協方差矩陣計算
這一步的目的是:了解輸入數據集的變量是如何相對于平均值變化的。或者換句話說,是為了查看它們之間是否存在任何關系。因為有時候,變量間高度相關是因為它們包含大量的信息。因此,為了識别這些相關性,我們進行協方差矩陣計算。
協方差矩陣是p×p對稱矩陣(其中p是維數),其所有可能的初始變量與相關聯的協方差作為條目。例如,對于具有3個變量x,y和z的三維數據集,協方差矩陣是以下的3×3矩陣:
由于變量與其自身的協方差是其方差(Cov(a,a)= Var(a)),因此在主對角線(左上角到右下角)中,實際上有每個起始變量的方差。并且由于協方差是可交換的(Cov(a,b)= Cov(b,a)),協方差矩陣的條目相對于主對角線是對稱的,這意味着上三角形部分和下三角形部分是相等的。
作為矩陣條目的協方差告訴我們變量之間的相關性是什麼呢?
協方差的重要标志如下:
· 如果為正,則兩個變量同時增加或減少(相關)
· 如果為負,則一個減少,另一個增加(不相關)
好了,現在我們知道協方差矩陣隻不過是一個表,彙總了所有可能配對的變量間相關性。讓我們繼續下一步。
第3步:計算協方差矩陣的特征向量和特征值,用以識别主成分
特征向量和特征值都是線性代數概念,需要從協方差矩陣計算得出,以便确定數據的主成分。開始解釋這些概念之前,讓我們首先理解主成分的含義。
主成分是由初始變量的線性組合或混合構成的新變量。該組合中新變量(如主成分)之間彼此不相關,且大部分初始變量都被壓縮進首個成分中。所以,10維數據會顯示10個主成分,但是PCA試圖在第一個成分中得到盡可能多的信息,然後在第二個成分中得到盡可能多的剩餘信息,以此類推。
例如,假設你有一個10維數據,你最終将得到的内容如下面的屏幕圖所示,其中第一個主成分包含原始數據集的大部分信息,而最後一個主成分隻包含其中的很少部分。因此,以這種方式組織信息,可以在不丢失太多信息的情況下減少維度,而這需要丢棄攜帶較少信息的成分。
要認識到一件重要的事情是,既然新變量被構造為初始變量的線性組合,它們将更加難以解釋,并且對我們沒有任何實際意義。
從幾何學上講,主成分代表了解釋最大方差量的數據方向,也就是說,它們是捕獲數據中大部分信息的線。在這裡,方差和信息間的關系是,線所承載的方差越大,數據點沿着它的分散也越大,沿着線的散點越多,它所攜帶的信息也越多。簡單地說,隻要把主成分看作是提供最佳角度來觀察和評估數據的新軸,這樣觀測結果之間的差異就會更明顯。
PCA如何構建主成分?
由于主成分的數量,如同數據中存在的變量一樣多,因此主成分根據第一主成分占數據集中最大可能方差的方式進行構造。例如,假設我們的數據集的散點圖如下所示,可以猜出第一個主成分嗎?是的,就是大緻與紫色标記匹配的線。因為它穿過原點,并且它是點(紅點)的投影最分散的線。或者從數學上來講,它是方差最大化的線(從投影點(紅點)到原點的平方距離的平均值)。
第二主成分以相同的方式計算,條件是它與第一主成分并不相關(即垂直),并且它占第二高方差。
直到計算出p個主成分數量,等于原始變量數。
現在我們理解了主成分的含義,讓我們回到特征向量和特征值。首先,你需要知道的是它們總是成對出現,因此每個特征向量都有一個特征值,它們的數量等于數據的維數。例如,對于三維數據集,存在3個變量,因此存在3個具有對應特征值的特征向量。
不用多說,上面解釋的所有“魔法”都是特征向量和特征值,因為協方差矩陣的特征向量實際上是方差最多的軸的方向(或最多的信息),我們稱之為主成分。并且,特征值隻是附加到特征向量上的系數,它們給出了每個主成分中攜帶的方差量。
通過特征值的順序對特征向量進行排序,從最高到最低,你就得到了按重要性排序的主成分。
舉例:
假設我們的數據集是2維的,有2個變量x,y,并且協方差矩陣的特征向量和特征值如下:
如果我們按降序對特征值進行排序,則得到λ1>λ2,這意味着與第一主成分(PC1)對應的特征向量是v1,而與第二成分(PC2)對應的特征向量是v2。
在有了主成分之後,為了計算每個成分所占的方差(信息)百分比,我們将每個成分的特征值除以特征值的總和。如果我們把這個計算法應用到上面的例子中,我們會發現,PC1和PC2分别攜帶了96%和4%的數據方差。
第4步:特征向量
正如我們在上一步中所看到的,計算特征向量并按其特征值依降序排列,使我們能夠按重要性順序找到主成分。在這個步驟中我們要做的,是選擇保留所有成分還是丢棄那些重要性較低的成分(低特征值),并與其他成分形成一個向量矩陣,我們稱之為特征向量。
因此,特征向量隻是一個矩陣,其中包含我們決定保留的成分的特征向量作為列。這是降維的第一步,因為如果我們選擇隻保留n個特征向量(分量)中的p個,則最終數據集将隻有p維。
舉例:
接着上一步的例子,我們可以用v1或v2向量來形成一個特征向量。
或者丢棄重要性較小的向量v2,僅用v1形成一個特征向量。
丢棄特征向量v2将使維數減少1,并且将導緻最終數據集中的信息丢失。 但鑒于v2僅攜帶4%的信息,因此損失并不重要,我們仍将擁有v1所攜帶的96%的信息。
因此,正如我們在例子中看到的那樣,你可以選擇是保留所有成分還是丢棄不重要的成分,具體取決于你要查找的内容。如果你不追求降維,隻是想利用不相關的新變量(主成分)描述你的數據,則不需要保留重要性較次的成分。
最後一步:沿主成分軸重新繪制數據
在前面的步驟中,除了标準化之外,你不需要更改任何數據,隻需選擇主成分,形成特征向量,但輸入數據集時要始終與原始軸統一(即初始變量)。
這一步,也是最後一步,目标是使用協方差矩陣的特征向量去形成新特征向量,将數據從原始軸重新定位到由主成分軸中(因此稱為主成分分析)。這可以通過将原始數據集的轉置乘以特征向量的轉置來完成。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!