一.判別分析降維
? ? ?LDA降維和PCA的不同是LDA是有監(jiān)督的降維晚吞,其原理是將特征映射到低維上延旧,原始數(shù)據(jù)的類別也能清晰的反應(yīng)在低維的數(shù)據(jù)上,也就是低維的數(shù)據(jù)也可以用來判別分類槽地。
? ? ?我們先看看二維的情況迁沫,我們希望找到一個向量,使得數(shù)據(jù)點映射到這個向量上后捌蚊,兩個類間的距離盡可能集畅,兩個類內(nèi)的樣本的距離盡可能小。這樣就得到了一個目標(biāo)函數(shù)缅糟,分子是投影后兩個類間均值的差的平方挺智,我們希望這個值盡可能大,分母是投影后的類的散列值的和窗宦,是少除以樣本數(shù)量的方差赦颇,進(jìn)一步化簡分子得到投影向量的轉(zhuǎn)置乘以投影前的類均值差向量的外積再乘以投影向量,分母是投影向量的轉(zhuǎn)置乘以投影前的類間散列矩陣的和再乘以投影向量赴涵,此時我們需要求使得目標(biāo)函數(shù)最小的投影向量媒怯,由于投影向量擴(kuò)大或縮小多少倍,目標(biāo)函數(shù)值不變髓窜,那么我們可以讓分母的模長為1扇苞,此時可以使用拉格朗日乘子法,最后求得:當(dāng)類間散列矩陣的和存在逆矩陣時寄纵,投影向量就是類間散列矩陣的和的逆矩陣和投影前的類均值差向量的外積的特征向量鳖敷。進(jìn)一步的,我們化簡等式左邊得到類間散列矩陣的逆矩陣乘以投影前類間均值向量的差乘以一個常數(shù)擂啥,那么由于投影向量可以放縮常數(shù)倍不影響結(jié)果哄陶,我們約掉兩邊的常數(shù),得到投影向量等于投影前類均值向量的差左乘散列矩陣的逆矩陣哺壶,這就是fisher提出的判別分析
二.PCA降維
1.PCA的步驟:
? ? ? PCA是將原始樣本投影到低維的空間上屋吨,使得樣本的絕大部分信息得以保留,并且特征的維度降低使得模型不易過擬合山宾。思想是:對于原始空間中的m維向量而言至扰,找到k個投影向量使得這m維向量投影到這k個投影向量上的方差最大,保留原始的樣本信息最多资锰,我們首先可以看看找第一個向量敢课,使得在這個方向上的投影方差最大。步驟如下:
1.在投影之前,我們對數(shù)據(jù)做中心化處理直秆,使得原始數(shù)據(jù)均值為0
2.計算中心化后的樣本的協(xié)方差矩陣濒募,這是個m*m維的矩陣,m表示原始特征的數(shù)目圾结。第i行第j列的元素表示數(shù)據(jù)中第i列和第j列的協(xié)方差
3.計算協(xié)方差矩陣的特征值和特征向量瑰剃,特征向量是單位向量,模長為1筝野,
4.選擇帶有最大特征值的k個特征向量
5.計算k個最大特征值對應(yīng)的k個特征晌姚,對于每一個特征,都是用原數(shù)據(jù)矩陣(n行m列)乘以對應(yīng)的特征向量(m行1列歇竟,m是原始變量的數(shù)目):因此最后的特征有n行一列挥唠,表示每個樣本一個特征值
?2. PCA的過程
? ? ? 對數(shù)據(jù)進(jìn)行中心化和歸一化,然后將其投影到某個向量上焕议,計算這一維上的數(shù)據(jù)點的方差宝磨,經(jīng)過化簡就是投影向量的轉(zhuǎn)置乘以原始數(shù)據(jù)的協(xié)方差矩陣再乘以投影向量,前提是這個投影向量是單位向量盅安,然后我們令這個方差λ最大懊烤,得到最大方差時對應(yīng)的那個投影向量就是第一個主成分,那么這個向量如何求解呢?因為這個投影向量是單位向量宽堆,那么等式兩邊左乘以投影向量,得到了λu=Σu茸习,則說明這個投影向量u的方向其實就是這個協(xié)方差矩陣的特征向量畜隶,那么最大方差λ對應(yīng)的就是Σ的最大特征值對應(yīng)的特征向量的方向,就是第一主成分的方向号胚,第二大特征值對應(yīng)的特征向量就是第二主成分的方向
? ? ? ?數(shù)據(jù)的中心化并不是必要的籽慢,但是卻方便了表示和計算,PCA是計算樣本協(xié)方差矩陣的猫胁,因此中心化或者中心化并不改變特征向量的方向或者特征值的大小箱亿,因此即使不中心化,PCA一樣的起作用弃秆,然而如果你中心化數(shù)據(jù)了届惋,那么樣本的協(xié)方差矩陣的數(shù)學(xué)表示就會得以簡化,如果你的數(shù)據(jù)點就是你的數(shù)據(jù)矩陣的列菠赚,那么協(xié)方差矩陣就表示為xx'脑豹,多么簡便啊衡查!技術(shù)上瘩欺,PCA是包括數(shù)據(jù)中心化這一步的,但是那只是為了計算協(xié)方差矩陣,然后對協(xié)方差矩陣做特征值分解俱饿,得到各個特征值和特征向量
? ? ? 數(shù)據(jù)的歸一化也不是必須的歌粥,如果某些變量有很大或者很小的方差,那么PCA將會傾向于這些大的方差的變量拍埠,例如如果你增加了一個變量的方差失驶,也許這個變量對第一個主成分會從很小的影響到起主導(dǎo)性的作用,因此如果你想要PCA獨立于這樣的變化械拍,歸一化可以做到突勇,當(dāng)然,如果你的變量在那個規(guī)模上很重要坷虑,那么你可以不歸一化甲馋,歸一化在PCA中是很重要的,因為PCA是一個方差最大化的實驗迄损,它就是投影你的原始數(shù)據(jù)到方差最大化的方向上
3.PCA的特點
(1)如果原始的特征是高度相關(guān)的定躏,PCA的結(jié)果是不穩(wěn)定的;
(2)新的特征是原始特征的線性組合芹敌,所以缺乏解釋性痊远。
(3)原始數(shù)據(jù)不一定要是多元高斯分布的,除非你使用這個技術(shù)來預(yù)測性的建模去計算置信區(qū)間
三.奇異值分解
1.線性變換
? ? ? ?矩陣乘法的作用是線性變換氏捞,對一個向量乘以一個矩陣碧聪,可以使得這個向量發(fā)生伸縮、切變和旋轉(zhuǎn)液茎。我們都知道對稱矩陣的特征向量是相互正交的逞姿,給定一個對稱矩陣M,可以找到一些這樣的正交向量v捆等,使得Mv=λv滞造,即這個矩陣M對向量做了拉伸變換,λ是拉伸的倍數(shù)栋烤。那么對于普通的矩陣呢谒养,才能讓一個原來就是相互垂直的網(wǎng)格平面(orthogonal grid), 線性變換成另外一個網(wǎng)格平面同樣垂直呢?
? ? ? ?對于一個正交矩陣明郭,其對應(yīng)的變換叫做正交變換买窟,這個變換的作用是不改變向量的尺寸和向量間的夾角。正交變換中的旋轉(zhuǎn)變換只是將變換向量用另一組正交基表示达址,在這個過程中并沒有對向量做拉伸蔑祟,也不改變向量的空間位置,只是將原坐標(biāo)系旋轉(zhuǎn)得到新的坐標(biāo)系沉唠,那么這個旋轉(zhuǎn)矩陣怎么求呢疆虚?對于二維空間中的某個向量而言,其經(jīng)過旋轉(zhuǎn)變換的結(jié)果就是從用一組坐標(biāo)系表示到用另外一組坐標(biāo)系表示,新的坐標(biāo)系下的坐標(biāo)各個分量相當(dāng)于是原坐標(biāo)系下的坐標(biāo)的各個分量在新的坐標(biāo)系的兩個正交基下的投影径簿,或者是相當(dāng)于將原來的二維向量經(jīng)過旋轉(zhuǎn)到了新的坐標(biāo)罢屈,因此相當(dāng)于對向量左乘一個旋轉(zhuǎn)矩陣,求出這個矩陣就是旋轉(zhuǎn)變換的矩陣篇亭。剛剛說正交變換不改變向量的空間位置是絕對的缠捌,但是坐標(biāo)是相對的,從原來的坐標(biāo)系的基向量位置看這個二維向量译蒂,到從新的坐標(biāo)系下看這個向量的坐標(biāo)是變化的
2.特征值分解
? ? ? 矩陣乘以一個向量的結(jié)果仍是同維數(shù)的一個向量曼月。因此,矩陣乘法對應(yīng)了一個變換柔昼,把一個向量變成同維數(shù)的另一個向量哑芹。
? ? ? 對特定的向量,經(jīng)過一種方陣變換捕透,經(jīng)過該變換后聪姿,向量的方向不變(或只是反向),而只是進(jìn)行伸縮變化(伸縮值可以是負(fù)值乙嘀,相當(dāng)于向量的方向反向)末购?這就是相當(dāng)于特征向量的定義
? ? ?特征向量的幾何含義是:特征向量通過方陣A變換只進(jìn)行伸縮,而保持特征向量的方向不變虎谢。特征值表示的是這個特征到底有多重要盟榴,類似于權(quán)重,而特征向量在幾何上就是一個點婴噩,從原點到該點的方向表示向量的方向曹货。
? ? ? 一個變換(或者說矩陣)的特征向量就是這樣一種向量,它經(jīng)過這種特定的變換后保持方向不變讳推,只是進(jìn)行長度上的伸縮而已。特征值分解則是對旋轉(zhuǎn)和縮放兩種效應(yīng)的歸并玩般。因為特征值分解中的A為方陣银觅,顯然是不存在投影效應(yīng)的』滴或者說究驴,我們找到了一組基(特征向量們),在這組基下匀伏,矩陣的作用效果僅僅是縮放洒忧。即矩陣A將一個向量從x這組基的空間旋轉(zhuǎn)到x這組基的空間上,并在每個方向進(jìn)行了縮放够颠,由于前后兩組基都是x熙侍,即沒有進(jìn)行旋轉(zhuǎn)和投影。
? ? ? 詳細(xì)分析特征值分解的過程:首先由于特征向量是正交的,特征向量組成的矩陣是正交方陣蛉抓,兩邊同時右乘以這個方陣的逆矩陣庆尘,可以得到矩陣A的表達(dá)式為A=UΛU',兩邊同時右乘一個向量巷送,相當(dāng)于對這個向量左乘矩陣A驶忌,對向量做旋轉(zhuǎn)或拉伸的變換。這個變換的過程分為三個映射:第一個是將向量x進(jìn)行了旋轉(zhuǎn)笑跛,它將x用新的坐標(biāo)系來表示付魔;第二個變換是拉伸變化,對x的每一維分量都進(jìn)行了特征值大小的拉伸或縮小變換飞蹂;第三個是對x做第一個變換的逆變換几苍,因為是第一個矩陣的逆矩陣,也是旋轉(zhuǎn)變換晤柄。在第二個拉伸變換中擦剑,可以看出,如果矩陣A不是滿秩的芥颈,即有的特征值為0惠勒,那么這里相當(dāng)于將x映射到了m維空間的子空間(m是矩陣A的維數(shù)m*m),此時矩陣A是一個正交投影矩陣爬坑,它將m維向量x映射到了它的列空間纠屋。如果A是二維的,那么可以在二維平面上可以找到一個矩形盾计,使得這個矩形經(jīng)過A變換后還是矩形
3.奇異值分解
? ? ? 在特征值分解中售担,矩陣A要求是方陣,那么對于一個任意的矩陣m*n署辉,能否找到一組正交基使得經(jīng)過它變換后還是正交基族铆?這就是SVD的精髓所在
? ? ? A=UΣU',我們來分析矩陣A的作用:首先是旋轉(zhuǎn)哭尝,U的列向量是一組標(biāo)準(zhǔn)正交基哥攘,V也是,這表示我們找到了兩組基材鹦。A的作用是將一個向量從V這組正交基向量空間旋轉(zhuǎn)到U這組正交基向量空間逝淹;其次是縮放,當(dāng)V對向量x做了旋轉(zhuǎn)以后桶唐,相當(dāng)于把向量x旋轉(zhuǎn)使其用V這組正交基表示坐標(biāo)栅葡,然后Σ對向量x的每個分量做了縮放,縮放的程度就是Σ的主對角線上的元素尤泽,是奇異值欣簇;最后是投影规脸,如果U的維數(shù)小于V的維數(shù),那么這個過程還包含了投影
?1.理論層面
? ? ? 現(xiàn)在的目的是找一組正交基醉蚁,使得經(jīng)過A矩陣變換后仍然是一組正交基燃辖,假設(shè)已經(jīng)找到這樣一組正交基,那么對這組正交基經(jīng)過A變換网棍,如何使其仍然是一組正交基呢黔龟?只要使得原來的正交基是A'A的特征向量即可,|AVi|就是A'A的特征值的開方滥玷,也就是奇異值氏身,然后我們求AVi的單位向量Ui,這些Ui也都是正交的惑畴,那么我們就找到了兩組正交基使得從V這組正交基變換到U這組正交基蛋欣,V稱作右奇異向量,U稱作左奇異向量如贷,AVi的模是奇異值陷虎,我們對V1,...,Vk進(jìn)行擴(kuò)充Vk+1,..,Vn(Vk+1,..,Vn是Ax=0的零空間)使得V1,...,Vn是n維空間中的一組正交基杠袱,對U1,...,Uk進(jìn)行擴(kuò)充Uk+1,...,Um尚猿,使得U1,..,Um是m維空間中的一組正交基,這個k值是矩陣A的秩楣富,當(dāng)A是滿秩時凿掂,分解后的矩陣相乘等于A,k越接近于n纹蝴,則分解后的矩陣相乘結(jié)果越接近于A
? ? ? 對矩陣A的映射過程分析:如果在n維空間中找到一個超矩形庄萎,使其都落在A'A的特征向量的方向上,那么經(jīng)過A變換后的形狀仍為超矩形塘安。Vi是A'A的特征向量糠涛,Ui是AA'的特征向量,也是AVi的單位向量兼犯,σ是A'A的特征值的開方脱羡,根據(jù)這個公式可以計算出矩陣A的奇異值分解矩陣
2.幾何層面
? ? ? ?SVD是將一個相互垂直的網(wǎng)格變換到另外一個相互垂直的網(wǎng)格,按照上面的對于U,V的定位免都,可以實現(xiàn)用矩陣A將一個向量變換的過程,首先將向量x寫成用V這組正交基表示的形式帆竹,然后用矩陣A左乘向量x绕娘,并帶入AVi=σiUi,最后可以得到A的分解式栽连,不是矩陣分解式险领,而是向量分解式侨舆,可以看出,如果有的奇異值很小甚至為0绢陌,那么本來有n項相加挨下,就最后只有奇異值不為0的項相加了,假如有k項相加脐湾,那么k越接近于n最后A分解的結(jié)果越接近于A
3.奇異值分解的應(yīng)用
(1)可以用來減少元素的存儲
(2)可以用來降噪:去掉奇異值小的項臭笆,奇異值小的我們認(rèn)為是含有樣本重要信息很少,都是噪聲秤掌,因此就把這些信息少的給去掉了
(3)數(shù)據(jù)分析:比如說我們有一些樣本點用于建模愁铺,我們通過SVD將數(shù)據(jù)里面的奇異值小的都去掉了,最后得到了分解后的數(shù)據(jù)闻鉴,用來做分析茵乱,更加準(zhǔn)確
4.SVD和PCA的聯(lián)系
(1)列降維
? ? ? ?我們知道PCA里面,我們對變量進(jìn)行降維實際上就相當(dāng)于對數(shù)據(jù)矩陣Am*n右乘一個矩陣Pn*r孟岛,就得到了Am*r瓶竭,表示每個樣本的特征向量只有r維的,和這個矩陣P代表了r個列向量是數(shù)據(jù)矩陣A的協(xié)方差矩陣n*n的最大的r的特征值對應(yīng)r個特征向量渠羞,都是n維的斤贰。和SVD相比,將SVD的表達(dá)式兩邊同時右乘一個Vn*r堵未,這樣等式右邊就Vr*n和Vn*r相乘是單位向量腋舌,因為Vn*r是A'A的r個特征向量,是前r個不為0的特征值對應(yīng)的特征向量渗蟹,且由于A'A是對稱的块饺,那么各個特征向量之間是正交的,這樣就得到了剛剛PCA推導(dǎo)出來的公式
(2)行降維
? ? ? ?同理,對數(shù)據(jù)矩陣Am*n左乘一個矩陣Pr*m雌芽,就得到了Ar*n授艰,表示每個特征對應(yīng)的樣本只有r個,矩陣P代表了r個m維向量世落,每個向量是讓每個特征對應(yīng)的樣本向量所要投影的方向向量淮腾。和SVD相比,將SVD兩邊同時左乘以一個矩陣Ur*m屉佳,就得到了Ar*n谷朝,即在行方向上進(jìn)行了降維,等式右邊是Ur*m和Um*r相乘為單位向量武花,因為Um*r是AA'的特征向量圆凰,是AA'的前r個不為0的特征值對應(yīng)的特征向量,是m維的体箕,由于AA'是對稱矩陣专钉,那么各個特征向量之間是正交的挑童,這樣就得到了剛剛PCA推導(dǎo)出來的公式
可以看出:
--PCA幾乎可以說是對SVD的一個包裝,如果我們實現(xiàn)了SVD跃须,那也就實現(xiàn)了PCA了
--而且更好的地方是站叼,有了SVD,我們就可以得到兩個方向的PCA菇民,如果我們對A’A進(jìn)行特征值的分解尽楔,只能得到一個方向的PCA。