參考自:MATLAB中的svd與svds(轉(zhuǎn))_haoliyan123_新浪博客
設(shè)A為m*n階矩陣盒刚,A'表示A的轉(zhuǎn)置矩陣姆吭,A'*A的n個(gè)特征值的非負(fù)平方根叫作A的奇異值匠璧。記為σi(A)衙解。
這幾天做實(shí)驗(yàn)涉及到奇異值分解svd(singular value decomposition)喉前,涉及到這樣的一個(gè)問題,
做PCA時(shí)候400幅圖像拉成向量按列擺放轻专,結(jié)果擺成了比如說10000*400大小的矩陣忆矛,
用到svd函數(shù)進(jìn)行奇異值分解找主分量,結(jié)果MATLAB提示超出內(nèi)存,后來想起還有個(gè)函數(shù)叫svds催训,看到別人用過洽议,以為只是一個(gè)變體,沒什么區(qū)別漫拭,就用上了亚兄,結(jié)果確實(shí)在預(yù)料之中。但是今天覺得不放心采驻,跑到變量里面看了下审胚,發(fā)現(xiàn)這個(gè)大的矩陣被分解成了
三個(gè)10000*6,6*6礼旅,400*6大小的矩陣的乘積膳叨,而不是普通的svd分解得到的10000*10000,10000*400痘系,400*400大小的矩陣乘積菲嘴,把我嚇了一跳,都得到預(yù)期的結(jié)果碎浇,難不成這里還出個(gè)簍子?趕緊試驗(yàn)璃俗,
發(fā)現(xiàn)任給一個(gè)M*N大小的矩陣奴璃,都是被分解成了M*6,6*6城豁,N*6大小的矩陣的乘積苟穆,為什么都會(huì)出現(xiàn)6呢?確實(shí)很納悶唱星。help svds看了一下雳旅,發(fā)現(xiàn)svds(A) 返回的就是最大的6個(gè)特征值及其對(duì)應(yīng)的特征行向量和特征列向量,
還好间聊,我們實(shí)驗(yàn)中是在svds得到列向量中再取前5個(gè)最大的列向量攒盈,這個(gè)與普通的svd得到的結(jié)果是一致的,虛驚一場(chǎng)哎榴。型豁。。還得到了一些別的尚蝌,比如
改變這個(gè)默認(rèn)的設(shè)置迎变,
比如用[u,d,v]=svds(A,10)將得到最大的10個(gè)特征值及其對(duì)應(yīng)的最大特征行向量和特征列向量,
[u,d,v]=svds(A,10飘言,0)將得到最小的10個(gè)特征值及其對(duì)應(yīng)的特征行向量和特征列向量衣形,
[u,d,v]=svds(A,10,2)將得到與2最接近的10個(gè)特征值及其對(duì)應(yīng)的特征行向量和特征列向量姿鸿。
總之倒源,相比svd,svds的可定制性更強(qiáng)纪铺。
奇異值分解非常有用相速,所謂奇異值分解,即對(duì)于矩陣A(m*n)鲜锚,存在U(m*m)突诬,V(n*n),S(m*n)芜繁,滿足A = U*S*V’旺隙。也就是說,可將矩陣A分解為矩陣U,V,S的乘積骏令。
U和V中分別是A的奇異向量蔬捷,而S是A的奇異值。
AA'的正交單位特征向量組成U榔袋,特征值組成S'S周拐,
A'A的正交單位特征向量組成V,特征值(與AA'相同)組成SS'凰兑。因此妥粟,奇異值分解和特征值問題緊密聯(lián)系