機器學習數據降維方法:PCA主成分分析

2020-11-30 CDA數據分析師

PCA在機器學習中很常用,是一種無參數的數據降維方法。PCA步驟:

將原始數據按列組成n行m列矩陣X將X的每一行(代表一個屬性欄位)進行零均值化,即減去這一行的均值求出協方差矩陣求出協方差矩陣的特徵值及對應的特徵向量將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣PY=PX即為降維到k維後的數據1. PCA的推導

PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。

我們知道PCA是一種數據降維的方法,在降低維度的過程中,我們當然想要保留更多的特徵,PCA就是經過數學推導,保留最多特徵同時降維的方法。

在推導之前要先知道幾個基礎知識:

內積與投影兩個維數相同的向量的內積被定義為:

假設A和B是兩個n維向量,我們知道n維向量可以等價表示為n維空間中的一條從原點發射的有向線段,為了簡單起見我們假設A和B均為二維向量,則A=(x1,y1),B=(x2,y2)。則在二維平面上A和B可以用兩條發自原點的有向線段表示,見下圖:

現在我們從A點向B所在直線引一條垂線。我們知道垂線與B的交點叫做A在B上的投影,再設A與B的夾角是a,則投影的矢量長度為|A|cos(a),其中|A|是向量A的模,也就是A線段的標量長度。

到這裡還是看不出內積和這東西有什麼關係,不過如果我們將內積表示為另一種我們熟悉的形式:

現在事情似乎是有點眉目了:A與B的內積等於A到B的投影長度乘以B的模。再進一步,如果我們假設B的模為1,即讓|B|=1,那麼就變成了:

也就是說,設向量B的模為1,則A與B的內積值等於A向B所在直線投影的矢量長度!這就是的一種幾何解釋,也是我們得到的第一個重要結論。在後面的推導中,將反覆使用這個結論。

下面我們繼續在二維空間內討論向量。上文說過,一個二維向量可以對應二維笛卡爾直角坐標系中從原點出發的一個有向線段。例如下面這個向量:

在代數表示方面,我們經常用線段終點的點坐標表示向量,例如上面的向量可以表示為(3,2),這是我們再熟悉不過的向量表示。

我們列舉的例子中基是正交的(即內積為0,或直觀說相互垂直),但可以成為一組基的唯一要求就是線性無關,非正交的基也是可以的。不過因為正交基有較好的性質,所以一般使用的基都是正交的。

3. 基變換的矩陣表示

一般的,如果我們有M個N維向量,想將其變換為由R個N維向量表示的新空間中,那麼首先將R個基按行組成矩陣A,然後將向量按列組成矩陣B,那麼兩矩陣的乘積AB就是變換結果,其中AB的第m列為A中第m列變換後的結果。(新基按行,向量按列)

特別要注意的是,這裡R可以小於N,而R決定了變換後數據的維數。也就是說,我們可以將一N維數據變換到更低維度的空間中去,變換後的維度取決於基的數量。因此這種矩陣相乘的表示也可以表示降維變換。

最後,上述分析同時給矩陣相乘找到了一種物理解釋:兩個矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量為基所表示的空間中去。更抽象的說,一個矩陣可以表示一種線性變換。很多同學在學線性代數時對矩陣相乘的方法感到奇怪,但是如果明白了矩陣相乘的物理意義,其合理性就一目了然了。

4. 協方差矩陣與優化目標

我們從上面的矩陣乘法變換可以看出,當新基的維數小於原來的維數時可以做到數據的降維,但是究竟如何選擇新基就是我們現在面臨的問題,我們想要選擇一個維數更小的新基,同時新基保留有更多的信息。我們知道矩陣向新基投影的形式,也就是PCA是將一組N維的特徵投影到K維(K<N)同時保留更多的特徵。

那麼怎麼衡量更多的特徵,也就是投影后儘量少的重疊,投影值儘可能分散。

協方差

從二維到一維的降維,只需要找到一個一維基使得方差最大,但是三維降到二維呢?我們需要找到兩個基讓這個三維數據投影到兩個基上,如果我們找方差最大的兩個基,會發現他們完全一樣或者線性相關,這和一個基沒什麼區別,不能表達更多的信息,所以我們需要添加限制條件,我們希望這兩個基彼此線性無關,擴展到K個基也是一樣。

當協方差為0時,表示兩個欄位完全獨立。為了讓協方差為0,我們選擇第二個基時只能在與第一個基正交的方向上選擇。因此最終選擇的兩個方向一定是正交的。

至此,我們得到了降維問題的優化目標:將一組N維向量降為K維(K大於0,小於N),其目標是選擇K個單位(模為1)正交基,使得原始數據變換到這組基上後,各欄位兩兩間協方差為0,而欄位的方差則儘可能大(在正交的約束下,取最大的K個方差)。

關於PCA的貢獻率與K的選擇

在我的文章特徵值和特徵向量中說過,特徵值反映了矩陣對於特徵向量的拉伸程度,只有拉伸而沒有旋轉,也就是在特徵向量方向上的作用程度,所以在PCA中我們選取前K個特徵向量組成新基進行投影,就是因為原特徵在前K個特徵向量有最大的作用程度。

投影過後可以保留更多的信息,作用程度是用特徵值表示的,所以我們可以使用下面的式子表示貢獻率,貢獻率是表示投影后信息的保留程度的變量,也就是特徵值的總和比上前K個特徵值,一般來說貢獻率要大於85%。

相關焦點

  • 用 PCA 方法進行數據降維
    在進行數據分析時,我們往往會遇到多維數據,多維數據在處理時由於維度較大計算起來非常麻煩,這時我們需要對數據進行降維。而在所有降維方法中,PCA是我們最常用的方法之一,其在使用時可以消除指標間的相互影響,同時也不用考慮數據的分布,而且降維效果非常明顯,所以PCA可以在絕大多數情況下使用。而本文就是用python來解釋一下如何用PCA方法進行降維。
  • 用StackOverflow訪問數據實現主成分分析(PCA)
    大數據文摘出品編譯:汪小七、張馨月、雲舟主成分分析(PCA:Principal Component Analysis)非常有助於我們理解高維數據,我利用Stack Overflow的每日訪問數據對主成分分析進行了實踐和探索,你可以在rstudio :: conf 2018上找到其中一篇演講的錄音。
  • R語言實現主成分分析
    主成分分析(PCA)是一種常見的排序方法
  • 主成分分析PCA預測未知分類信息
    本文是用主成分分析的方法去預測未知樣本的信息。
  • 數據分析領域中最為人稱道的七種降維方法
    該數據集維度達到 15000 維。 大多數數據挖掘算法都直接對數據逐列處理,在數據數目一大時,導致算法越來越慢。該項目的最重要的就是在減少數據列數的同時保證丟失的數據信息儘可能少。以該項目為例,我們開始來探討在當前數據分析領域中最為數據分析人員稱道和接受的數據降維方法。
  • R語言做主成分分析實例
    在做多樣本的RNA-Seq數據中經常會用到主成分分析(PCA)來分析,那麼什麼是PCA呢,這個可以百度一下,大概意思如下:主成分分析法是數據挖掘中常用的一種降維算法
  • 數據分析之主成分分析,spss主成分分析實例
    一、主成分分析概要主成分分析,在進行有多個指標的綜合評定時,客觀全面的綜合評價結果非常重要,然而往往多個指標之間通常存在信息不統一或者重複等眾多因素,各指標的權重往往很難確認。主成分分析方法能夠解決以上問題,主成分分析法是一種降維的統計方法,是考察多個變量間相關性一種多元統計方法。二、spss主成分分析操作流程導入數據。
  • t-SNE:可視化效果最好的降維算法
    降維 1D,2D和3D數據可以可視化。但是在數據科學領域並不總是能夠處理一個小於或等於3維的數據集,我們肯定會遇到使用高維數據的情況。
  • 自編碼器數據降維實踐
    數據降維是一件困難的事情,而難點通常集中在主成分分析上。此前,我介紹過一種基於自動編碼器的降維方法 。然而,在那一段時間裡,我專注於如何使用自動編碼作為預測器,而現在我想把它們看作是一種降維技術。這篇文章的目的是解釋一下自動編碼器是如何工作的。它是從將原始數據壓縮成一個忽略噪聲的短代碼開始的。然後,該算法對該代碼進行解壓縮,以生成儘可能接近原始輸入的圖像。
  • 聚類樹和PCA等排序圖的組合繪製
    聚類分析和排序分析(降維分析)都是用於探索多元數據結構的常用方法,二者的結果也可以結合在一起通過一張圖呈現,本篇展示一些常見的示例。https://pan.baidu.com/s/1dQxyRcBuGDoec9ZKm77Y6w示例數據包含15個樣本(對象),20個變量,下文對它執行聚類和降維,並作圖展示。
  • 原理+代碼|Python基於主成分分析的客戶信貸評級實戰
    如果我們分別對每個指標進行分析,往往得到的結論是孤立的,並不能完全利用數據蘊含的信息。但是盲目的減少我們分析的指標,又會損失很多有用的信息。所以我們需要找到一種合適的方法,一方面可以減少分析指標,另一方面儘量減少原指標信息的損失。
  • 機器學習之sklearn中的降維算法
    PCA與SVDsklearn中降維算法都被包括在模塊decomposition中,這個模塊本質是一個矩陣分解模塊。在過去的十年中,如果要討論算法進步的先鋒,矩陣分解可以說是獨樹一幟。矩陣分解可以用在降維,深度學習,聚類分析,數據預處理,低緯度特徵學習,推薦系統,大數據分析等領域。
  • 使用PCA可視化數據
    它通過從多個特徵構造所謂的主成分(PC)來實現這一點。PC的構造方式使得PC1方向在最大變化上儘可能地解釋了你的特徵。然後PC2在最大變化上儘可能地解釋剩餘特徵,等等……PC1和PC2通常可以解釋總體特徵變化中的很大一部分。另一種思考方法是,前兩個PC可以很好地概括大部分特徵。這很重要,因為正如我們將看到的,它允許我們在二維平面上可視化數據的分類能力。
  • 基於TensorFlow理解三大降維技術:PCA、t-SNE 和自編碼器
    動機當處理真實問題和真實數據時,我們往往遇到維度高達數百萬的高維數據。儘管在其原來的高維結構中,數據能夠得到最好的表達,但有時候我們可能需要給數據降維。你有必要將數據的維度壓縮到儘可能最低,你的限制是要保留大約 80% 的數據,你會怎麼做?3. 你有一個資料庫,其中的數據是耗費了大量時間收集的,而且還時不時有新的(相似類型的)數據加入。你需要降低你已有數據的維度,並且還要給到來的新數據降維,你會選擇什麼方法?這篇文章的目的是希望能幫助你更好地了解降維,以便你能輕鬆應對類似這樣的問題。
  • 機器學習:特徵選擇和降維實例
    簡介通常,我們將特徵選擇和降維組合在一起使用。雖然這兩種方法都用於減少數據集中的特徵數量,但存在很大不同。特徵選擇只是選擇和排除給定的特徵而不改變它們。降維是將特徵轉換為較低維度。加載數據導入必須的Python庫設置默認繪圖參數加載機器學習數據集Train Shape: (250, 302)Test Shape: (19750, 301)使用seaborns countplot來顯示機器學習數據集中問題的分布基線模型我們將使用邏輯回歸作為基線模型。
  • 通俗易懂的講解奇異值分解(SVD)和主成分分析(PCA)
    現在,我們有了一件非常令人興奮的事,我們得到了一種可以分解任何矩陣的方法,而不僅僅局限於對方陣進行特徵分解。主成分分析法(PCA)——特徵提取PCA在機器學習中是一種常用的無監督學習算法,它通過構建一種被稱為主成分的變量,並將所用到的所有向量映射到由主成分變量構建的空間上去,從而能夠減少數據的維度。
  • SPSS方法|主成分分析:降低指標維度,使複雜問題簡單化
    主成分分析主成分分析是將多個指標化為少數幾個不相關的綜合指標,並對綜合指標按照一定的規則進行分類的一種多元統計分析方法。這種分析方法能夠降低指標維數,濃縮指標信息,將複雜的問題簡化,從而使問題分析更加直觀有效。目前,這種方法已經在經濟等領域中得到廣泛的應用,選好數據就可以利用SPSS進行主成分分析。本次數據選取陝甘寧蒙晉生態環境指標做生態環境評價分析。
  • spss主成分怎麼進行分析?spss主成分分析法步驟
    spss 這款軟體功能非常多哦,還可以分析主成分哦,但是很多朋友不知道spss主成分怎麼進行分析?小編下面準備了spss主成分分析法詳細步驟,大家安裝 詳細步驟一步步操作就知道spss主成分怎麼進行分析?
  • 單細胞數據分析神器——Seurat
    測序手段也從早期的10X Genomics、 Drop-seq等,發展為現在的多種多樣個性化的方法。研究內容更不僅僅局限於解析細胞群體的成分,而是向研究細胞功能和生物學特性發展。今天小編向大家簡單一個實用並且易上手的單細胞數據分析軟體——Seurat,大家躺在床上為國家做貢獻的同時也能get新技能。
  • 深入剖析核主成分分析Kernel PCA體現的辯證法思想
    直觀地說,核方法只是為你提供了一種更好的方法來比較你的數據:沒有真正明確地向你的數據添加維度,僅僅用一種比較它們的更合適的方法而已。使用內核的全部魔力是不必在RKHS中明確使用點積,它由核方法保留在引擎蓋下!否則,您甚至無法計算兩個向量的徑向基核函數,因為具有無限維度。這個技巧讓RKHS高效工作。可見,降維和升維各有長處並有其目的性,這似乎是很矛盾的!