本文内容来自于论文:Tag recommendations based on tensor dimensioanlity reduction
在社会标签系统中,存在三元关系,用户-物品-标签。这些数据最直观的表示方式是三维数组(张量)。
论文小例子的设定如下图,
用户1 对 物品1 打的标签是 T1(IBM 电脑),
用户2对 物品1 打的标签是 T1(IBM 电脑)
其他类似,不赘述。
设定标注过的对应位置为1,没标注的为0。则上图的数据可以表示成一个三阶稀疏张量(sparse tensor)。
使用tucker分解中的一个特殊情形HOSVD(tucker分解和HOSVD 不同在于 HOSVD 要求 因子矩阵是 正交的)
关于HOSVD,可以直接看Tensor Decomposition and Application 这篇论文。(这是关于张量分解的 综述论文,非常经典)
MATLAB tensor toolbox 实现
%%%Paper: Tag Recommendations based on Tensor Dimensionality Reduction
A = zeros([3 3 3]);
A(1,1,1)=1;
A(2,1,1)=1;
A(2,2,2)=1;
A(3,3,3)=1;
A = tensor(A);
% tucker decomposition
result = tucker_als(A,[2,3,3]);
% tensor recovery
A_hat = ttm( result.core ,{ result.U{1} , result.U{2} , result.U{3} });
disp(A_hat);
tucker_als()方程能对稀疏张量分解,参数[2 3 3],意思是认为 在人这个维度上秩为2,就是说有3个人,但只有2种人。其他维度都是满秩的。当然,你也可以自行设置各个维度的参数。
再使用张量的n-模乘 ttm() ,恢复张量$ hat{A} $。结果如下:
在标签2下用户1对物品2的正反馈为0.44。 说明在这个标签2 (Apple Computer)下,该给他推荐商品2。
张量恢复可以用来进行多模式推荐,例如向用户推荐物品,向用户推荐标签...
从用户-物品的角度看,通过HOSVD我们向喜欢IBM电脑的用户推荐了Apple 电脑。
本文张量图形来自于: https://blog.csdn.net/zd836614437/article/details/51601720