专栏首页null的专栏『 DSSM』A Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems

『 DSSM』A Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems

Abstract

MULTI-VIEW-DNN联合了多个域做的丰富特征,使用multi-view DNN模型构建推荐,包括app、新闻、电影和TV,相比于最好的算法,老用户提升49%,新用户提升110%。并且可以轻松的涵盖大量用户,解决冷启动问题。

主要做user embedding的过程,通多用户在多个域的行为作为一个ivew,来表征用户,参与用户embedding过程。

Contribution

  1. 利用丰富的用户特征,建立多用途的用户推荐系统。
  2. 针对基于内容的推荐,提出了一种深度学习方法。并学习不同的技术扩展推荐系统。
  3. 结合不同领域的数据,提出了Multi-View DNN模型建立推荐系统。
  4. multi-view DNN模型解决用户冷启动问题。
  5. 基于四个真实的大规模数据集,通过严格的实验证明所提出的推荐系统的有效性。

Data Set

Type

DataSet

UserCnt

FeatureSize

Joint Users

User view

Search

20M

3.5M

/

Item View

News Apps Movie/TV

5M 1M 60K

100K 50K 50K

1.5M 210K 60K

DSSM FOR USER MODELING IN RECOMMENDATION SYSTEMS

deep structured semantic model参考Learning deep structured semantic models for web search using clickthrough data

结构图:

  1. 把条目映射成低维向量。
  2. 计算查询和文档的cosine相似度。

其中:

l1=W1xl1=W1x

l_1 = W_1 x

li=f(Wili−1+bi),i=2,...,N−1li=f(Wili−1+bi),i=2,...,N−1

l_i = f(W_i l_{i-1} + b_i), i=2,..., N-1

y=f(WNlN−1+bN)y=f(WNlN−1+bN)

y = f(W_N l_{N-1} + b_N)

word hashing

通过word hashing层将word映射为稠密向量。以good为例。

  1. 添加首尾标记: #good#
  2. 拆分word为n-grams: #go, goo, ood, od#
  3. 通过多个小的n-grams的向量表示word。

这种方法即使有新词出现,也不会出现问题。

DSSM训练

对于一次搜索,如果点击了一个文档,认为他们是相关的。对于搜索查询集,DSSM去最大化被点击文档D+D+D^+的条件似然概率**。

P(D+|Q)=exp(γR(Q,D+))∑D′∈Dexp(γR(Q,D′))P(D+|Q)=exp(γR(Q,D+))∑D′∈Dexp(γR(Q,D′))

P(D^+|Q) = \frac{exp(\gamma R(Q, D^+))}{\sum_{D^\prime \in D} exp(\gamma R(Q,D^\prime))}

其中D是全集,γγ\gamma是平滑因子。损失函数自然就是:

L(W,b)=−log∏(Q,D+)P(D+|Q)L(W,b)=−log∏(Q,D+)P(D+|Q)

L(W,b) = -log \prod_{(Q, D^+)} P(D^+|Q)

MULTI-VIEW DEEP NEURAL NETWORK

对于User view,计算User View和Item View之间的P(IVi|UV)P(IVi|UV)P(IV_i|UV),然后最小化:

L(W,b)=−log∏(UV,IV+)P(IV+i|UV)L(W,b)=−log∏(UV,IV+)P(IVi+|UV)

L(W,b) = -log \prod_{(UV, IV^+)} P(IV^+_i|UV)

其中P()定义为:

P(IV+|UV)=exp(γcos(UV,IV+))∑IV′∈IVexp(γcos(UV,IV′))P(IV+|UV)=exp(γcos(UV,IV+))∑IV′∈IVexp(γcos(UV,IV′))

P(IV^+|UV) = \frac{exp(\gamma cos(UV, IV^+))}{\sum_{IV^\prime \in IV} exp(\gamma cos(UV,IV^\prime))}

Data input

对于第j行输入数据,它的主域Xu,jXu,jX_{u, j}和一个激活View Xa,jXa,jX_{a, j},其余的View输入Xi:i≠aXi:i≠aX_{i:i \not= a}都为0向量。

User features

  • search queries:规范化,然后处理成unigram格式。
  • clicked URLs:只保留主域名,如www.linkdin.com

News features

news article clicks:

  1. title( tri-gram)
  2. top-level category(binary features)
  3. named entities

App features

App download histories:

  1. App tile( tri-gram)
  2. category(binary)

Movie/TV feature

movie/TV view history

  1. title( tri-gram)
  2. description( tri-gram)
  3. genre(binary)

训练过程

训练目标:

原文公式:

p=argmaxWu,W1,...Wv∑j=1Nexp(γacos(Yu,Ya,j))∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))p=argmaxWu,W1,...Wv∑j=1Nexp(γacos(Yu,Ya,j))∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))

p=arg\max_{W_u, W_1,... W_v} \sum^N_{j=1} \frac{exp(\gamma_a cos(Y_u, Y_{a, j}))}{\sum_{X^\prime \in R^{d_a}} exp(\gamma_a cos(Y_u,f_a(X^\prime, W_a))}

训练目标:

L(Wu,W1,...Wv)=∑j=1Nexp(γacos(Yu,Ya,j))∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))L(Wu,W1,...Wv)=∑j=1Nexp(γacos(Yu,Ya,j))∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))

L(W_u, W_1,... W_v) = \sum^N_{j=1} \frac{exp(\gamma_a cos(Y_u, Y_{a, j}))}{\sum_{X^\prime \in R^{d_a}} exp(\gamma_a cos(Y_u,f_a(X^\prime, W_a))}

最小化L()为目标得到Wu,W1,...WvWu,W1,...WvW_u, W_1,... W_v,即网络的参数矩阵。

MV-DNN优势

  1. 和DSSM相比,其query和doc的feature是一样长的维度,使用同样的预处理,限制了feature。而跨域信息feature往往不同,而且n-gram方法并不适用,所以MV-DNN结合其类别特征(如电影和app类别,地理位置等)。
  2. MV-DNN可以结合多个跨域信息,实现对user embedding。pair-wise training过程,user-item pairs。

降维方法

top features

对于user features,选取top-k最频繁的features。并通过TF-IDF过滤掉最常用的特征。

k-means

k-mean会指定k为类簇的个数,目标是最小化所有类簇点与中心点的距离只和。公式表达:

argminC1,C2,…Ck∑i=1NminCj∈{C1,C2…,Ck}distance(Xi,Ci)argminC1,C2,…Ck∑i=1NminCj∈{C1,C2…,Ck}distance(Xi,Ci)

arg \min_{C_1,C_2,…C_k} \sum_{i=1}^N \min_{C_j \in {\{C_1, C_2…,C_k\}}} distance(X_i, C_i) 其中XiXiX_i是数据点,CjCjC_j是每个类簇的中心。通过K-means对相似的特征群分组为同一个cluster并生成新的特征,共生产k个新的特征。

应用:

对于输入数据矩阵X,shape=[size=n, dimension=k],划分为X=[f1,f2…,fk]X=[f1,f2…,fk]X=[f_1, f_2…, f_k],然后将每个fkfkf_k归一化,对[f1,f2…,fk][f1,f2…,fk][f_1, f_2…, f_k]使用k-means聚类,fifif_i之间计算距离用cos相似度。然后就可以将特征降维到k维,对于每个新的特征向量Yi,1≤i≤n,1≤Cls(a)≤kYi,1≤i≤n,1≤Cls(a)≤kY_i, 1\leq i \leq n, 1 \leq Cls(a) \leq k有:

Yi(j)=∑a:Xi(a)>0&Cls(a)=jfi(a)Yi(j)=∑a:Xi(a)>0&Cls(a)=jfi(a)​

Y_i(j) = \sum_{a:X_i(a)>0 \& Cls(a)=j} f_i(a)​

比如原始维度是3.5M,设置k=10k,那么将为之后维度就是10k。

Local sensitive Hashing

通过一个随机的矩阵将数据映射到低纬向量空间上,并且保持原始空间上的pairwis cos距离在新的空间上仍然获得保留。

原始维度d,降维到k,那么映射矩阵A∈Rd×kA∈Rd×kA \in R^{d \times k},即A包含了k个映射,每个映射AiAiA_i都将X映射为YiYiY_i,输出为Y∈RkY∈RkY \in R^k。计算YiYiY_i的公式为:

Yi={10ifAiX≥0elseYi={1ifAiX≥00else

Y_i = \left\{ \begin{aligned} 1 & & if A_i X \ge 0 \\ 0 & & else \end{aligned} \right. 计算X1,X2X1,X2X_1, X_2的cos相似度近似表示为:cos(H(Y1,Y2)kπ)cos(H(Y1,Y2)kπ)cos(\frac{H(Y_1, Y_2)}{k} \pi),其中H(Y1,Y2)H(Y1,Y2)H(Y_1, Y_2)表示汉明距离,论文选取的k=10000.

Reduce the Number of Training Examples

每个用户在每个域都有大量的日志数据,将每个用户在每个域只选取一个user-item对,具体为用户特征-用户在此域喜欢的所有item的平均分数。

CONCLUSION AND FUTURE WORK

本文提出了一种通用的结合丰富用户特征和item特征的推荐系统框架,通过结合多个域的丰富信息,是的推荐系统的质量极大提高,并且此方法通过降维的方法可扩展到大的数据集,同时对于老用户和新用户都适用推荐,在几个公开的大数据集上的表现都明显优于其他方法。

此框架可以应用于各个推荐系统,未来还需要: 1. 纳入更多的用户特征。 2. 增加DNN扩展性,以便不在使用特征降维的方法。 3. 加入更多的域并深入分析它的表现。 4. 如何将协同过滤方法和本文的基于内容的方法结合。

代码

DSSM & Multi-view DSSM代码 https://github.com/InsaneLife/dssm Multi-view DSSM实现,参考GitHub:multi_view_dssm_v3 CSDN原文:http://blog.csdn.net/shine19930820/article/details/78810984

Model DSSM on Tensorflow

代码: https://github.com/liaha/dssm

keras实现

Reference

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优化算法——牛顿法(Newton Method)

    一、牛顿法概述     除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法。牛顿法的基本思想是利用迭代点 ? 处的一阶导数(梯度)和二阶导数(...

    zhaozhiyong
  • 优化算法——牛顿法(Newton Method)

        除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法。牛顿法的基本思想是利用迭代点

    zhaozhiyong
  • UFLDL笔记——自我学习

    注:最近打算将UFLDL教程重新看一遍,其实里面有很多关于神经网络以及深度学习的知识点很有用,但是只是学习深度学习的话有一些内容就有点多余,所以想整理一个笔记,...

    zhaozhiyong
  • 【重磅】揭开高频交易神秘面纱

    大数据文摘
  • 做一个月薪3万的Linux云计算工程师的纠结与迷茫

    周末,相信刚打开微信公众号的你刚脱离了加班的疲惫在睡梦中刚刚醒来,确定或者不太确定你的Linux运维之路,而今天小编特地为你整理了一道周末的鸡汤《你的前景一片光...

    小小科
  • 一些让你敢到相见恨晚的Python库(一)

    作者:赖明星 链接: https://www.zhihu.com/question/24590883/answer/134253100 下面给大家推荐几个我用...

    小小科
  • coursera上有哪些值得学习的Python数据分析的课程?

    作者:程刚 链接:http://www.zhihu.com/question/36254617/answer/83998273 下面就讲讲我在course...

    机器学习AI算法工程
  • Geoffrey Hinton的“胶囊理论” 多语言实现代码、效果、论文解读

    https://github.com/XifengGuo/CapsNet-Keras

    用户1908973
  • 建一座安全的“天空城” ——揭秘腾讯WeTest如何与祖龙共同挖掘手游安全漏洞

    《九州天空城3D》上线至今,长期稳定在APP Store畅销排行的前五,本文将介绍腾讯WeTest手游安全团队在游戏上线前为《九州天空城3D》挖掘安全漏洞的全过...

    WeTest质量开放平台团队
  • 教程 | 十分钟教你重装系统

    打个比方,每个电脑就是一个机器人,每个系统以及启动盘都是不同的遥控器,电脑开机的时候会检索有几个遥控器,一般电脑会直接链接原来存在的系统这个遥控器,开机时按启动...

    课代表

扫码关注云+社区

领取腾讯云代金券