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

来源:互联网 发布:ccd对位算法 编辑:程序博客网 时间:2024/06/01 10:13

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

最终结果:

这里写图片描述

2 0
原创粉丝点击