原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479
什么是PCA习蓬?
在數(shù)據(jù)挖掘或者圖像處理等領(lǐng)域經(jīng)常會(huì)用到主成分分析榜苫,這樣做的好處是使要分析的數(shù)據(jù)的維度降低了劫狠,但是數(shù)據(jù)的主要信息還能保留下來栅干,并且新锈,這些變換后的維兩兩不相關(guān)碍讨!至于為什么治力?那就接著往下看。在本文中勃黍,將會(huì)很詳細(xì)的解答這些問題:PCA宵统、SVD、特征值覆获、奇異值马澈、特征向量這些關(guān)鍵詞是怎么聯(lián)系到一起的?又是如何在一個(gè)矩陣上體現(xiàn)出來弄息?它們?nèi)绾螞Q定著一個(gè)矩陣的性質(zhì)痊班?能不能用一種直觀又容易理解的方式描述出來?
數(shù)據(jù)降維
為了說明什么是數(shù)據(jù)的主成分摹量,先從數(shù)據(jù)降維說起涤伐。數(shù)據(jù)降維是怎么回事兒馒胆?假設(shè)三維空間中有一系列點(diǎn),這些點(diǎn)分布在一個(gè)過原點(diǎn)的斜面上凝果,如果你用自然坐標(biāo)系x,y,z這三個(gè)軸來表示這組數(shù)據(jù)的話祝迂,需要使用三個(gè)維度,而事實(shí)上豆村,這些點(diǎn)的分布僅僅是在一個(gè)二維的平面上液兽,那么,問題出在哪里掌动?如果你再仔細(xì)想想四啰,能不能把x,y,z坐標(biāo)系旋轉(zhuǎn)一下,使數(shù)據(jù)所在平面與x,y平面重合粗恢?這就對(duì)了柑晒!如果把旋轉(zhuǎn)后的坐標(biāo)系記為x',y',z',那么這組數(shù)據(jù)的表示只用x'和y'兩個(gè)維度表示即可眷射!當(dāng)然了匙赞,如果想恢復(fù)原來的表示方式,那就得把這兩個(gè)坐標(biāo)之間的變換矩陣存下來妖碉。這樣就能把數(shù)據(jù)維度降下來了涌庭!但是,我們要看到這個(gè)過程的本質(zhì)欧宜,如果把這些數(shù)據(jù)按行或者按列排成一個(gè)矩陣坐榆,那么這個(gè)矩陣的秩就是2!這些數(shù)據(jù)之間是有相關(guān)性的冗茸,這些數(shù)據(jù)構(gòu)成的過原點(diǎn)的向量的最大線性無關(guān)組包含2個(gè)向量席镀,這就是為什么一開始就假設(shè)平面過原點(diǎn)的原因!那么如果平面不過原點(diǎn)呢夏漱?這就是數(shù)據(jù)中心化的緣故豪诲!將坐標(biāo)原點(diǎn)平移到數(shù)據(jù)中心,這樣原本不相關(guān)的數(shù)據(jù)在這個(gè)新坐標(biāo)系中就有相關(guān)性了挂绰!有趣的是屎篱,三點(diǎn)一定共面,也就是說三維空間中任意三點(diǎn)中心化后都是線性相關(guān)的扮授,一般來講n維空間中的n個(gè)點(diǎn)一定能在一個(gè)n-1維子空間中分析芳室!所以,不要說數(shù)據(jù)不相關(guān)刹勃,那是因?yàn)樽鴺?biāo)沒選對(duì)堪侯!
上面這個(gè)例子里把數(shù)據(jù)降維后并沒有丟棄任何東西,因?yàn)檫@些數(shù)據(jù)在平面以外的第三個(gè)維度的分量都為0±笕剩現(xiàn)在伍宦,我假設(shè)這些數(shù)據(jù)在z'軸有一個(gè)很小的抖動(dòng)芽死,那么我們?nèi)匀挥蒙鲜龅亩S表示這些數(shù)據(jù),理由是我認(rèn)為這兩個(gè)軸的信息是數(shù)據(jù)的主成分次洼,而這些信息對(duì)于我們的分析已經(jīng)足夠了关贵,z'軸上的抖動(dòng)很有可能是噪聲,也就是說本來這組數(shù)據(jù)是有相關(guān)性的卖毁,噪聲的引入揖曾,導(dǎo)致了數(shù)據(jù)不完全相關(guān),但是亥啦,這些數(shù)據(jù)在z'軸上的分布與原點(diǎn)構(gòu)成的夾角非常小炭剪,也就是說在z'軸上有很大的相關(guān)性,綜合這些考慮翔脱,就可以認(rèn)為數(shù)據(jù)在x',y'軸上的投影構(gòu)成了數(shù)據(jù)的主成分奴拦!
現(xiàn)在,關(guān)于什么是數(shù)據(jù)的主成分已經(jīng)很好的回答了届吁。下面來看一個(gè)更具體的例子错妖。
下面是一些學(xué)生的成績(jī):
首先,假設(shè)這些科目成績(jī)不相關(guān)疚沐,也就是說某一科考多少份與其他科沒有關(guān)系暂氯。那么一眼就能看出來,數(shù)學(xué)亮蛔、物理株旷、化學(xué)這三門成績(jī)構(gòu)成了這組數(shù)據(jù)的主成分(很顯然,數(shù)學(xué)作為第一主成分尔邓,因?yàn)閿?shù)學(xué)成績(jī)拉的最開)。為什么一眼能看出來锉矢?因?yàn)樽鴺?biāo)軸選對(duì)了梯嗽!下面再看一組數(shù)據(jù),還能不能一眼看出來:
是不是有點(diǎn)凌亂了沽损?你還能看出來數(shù)據(jù)的主成分嗎灯节?顯然不能,因?yàn)樵谶@坐標(biāo)系下數(shù)據(jù)分布很散亂绵估。所以說炎疆,看到事物的表象而看不到其本質(zhì),是因?yàn)榭吹慕嵌扔袉栴}国裳!如果把這些數(shù)據(jù)在空間中畫出來形入,也許你一眼就能看出來。但是缝左,對(duì)于高維數(shù)據(jù)亿遂,能想象其分布嗎浓若?就算能描述分布,如何精確地找到這些主成分的軸蛇数?如何衡量你提取的主成分到底占了整個(gè)數(shù)據(jù)的多少信息挪钓?要回答這些問題,需要將上面的分析上升到理論層面耳舅。接下來就是PCA的理論分析碌上。
PCA推導(dǎo)
以下面這幅圖開始我們的推導(dǎo):
上面是二維空間中的一組數(shù)據(jù),很明顯浦徊,數(shù)據(jù)的分布讓我們很容易就能看出來主成分的軸(簡(jiǎn)稱主軸)的大致方向馏予。下面的問題就是如何通過數(shù)學(xué)計(jì)算找出主軸的方向。來看這張圖:
現(xiàn)在要做的事情就是尋找u1的方向辑畦,對(duì)于這點(diǎn)吗蚌,我想好多人都有經(jīng)驗(yàn)摩梧,這不就是以前用最小二乘法擬合數(shù)據(jù)時(shí)做的事情嗎杰刽!對(duì)焕襟,最小二乘法求出來的直線(二維)的方向就是u1的方向它褪!那u2的方向呢居触?因?yàn)檫@里是二維情況弊予,所以u(píng)2方向就是跟u1垂直的方向竭翠,對(duì)于高維數(shù)據(jù)传货,怎么知道u2的方向窥淆?經(jīng)過下面的理論推導(dǎo)词裤,各個(gè)主軸都能確定下來。
給定一組數(shù)據(jù):(如無說明蚤假,以下推導(dǎo)中出現(xiàn)的向量都是默認(rèn)是列向量)
將其中心化后表示為:
中心化后的數(shù)據(jù)在第一主軸u1方向上分布散的最開,也就是說在u1方向上的投影的絕對(duì)值之和最大(也可以說方差最大)侧但,計(jì)算投影的方法就是將x與u1做內(nèi)積绢彤,由于只需要求u1的方向饶氏,所以設(shè)u1是單位向量讥耗。
也就是最大化下式:
也即最大化:
解釋:平方可以把絕對(duì)值符號(hào)拿掉,光滑曲線處理起來方便疹启。
兩個(gè)向量做內(nèi)積可以轉(zhuǎn)化成矩陣乘法:
所以目標(biāo)函數(shù)可以表示為:
括號(hào)里面就是矩陣乘法表示內(nèi)積古程,轉(zhuǎn)置以后的行向量乘以列向量得到一個(gè)數(shù)。因?yàn)橐粋€(gè)數(shù)的轉(zhuǎn)置還是其本身喊崖,所以又可以將目標(biāo)函數(shù)化為:
這樣就可以把括號(hào)去掉挣磨!去掉以后變成:
由于u1和i無關(guān),可以把它拿到求和符外面:
注意荤懂,其實(shí)括號(hào)里面是一個(gè)矩陣乘以自身的轉(zhuǎn)置茁裙,這個(gè)矩陣形式如下:
X矩陣的第i列就是xi,于是有:
所以目標(biāo)函數(shù)最后化為:
上式到底有沒有最大值呢节仿?如果沒有前面的1/n晤锥,那就是就是一個(gè)標(biāo)準(zhǔn)的二次型!并且XX'(為了方便,用'表示轉(zhuǎn)置)得到的矩陣是一個(gè)半正定的對(duì)稱陣矾瘾!為什么女轿?首先XX'是對(duì)稱陣,因?yàn)?XX')'=XX'壕翩,下面證明它是半正定蛉迹,什么是半正定?就是所有特征值大于等于0戈泼。
假設(shè)XX'的某一個(gè)特征值為婿禽,對(duì)應(yīng)的特征向量為,則有:
證明完畢大猛!對(duì)于半正定陣的二次型扭倾,存在最大值!現(xiàn)在問題就是如何求目標(biāo)函數(shù)的最大值挽绩?以及取最大值時(shí)u1的方向膛壹?下面介紹兩種方法。
方法一 ?拉格朗日乘數(shù)法
目標(biāo)函數(shù)和約束條件構(gòu)成了一個(gè)最大化問題:
構(gòu)造拉格朗日函數(shù):
對(duì)u1求導(dǎo)
顯然唉堪,u1即為XX'特征值對(duì)應(yīng)的特征向量模聋!XX'的所有特征值和特征向量都滿足上式,那么將上式代入目標(biāo)函數(shù)表達(dá)式即可得到
所以唠亚,如果取最大的那個(gè)特征值链方,那么得到的目標(biāo)值就最大。有可能你會(huì)有疑問灶搜,為什么一階導(dǎo)數(shù)為0就是極大值呢祟蚀?那么再求二階導(dǎo)數(shù):
二階導(dǎo)數(shù)半負(fù)定,所以割卖,目標(biāo)函數(shù)在最大特征值所對(duì)應(yīng)的特征向量上取得最大值前酿!所以,第一主軸方向即為第一大特征值對(duì)應(yīng)的特征向量方向鹏溯。第二主軸方向?yàn)榈诙筇卣髦祵?duì)應(yīng)的特征向量方向罢维,以此類推,證明類似丙挽。
下面介紹第二種方法
方法二 ?奇異值法
這方法是從矩陣分析里面總結(jié)的肺孵,隨便取個(gè)名叫奇異值法。
首先颜阐,對(duì)于向量x平窘,其二范數(shù)(也就是模長(zhǎng))的平方為:
所以有:
把二次型化成一個(gè)范數(shù)的形式,最大化上式也即這個(gè)問題:對(duì)于一個(gè)矩陣瞬浓,它對(duì)一個(gè)向量做變換,變換前后的向量的模長(zhǎng)伸縮尺度如何才能最大蓬坡?這個(gè)很有趣猿棉,簡(jiǎn)直就是把矩陣的真面目給暴露出來了磅叛。為了給出解答,下面引入矩陣分析中的一個(gè)定理:
表示矩陣A的最大奇異值的是萨赁,一個(gè)矩陣A的奇異值為AA'(或A'A)的特征值開平方弊琴,前面講過AA'的特征值都大于等于0。當(dāng)x為單位向量時(shí)杖爽,上式就是我們的目標(biāo)函數(shù)表達(dá)式敲董。然而,上式只是告訴我們能取到最大值是多少慰安,并沒有說取到最大值時(shí)x的方向腋寨,要想知道取到最大值時(shí)的方向,那就來證明這個(gè)定理吧化焕!
考察對(duì)稱陣
設(shè)
為其n個(gè)特征值萄窜,并令與之對(duì)應(yīng)的單位特征向量為:
對(duì)了,忘了提醒撒桨,對(duì)稱陣不同特征值對(duì)應(yīng)的特征向量?jī)蓛烧徊榭蹋∵@組特征向量構(gòu)成了空間中的一組單位正交基。
任意取一個(gè)向量x凤类,將其表示為
則
將代入上式可得
由于這些單位特征向量?jī)蓛烧凰氡茫挥邢嗤淖鰞?nèi)積為1,不同的做內(nèi)積為0.所以上式做內(nèi)積出來的結(jié)果為:
根據(jù)特征值的大小關(guān)系有
所以
定理得證谜疤!
顯然佃延,當(dāng)時(shí)取得最大值
再回到我們的問題,需要最大化:
將X'代入上面證明過程中的矩陣A茎截,則u1的方向即為A'A=(X')'X'=XX'對(duì)大特征值對(duì)應(yīng)的特征向量的方向苇侵!
所以第一主軸已經(jīng)找到,第二主軸為次大特征值對(duì)應(yīng)的特征向量的方向企锌,以此類推榆浓。
兩種方法殊途同歸,現(xiàn)在來解答關(guān)于主成分保留占比的問題撕攒。上面我們知道第一主軸對(duì)應(yīng)的最大值是最大奇異值(也就是AA'最大特征值開平方)陡鹃,第二主軸對(duì)應(yīng)的最大值是次大奇異值,以此類推抖坪。那么假設(shè)取前r大奇異值對(duì)應(yīng)的主軸作為提取的主成分萍鲸,則提取后的數(shù)據(jù)信息占比為:
分子是前r大奇異值的平方和,分母是所有奇異值的平方和擦俐。
到此脊阴,主成分分析PCA就講完了,文章最后提到了奇異值,關(guān)于這個(gè)嘿期,后面的奇異值分解(SVD)文章將會(huì)詳細(xì)講解并給出其具體應(yīng)用品擎!