1. 程式人生 > >PCA主成分分析過程及理論

PCA主成分分析過程及理論

轉載:http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html

在這一篇之前的內容是《Factor Analysis》,由於非常理論,打算學完整個課程後再寫。在寫這篇之前,我閱讀了PCA、SVD和LDA。這幾個模型相近,卻都有自己的特點。本篇打算先介紹PCA,至於他們之間的關係,只能是邊學邊體會了。PCA以前也叫做Principal factor analysis。

1. 問題

     真實的訓練資料總是存在各種各樣的問題:

1、 比如拿到一個汽車的樣本,裡面既有以“千米/每小時”度量的最大速度特徵,也有“英里/小時”的最大速度特徵,顯然這兩個特徵有一個多餘。

2、 拿到一個數學系的本科生期末考試成績單,裡面有三列,一列是對數學的興趣程度,一列是複習時間,還有一列是考試成績。我們知道要學好數學,需要有濃厚的興趣,所以第二項與第一項強相關,第三項和第二項也是強相關。那是不是可以合併第一項和第二項呢?

3、 拿到一個樣本,特徵非常多,而樣例特別少,這樣用迴歸去直接擬合非常困難,容易過度擬合。比如北京的房價:假設房子的特徵是(大小、位置、朝向、是否學區房、建造年代、是否二手、層數、所在層數),搞了這麼多特徵,結果只有不到十個房子的樣例。要擬合房子特徵->房價的這麼多特徵,就會造成過度擬合。

4、 這個與第二個有點類似,假設在IR中我們建立的文件-詞項矩陣中,有兩個詞項為“learn”和“study”,在傳統的向量空間模型中,認為兩者獨立。然而從語義的角度來講,兩者是相似的,而且兩者出現頻率也類似,是不是可以合成為一個特徵呢?

5、 在訊號傳輸過程中,由於通道不是理想的,通道另一端收到的訊號會有噪音擾動,那麼怎麼濾去這些噪音呢?

     回顧我們之前介紹的《模型選擇和規則化》,裡面談到的特徵選擇的問題。但在那篇中要剔除的特徵主要是和類標籤無關的特徵。比如“學生的名字”就和他的“成績”無關,使用的是互資訊的方法。

     而這裡的特徵很多是和類標籤有關的,但裡面存在噪聲或者冗餘。在這種情況下,需要一種特徵降維的方法來減少特徵數,減少噪音和冗餘,減少過度擬合的可能性。

     下面探討一種稱作主成分分析(PCA)的方法來解決部分上述問題。PCA的思想是將n維特徵對映到k維上(k<n),這k維是全新的正交特徵。這k維特徵稱為主元,是重新構造出來的k維特徵,而不是簡單地從n維特徵中去除其餘n-k維特徵。

2. PCA計算過程

     首先介紹PCA的計算過程:

     假設我們得到的2維資料如下:

     clip_image001[4]

     行代表了樣例,列代表特徵,這裡有10個樣例,每個樣例兩個特徵。可以這樣認為,有10篇文件,x是10篇文件中“learn”出現的TF-IDF,y是10篇文件中“study”出現的TF-IDF。也可以認為有10輛汽車,x是千米/小時的速度,y是英里/小時的速度,等等。

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

     clip_image002[4]

     第二步,求特徵協方差矩陣,如果資料是3維,那麼協方差矩陣是

     clip_image003[4]

     這裡只有x和y,求解得

     clip_image004[4]

     對角線上分別是x和y的方差,非對角線上是協方差。協方差大於0表示x和y若有一個增,另一個也增;小於0表示一個增,一個減;協方差為0時,兩者獨立。協方差絕對值越大,兩者對彼此的影響越大,反之越小。

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

     clip_image005[4]

     上面是兩個特徵值,下面是對應的特徵向量,特徵值0.0490833989對應特徵向量為clip_image007[4],這裡的特徵向量都歸一化為單位向量。

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

     這裡特徵值只有兩個,我們選擇其中最大的那個,這裡是1.28402771,對應的特徵向量是clip_image009[6]

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

     clip_image011[4]

     這裡是

     FinalData(10*1) = DataAdjust(10*2矩陣)×特徵向量clip_image009[7]

     得到結果是

     clip_image012[4]

     這樣,就將原始樣例的n維特徵變成了k維,這k維就是原始特徵在k維上的投影。

     上面的資料可以認為是learn和study特徵融合為一個新的特徵叫做LS特徵,該特徵基本上代表了這兩個特徵。

     上述過程有個圖描述:

     clip_image013[4]

     正號表示預處理後的樣本點,斜著的兩條線就分別是正交的特徵向量(由於協方差矩陣是對稱的,因此其特徵向量正交),最後一步的矩陣乘法就是將原始樣本點分別往特徵向量對應的軸上做投影。

     如果取的k=2,那麼結果是

     clip_image014[4]

     這就是經過PCA處理後的樣本資料,水平軸(上面舉例為LS特徵)基本上可以代表全部樣本點。整個過程看起來就像將座標系做了旋轉,當然二維可以圖形化表示,高維就不行了。上面的如果k=1,那麼只會留下這裡的水平軸,軸上是所有點在該軸的投影。

     這樣PCA的過程基本結束。在第一步減均值之後,其實應該還有一步對特徵做方差歸一化。比如一個特徵是汽車速度(0到100),一個是汽車的座位數(2到6),顯然第二個的方差比第一個小。因此,如果樣本特徵中存在這種情況,那麼在第一步之後,求每個特徵的標準差clip_image016[6],然後對每個樣例在該特徵下的資料除以clip_image016[7]

     歸納一下,使用我們之前熟悉的表示方法,在求協方差之前的步驟是:

     clip_image017[4]

     其中clip_image019[6]是樣例,共m個,每個樣例n個特徵,也就是說clip_image019[7]是n維向量。clip_image021[4]是第i個樣例的第j個特徵。clip_image023[4]是樣例均值。clip_image025[4]是第j個特徵的標準差。

     整個PCA過程貌似及其簡單,就是求協方差的特徵值和特徵向量,然後做資料轉換。但是有沒有覺得很神奇,為什麼求協方差的特徵向量就是最理想的k維向量?其背後隱藏的意義是什麼?整個PCA的意義是什麼?

3. PCA理論基礎

     要解釋為什麼協方差矩陣的特徵向量就是k維理想特徵,我看到的有三個理論:分別是最大方差理論、最小錯誤理論和座標軸相關度理論。這裡簡單探討前兩種,最後一種在討論PCA意義時簡單概述。

3.1 最大方差理論

     在訊號處理中認為訊號具有較大的方差,噪聲有較小的方差,信噪比就是訊號與噪聲的方差比,越大越好。如前面的圖,樣本在橫軸上的投影方差較大,在縱軸上的投影方差較小,那麼認為縱軸上的投影是由噪聲引起的。

因此我們認為,最好的k維特徵是將n維樣本點轉換為k維後,每一維上的樣本方差都很大。

     比如下圖有5個樣本點:(已經做過預處理,均值為0,特徵方差歸一)

     clip_image026[4]

     下面將樣本投影到某一維上,這裡用一條過原點的直線表示(前處理的過程實質是將原點移到樣本點的中心點)。

     clip_image028[4]

     假設我們選擇兩條不同的直線做投影,那麼左右兩條中哪個好呢?根據我們之前的方差最大化理論,左邊的好,因為投影后的樣本點之間方差最大。

     這裡先解釋一下投影的概念:

     QQ截圖未命名

     紅色點表示樣例clip_image037[14],藍色點表示clip_image037[15]在u上的投影,u是直線的斜率也是直線的方向向量,而且是單位向量。藍色點是clip_image037[16]在u上的投影點,離原點的距離是clip_image039[4](即clip_image030[4]或者clip_image041[4])由於這些樣本點(樣例)的每一維特徵均值都為0,因此投影到u上的樣本點(只有一個到原點的距離值)的均值仍然是0。

     回到上面左右圖中的左圖,我們要求的是最佳的u,使得投影后的樣本點方差最大。

     由於投影后均值為0,因此方差為:

     clip_image042[4]

     中間那部分很熟悉啊,不就是樣本特徵的協方差矩陣麼(clip_image037[17]的均值為0,一般協方差矩陣都除以m-1,這裡用m)。

     用clip_image044[10]來表示clip_image046[4]clip_image048[6]表示clip_image050[4],那麼上式寫作

     clip_image052[4]

     由於u是單位向量,即clip_image054[4],上式兩邊都左乘u得,clip_image056[4]

     即clip_image058[4]

     We got it!clip_image044[11]就是clip_image048[7]的特徵值,u是特徵向量。最佳的投影直線是特徵值clip_image044[12]最大時對應的特徵向量,其次是clip_image044[13]第二大對應的特徵向量,依次類推。

     因此,我們只需要對協方差矩陣進行特徵值分解,得到的前k大特徵值對應的特徵向量就是最佳的k維新特徵,而且這k維新特徵是正交的。得到前k個u以後,樣例clip_image037[18]通過以下變換可以得到新的樣本。

     clip_image059[4]

     其中的第j維就是clip_image037[19]clip_image061[4]上的投影。

     通過選取最大的k個u,使得方差較小的特徵(如噪聲)被丟棄。

     這是其中一種對PCA的解釋,第二種是錯誤最小化,放在下一篇介紹。

相關推薦

PCA成分分析過程理論

轉載:http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html 在這一篇之前的內容是《Factor Analysis》,由於非常理論,打算學完整個課程後再寫。在寫這篇之前,我閱讀了PCA、SVD和L

PCA(成分分析)降維的概念、作用演算法實現

1、PCA降維的概念 Principal Component Analysis(PCA):主成分分析法,是最常用的線性降維方法。它的目標是通過某種線性投影,將高維的資料對映到低維的空間中表示,即把原先的n個特徵用數目更少的m個特徵取代,新特徵是舊特徵的線性組合。並期望在所投影的維度上資料的方

【機器學習算法-python實現】PCA 成分分析、降維

pre gre text iss 主成分分析 int 找到 nts 導入 1.背景 PCA(Principal Component Analysis),PAC的作用主要是減少數據集的維度,然後挑選出基本的特征。 PCA的主要思想是移動坐標軸,找

PCA成分分析Python實現

more 公式 最大 最重要的 例如 好的 mina details args 作者:拾毅者 出處:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代碼:https

機器學習之PCA成分分析

ping app 最大 們的 理解 style 避免 -m size 前言 以下內容是個人學習之後的感悟,轉載請註明出處~ 簡介   在用統計分析方法研究多變量的課題時,變量個數太多就會增加課題的復雜性。人們自然希望變量個數較少而得到的 信息較

chapter02 PCA成分分析在手寫數字識別分類的應用

git 性能 .cn its nts line hive 基礎上 存儲 #coding=utf8 # 導入numpy工具包。 import numpy as np # 導入pandas用於數據分析。 import pandas as pd from sklearn.me

PCA成分分析 R語言

number ble 輸入 null Language 差值 rotation test 根據 1. PCA優缺點 利用PCA達到降維目的,避免高維災難。 PCA把所有樣本當作一個整體處理,忽略了類別屬性,所以其丟掉的某些屬性可能正好包含了重要的分類信息 2. PCA原

降維——PCA成分分析

運用二維降維到一維的例子幫助理解 對於如下二維資料 PCA演算法會試圖尋找一條直線使得所有資料到這個直線的距離的平方和最小(”投影誤差“最小)(圖中所有藍色線長度的平方和)(注意:做PCA之前需要將資料進行標準化,將資料對映到(0,1)區間內) 對於以下兩種情況,PCA會選擇紅色線 更

【模式識別與機器學習】——PCA成分分析

  基本思想 其基本思想就是設法提取資料的主成分(或者說是主要資訊),然後摒棄冗餘資訊(或次要資訊),從而達到壓縮的目的。本文將從更深的層次上討論PCA的原理,以及Kernel化的PCA。 引子 首先我們來考察一下,這裡的資訊冗餘是如何體現的。如下圖所示,我們有一組二維資料點,從圖上不難發現

CS229 6.6 Neurons Networks PCA成分分析

主成分分析(PCA)是一種經典的降維演算法,基於基變換,資料原來位於標準座標基下,將其投影到前k個最大特徵值對應的特徵向量所組成的基上,使得資料在新基各個維度有最大的方差,且在新基的各個維度上資料是不相關的,PCA有幾個關鍵的點: 1)歸一化均值與方差,均值歸一化後便於計算,方差歸一化後便於對各個維度進行比

十分鐘搞定PCA成分分析

PCA主成分分析概述 在資料建模當中我們經常會聽到一個詞叫做降維,首先咱們先來嘮一嘮資料為啥要降維呢?最主要的原因還是在於一方面使得所需要計算的量更少啦,想象一下一個100維的資料和一個10維資料計算的速度肯定是不一樣的,另一方面如果我們的資料中有很無關特徵,這些對結果看起來沒什麼促進的作用

機器學習筆記(四)PCA成分分析

首先先複習一下要用到的基礎的知識: (一)、協方差和方差 樣本均值: 樣本方差: 樣本X和樣本Y的協方差: 協方差代表了兩個變數之間的相關關係,協方差為正時,說明X和Y是正相關關係;協方差為負時,說明X和Y是負相關關係;協方差為0時,說明X和Y是相互獨立

臨時抱佛腳的Machine Learning 01-PCA成分分析

PCA演算法 作者:桂。 時間:2017-02-26  19:54:26 前言 本文為模式識別系列第一篇,主要介紹主成分分析演算法(Principal Component Analysis,PCA)的理論,並附上相關程式碼。全文主要分六個部分展開:   1

PCA成分分析之三維演示(Matlab)

PCA主成分分析之三維演示(Matlab) 寫這個的主要原因是實驗課上的要求,原本需要寫一個演示 PCA 原理的 demo ,按照實驗指導書上來說,在二維上演示就好了,但是為了折騰和無聊裝逼,我寫了這個程式,我覺得更能直觀的看出 PCA 的原理。可以完整的看到資料從三維降到二維

資料降維(三)PCA成分分析

文章目錄 PCA主成分分析 目標函式1:最小化重建誤差 目標函式2:最大化方差 PCA目標函式計算 求解PCA(1) 表現 求解PCA(2) PCA總結 PCA主成分分析 目標

R語言 PCA(成分分析

1、關鍵點 綜述:主成分分析 因子分析 典型相關分析,三種方法的共同點主要是用來對資料降維處理的從資料中提取某些公共部分,然後對這些公共部分進行分析和處理。 #主成分分析 是將多指標化為少數幾個綜合指標的一種統計分析方法 主成分分析是一種通過降維技術把多個變數化成少數幾個主成分的方法,這些主成分能夠反映原

機器學習---降維之PCA成分分析

(一)、主成分分析法PCA簡介 PCA 目的:降維——find a low dimension surface on which to project data ~如圖所示,尋找藍色的點到

PCA成分分析(入門計算+深入解析)(一)

PCA主成分分析(入門+深入)+最大方差理論+幾何意義 Principal components analysis   我們在作資料分析處理時,資料往往包含多個變數,而較多的變數會帶來分析問題的複雜性。主成分分析(Principal componen

PCA成分分析

        好久沒更新部落格了,今天想寫一下我對主成分分析(Principal components analysis)的理解。最開始接觸到主成分分析(PCA for short)是在有關高光譜影象分類的論文中,PCA是作為對照方法凸顯文中所提出的方法的優越性的。(感覺

deep learning PCA(成分分析)、份重構、特徵降維

前言     前面幾節講到了深度學習採用的資料庫大小為28×28的手寫字,這對於機器學習領域算是比較低維的資料,一般圖片是遠遠大於這個尺寸的,比如256×256的圖片。然而特徵向量的維數過高會增加計算的複雜度,像前面訓練60000個28×28的手寫字,在我這個4G記憶體,C