SVD notes
1 特征值與特征向量
?A * vi = li * vi, 則稱vi為A的特征向量, li為該特征向量對應的特征值。 vi為列向量。若vi點乘vi即 vi'*vi 結果為1,則稱vi為單位特征向量
? 若一組正交的單位特征向量vi, i from 1 to n, 構成矩陣V = {v1 v2 ... vn}, 單位正交矩陣。 e稱為標準單位正交矩陣,eii=1, eij=0
??
? A * V = {Av1? Av2? ... Avn}
??????? = {l1v1 l2v2 ... lnvn}
??????? = {v1?? v2?? ... vn} * D, D是n*n的對角矩陣, Dii = li, 可以按li由大到小排列 。
??????? = V * D
???????? notes: 矩陣的左乘,是操縱矩陣的行向量; 矩陣的右乘法, 是操縱矩陣的列向量
????????? 例如 2 * A?????? 結果中, 表示將A的每行中的元素都乘以2
?????????? (2 0 .. 0
??????????? 0?1 .. 0
??????????? .
??????????? .
??????????? 0 0 .. 1) * A? 結果中, 表示將A的第一行中的元素都乘以2
??????????? (2 1 .. 0
??????????? 0 1 .. 0
??????????? .
??????????? .
??????????? 0 0 .. 1) * A?? 結果中, 值是將A的第一行中的元素都乘以2再加上第2行?
?? 因此, A * V = V * D, V是單位正交矩陣, 等式兩側右邊各乘以V’[V'為V的轉置矩陣,transpose], 即?
???? ====>? A * V * V' = V * D * V'
???? ====>????????? A = V * D * V'?????????? V * V'結果是標準單位正交矩陣e
????????
2? 特征值分解(EVD) [1的結論]
若A是對稱矩陣, 則A必定可以表示為 A = V*D*V'????? V'為V的轉置矩陣,transpose
且V的列向量是A的特征向量, V是單位正交矩陣。
D是對角矩陣, 對角元素是A的特征值
稱V*D*VT 為矩陣A的特征值分解(enginvalue decomposition, EVD)
===特征值分解不需要對稱這個條件。 Avi = li vi, 求出所有正交的vi及其對應的li就是特征值分解過程
?
?
3 只有方陣才能進行特征值分解(EVD), Ann = Vnn * Dnn * V'nn; 那么當Amn,m!=n不是方陣是該如何?
?
?
4 奇異值分解 singular value decomposition
1) Amn 不是方陣, 但 A'A 是n*n的方陣; 令矩陣B = A'A, B可進行特征值分解 B = VDV', V為單位正交向量;設vi為V的列向量,li為對應的特征值? i from 1 to n
2) Avi 點乘 Avj = (Avi)' * (Avj) = vi'A'Avj = vi'Bvj = vi' li vj = li (vi' vj) = 0, i!=j時。? i=j時值為li。 令si = sqrt(li)
==>因此矩陣{Av1 Av2 ... Avn}是正交矩陣
==>因此矩陣{Av1/s1? Av2/s2? ... Avn/sn} 是單位正交矩陣, 令ui = Avi/si, 即U是單位正交矩陣
==>因此有 Avi = ui*si, A*V = U*S, Sii = si = sqrt(li), li是矩陣A'A的第i大的特征值, U和V均是單位正交矩陣
==>因此有 A*V*V' = U*S*V', 即A = U * S * V'
==>OOOOOKKKKK
?
?
5 基本性質、定義
1) U的列向量稱作A的左奇異向量, V的列向量稱作A的右奇異向量
2) A的對角矩陣中的元素是對應的矩陣A'A的特征值的平方根
3) V是A'A的單位正交特征矩陣,對應向量的特征值為li; U是AA'的單位正交矩陣,對應向量的特征值也是li
===>A'A = (USV')' (USV') = (VS'U') (USV') = V(S'S)V', S是對角矩陣,因此S'S也是對角矩陣。
===>本式的含義就是將矩陣A'A進行特征值分解。得到的特征向量就是vi, 對應的特征值就是S'S的對角元素 si*si, 即li
4) 計算A的奇異值分解時, 可以不用計算A'A; 通過A直接可以得到A的奇異值即左右矩陣
?
?
6 文本降維的應用
1) 設A為原始的Term-Document矩陣,行為term, 列為doc
2) 進行奇異值分解,得到A = USV'
3) 降維:選擇S中前k個最大的特征值, 保留U、V中的前k行,得到矩陣A的近似矩陣
===> 近似Amn = Umk Skk (Vmk)' 。 此后用A表示原始A經過降維處理之后的近似矩陣
===> 這里可以變化如下 A = T S D', 其中T就是上式中的U, D就是上式中的V; T表示term, D表示Document
===> A中兩個行向量點乘的值表示兩個詞在文檔中共同出現的程度。 因此矩陣A*A'就可以得到所有詞與詞的相似程度
===> A*A' = TSD'*DS'T' = TS*(TS)'; 因此AA'的(i,j)元素, 就可以用TS的第i行與第j行來表示。 TS的行看作是term的坐標,就是潛在語義空間的坐標
===> A'*A = DS'T'*TSD' = DS*(DS)';========================================================DS的行看做為doc的坐標
4) 文本檢索
4.1) 根據輸入串,得到詞頻列向量 Q
4.2) 計算Dq = Q'TS",得到該查詢串表示的文檔在語義空間的坐標。?????? S"表示S的逆矩陣; Dq為 1*k矩陣。。是個行向量
4.3) 應該是Dq與DS的行向量計算夾角.? OOO4.3) 計算Dq與降維后的近似矩陣A的列向量之間的夾角來判斷相似性OOO。
?
=============================================================================
衡量兩個詞的近似程度: A * A' = TS *(TS)'
衡量兩個文檔的近似程度:A' * A = DS *(DS)'
衡量詞與文檔的相關程度: A = TSD' = TSh *(DSh)',? Sh表示S的1/2次方
TS, t*k矩陣,term在語義空間中的坐標; t為term個數
DS,d*k矩陣,docs在語義空間中的坐標; d為docs個數
?
總結