把SVD中的聚类思想,运用在的寻找不同领域user/item之间的mapping关系。(同一聚类,即mapping关系,1对多)

本文的核心是,寻找两个不同领域之间用户或者物品之间的mapping关系。在找到这种mapping关系之后,再在Cross-domain矩阵分解的基础上添加相关的约束:restrict the latent factors of matchecd users/items to be the same, i.e.,  欧式距离尽可能小,如下:

本文另外一个主要工作是,如何建立mapping?核心解决思路如下:

先利用一般矩阵分解MF求得$\hat{R}_1$ 和 $\hat{R}_2$, 然后利用分解后的矩阵P和Q以及上面Eq. 1,可以构建如下关系:

其中Z1和Z2是可以直接求出的(在此之前还通过奇异值分解建立了P,Q同U,D之间的联系),然后根据G的特性,每一行只有几个元素为1,其他为0(其实是聚类的概念,详见CodeBook中的分析),就可以通过search的方式求得G。(注意,以上的G的确定是根据Eq1进行的),在确定Eq1中的G后,再通过调整(refine)G,确定Eq2 中的G。(文中说Eq1中的G的作用是a good initizlization of G in Eq 2).

具体的refine的方法是:

把G in Eq1带入Eq2,(注意G in Eq1,每行其实有多个1,即多个候选近邻,此时要尽可能的近似于R,所有再筛选一次,确定每行只有一个1的G)

再确定G后,就可以根据G中的mapping关系,把约束加到最终的cross-domain分解目标函数中。

 



留言

登录 请先登陆, 再留言!