matlab tensor toolbox 实现HOSVD(高阶奇异值分解)推荐系统

matlab需要先导入tensor toolbox
1.输入一个张量
matlab tensor toolbox 实现HOSVD(高阶奇异值分解)推荐系统_第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展开

matlab tensor toolbox 实现HOSVD(高阶奇异值分解)推荐系统_第2张图片

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})

最终结果:

matlab tensor toolbox 实现HOSVD(高阶奇异值分解)推荐系统_第3张图片

你可能感兴趣的:(matlab tensor toolbox 实现HOSVD(高阶奇异值分解)推荐系统)