您的位置:首页 > 编程语言 > MATLAB

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

2016-04-19 19:39 1866 查看
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)=[]

去掉矩阵第三行:U1(3,:)=[]

5、构造核心张量



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

6、构造目标张量



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

最终结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: