1. 程式人生 > >PCA主成分分析

PCA主成分分析

        好久沒更新部落格了,今天想寫一下我對主成分分析(Principal components analysis的理解。最開始接觸到主成分分析(PCA for short)是在有關高光譜影象分類的論文中,PCA是作為對照方法凸顯文中所提出的方法的優越性的。(感覺PCA好慘......)這同樣也說明了,PCA應該是一個很經典,應用面很廣的方法,並且效能也很好~~~正所謂木秀於林,風必摧之;PCA在我看的那幾篇論文中總是作為陪襯,在這裡我要為它正名~~~~(臥槽,正義屬性滿滿啊)。廢話少說,下面是正題。

        在正式介紹PCA之前,我們先來想像一些平時在訓練演算法的過程中所遇到的情況。這裡的情況是指資料的情況。

Andrew Ng不是說過嗎,當我們去解決一個機器學習問題時,我們可能會把大量的時間都花在觀察資料上。可見,資料對整個演算法有著不可比擬的重要性。但是在現實中,訓練資料總是會存在各種的問題。而資料最重要的就是特徵嘍~~~這裡引用部落格園使用者JerryLead的幾個例子進行說明:

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

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

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

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

        在上面的例子中,我們可以看到有很多資料的特徵是冗餘的,它們之間是有聯絡的。那我們就可以利用這些特徵之間的內在聯絡來減少特徵的維數,降低過擬合的風險。

        咳咳,上面的大神舉得例子確實很精闢,那下面我也用高光譜這個task進行一下說明(裝逼模式已開啟,前方高能預警,非戰鬥人員立即撤離!!!):在高光譜影象分類領域主要是有兩個關鍵點,一是由於高光譜圖象是採集了幾百個通道(也就是波段)的光譜資訊,這就造成了單一畫素點特徵維數過高;二是標記樣本成本太高,所以只能藉助極少量的標記樣本來完成分類任務。在這裡,我們只關心第一點。

        下面我們來正式介紹主成分分析(PCA),它可以解決部分上述問題哦~~~PCA的思想是將n維特徵對映到k維上(n>k),這k維是全新的正交特徵。這k維特徵稱為主元,是重新構造出來的k維特徵,而不是簡單地從n維特徵中去除其餘n-k維特徵所得到的特徵。也就是說,在原來的n維特徵中,是不存在我們後面用的k維特徵的。

        下面我們說一說PCA的計算過程,不得不說,第一次見到這個過程,感覺真是不一般的怪異...(這裡以二維特徵為例,資料集為Andrew Ngq1x.dat)

        第一步,分別求xy的平均值,然後對於所有的樣例,都減去對應的均值。

        第二步,求特徵協方差矩陣,若特徵為三維,則協方差矩陣為:

        ,這裡特徵為二維,協方差矩陣為:。其中

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

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

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

     

        這樣,就將原始樣例的n維特徵變成了k維,這k維就是原始特徵在k維上的投影。上面得到的資料可以認為是learnstudy特徵融合為一個新的特徵叫做LS特徵,該特徵基本上代表了這兩個特徵。

        下面是實驗結果,我用的是Andrew Ng的資料集q1x.dat,共有99個數據,每個資料有兩個特徵。序號1-50的資料為型別1(類標籤為0);序號為51-99的資料為型別2(類標籤為1)。將降維之後的特徵用散點圖表示出來,如下所示:

 

可以發現,資料可以被明顯的分為兩類。下面附上原始碼(matlab):

function PCA
load q1x.dat;
mean1=sum(q1x(:,1))/99;
mean2=sum(q1x(:,2))/99;
qq=ones(99,2);
sum1=0;
qq(:,1)=q1x(:,1)-mean1;
qq(:,2)=q1x(:,2)-mean2;%分別求x和y的平均值,然後對於所有的樣例,都減去對應的均值。
cov1=sum(power(qq(:,1),2))/98;
cov4=sum(power(qq(:,2),2))/98;
for i=1:99
    sum1=qq(i,1)*qq(i,2)+sum1;
end
cov2=sum1/98;
covx=[cov1 cov2;cov2 cov4];%求特徵協方差矩陣
[V,D]=eig(covx)%求協方差的特徵值和特徵向量



相關推薦

【機器學習算法-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(成分分析)降維的概念、作用及演算法實現

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

【模式識別與機器學習】——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成分分析過程及理論

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

PCA成分分析

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

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

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