SVD矩阵分解
為什么要對(duì)矩陣進(jìn)行分解
原始的矩陣表示數(shù)據(jù)最完整的信息,分解完之后,信息不就不完整了嗎?為什么要做矩陣分解?
假如有一批電商數(shù)據(jù),有一些用戶(hù)購(gòu)買(mǎi)了一些商品,假設(shè)100萬(wàn)用戶(hù),10萬(wàn)個(gè)商品。用矩陣表示則有100萬(wàn)*10萬(wàn)的維度 ,這是一個(gè)很大的矩陣,同時(shí)也是一個(gè)稀疏的矩陣,因?yàn)槊總€(gè)用戶(hù)不能買(mǎi)所有的商品。這么龐大的矩陣中,我們也無(wú)法提取出重點(diǎn)信息。
因此將這個(gè)大矩陣分解成多個(gè)小矩陣相乘。
基變換
基是正交的(即內(nèi)積為0,或者直觀(guān)說(shuō)相互垂直),并且基是線(xiàn)性無(wú)關(guān)的。假設(shè)如果y軸和x軸不是正交的,也就是不是垂直,夾角小于90度,意味著y可以由x來(lái)表示,x也可以由y來(lái)表示。
當(dāng)y與x垂直時(shí),y無(wú)法表示x,x也無(wú)法表示y
我們不希望一個(gè)指標(biāo)可以由另一個(gè)指標(biāo)來(lái)表示。一旦可以這么表示,那么另一個(gè)指標(biāo)存在的意義就不大了。
變換:數(shù)據(jù)與一個(gè)基做內(nèi)積運(yùn)算,結(jié)果作為第一個(gè)新的坐標(biāo)分量,然后與第二個(gè)基做內(nèi)積運(yùn)算,結(jié)果作為第二個(gè)新坐標(biāo)的分量。
特征值分解
矩陣?yán)锩嬗泻芏嘈畔?#xff0c;來(lái)分一分, A=UΛU?1A=U \Lambda U^{-1}A=UΛU?1,其中UUU表示特征向量矩陣,Λ\LambdaΛ表示特征值矩陣。AAA必須是n*n的方陣,且有n個(gè)線(xiàn)性無(wú)關(guān)的特征向量。
這時(shí)我們就可以在對(duì)角矩陣當(dāng)中找到比較大的了,他們就代表了主要信息。
SVD矩陣分解
上面提到的特征值分解不是挺好的嗎?但是它被限制住了,如果矩陣的形狀不是n*n的呢?而是m*n的形狀呢?
這時(shí)就需要使用SVD矩陣分解了。
首先選前k個(gè)的特征值(一般前10%的特征值的和就占了總體的90%)。Am?n=Um?kΛk?kVk?nA_{m*n}=U_{m*k}\Lambda_{k*k}V_{k*n}Am?n?=Um?k?Λk?k?Vk?n?,這樣就可以得到一個(gè)近似的矩陣,這個(gè)矩陣擁有與原矩陣差不多的信息,但是大小卻少了很多。
SVD推導(dǎo)
前提:對(duì)于一個(gè)二維矩陣M可以找到一組標(biāo)準(zhǔn)正交基v1v_1v1?和v2v_2v2?使得Mv1Mv_1Mv1?和Mv2Mv_2Mv2?是正交的。
使用另一組正交基u1u_1u1?和u2u_2u2?來(lái)表示Mv1Mv_1Mv1?和Mv2Mv_2Mv2?的方向。
其長(zhǎng)度分別為:∣Mv1∣=σ1|Mv_1|=\sigma_1∣Mv1?∣=σ1?,∣Mv2∣=σ2|Mv_2|=\sigma_2∣Mv2?∣=σ2?,可得: Mv1=σ1u1,Mv2=σ2u2Mv_1=\sigma_1u_1,Mv_2=\sigma_2u_2Mv1?=σ1?u1?,Mv2?=σ2?u2?
對(duì)于向量xxx在這組基中的表示:x=(v1?x)v1+(v2?x)v2x=(v_1 · x)v_1 + (v_2·x)v_2x=(v1??x)v1?+(v2??x)v2?,其中(v1?x)(v_1 · x)(v1??x)表示向量的點(diǎn)積,點(diǎn)積表示投影的長(zhǎng)度,可以通過(guò)投影到基的長(zhǎng)度乘以基的方向來(lái)表示一個(gè)點(diǎn)的坐標(biāo)。點(diǎn)積v?xv·xv?x也可以轉(zhuǎn)換成行向量乘列向量 v?x=vTxv·x=v^Txv?x=vTx
可得Mx=(v1?x)Mv1+(v2?x)Mv2,Mx=(v1?x)σ1u1+(v2?x)σ2u2Mx=(v_1·x)Mv_1 + (v_2·x)Mv_2,Mx=(v_1·x)\sigma_1u_1+(v_2·x)\sigma_2u_2Mx=(v1??x)Mv1?+(v2??x)Mv2?,Mx=(v1??x)σ1?u1?+(v2??x)σ2?u2?,從而得到:Mx=u1σ1v1Tx+u2σ2v2Tx,M=u1σ1V1T+u2σ2v2TMx=u_1\sigma_1v_1^Tx+u_2\sigma_2v_2^Tx,M=u_1\sigma_1V_1^T+u_2\sigma_2v_2^TMx=u1?σ1?v1T?x+u2?σ2?v2T?x,M=u1?σ1?V1T?+u2?σ2?v2T?,化簡(jiǎn)得到:M=U∑VTM=U\sum V^TM=U∑VT
總結(jié)
- 上一篇: 中体会电脑的感觉谈谈你对电脑使用的感受
- 下一篇: 图神经网络基本知识