1. 程式人生 > >matlab tensor toolbox 實現HOSVD(高階奇異值分解)推薦系統

matlab tensor toolbox 實現HOSVD(高階奇異值分解)推薦系統

matlab需要先匯入tensor toolbox
1.輸入一個張量
這裡寫圖片描述

A(: , : ,1)=[1,0,0;1,0,0;0,0,0];
A(: , : ,2)=[0,0,0;0,1,0;0,0,0];
A(: , : ,3)=[0,0,0;0,0,0;0,0,1]
A=tensor(A);

2、張量沿mode-n展開

這裡寫圖片描述

A1=tenmat(A,1);
A2=tenmat(A,2);
 A3=tenmat(A,3);

3、對展開的矩陣進行奇異值分解

[U1,V1,W1]=svd(A1.data);
 [U2,V2,W2]=svd(A2.data);
 [U3,V3,W3]=svd(A3.data);

4、對左奇異矩陣進行減噪

去掉矩陣第三列:U1(:,3)=[]

5、構造核心張量
這裡寫圖片描述

S=ttm(A,{U1',U2',U3'})

6、構造目標張量
這裡寫圖片描述

A=ttm(S,{U1,U2,U3})

最終結果:

這裡寫圖片描述