MULTI-VIEW-DNN联合了多个域做的丰富特征,使用multi-view DNN模型构建推荐,包括app、新闻、电影和TV,相比于最好的算法,老用户提升49%,新用户提升110%。并且可以轻松的涵盖大量用户,解决冷启动问题。
主要做user embedding的过程,通多用户在多个域的行为作为一个ivew,来表征用户,参与用户embedding过程。
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 |
deep structured semantic model参考Learning deep structured semantic models for web search using clickthrough data。
结构图:
其中:
通过word hashing层将word映射为稠密向量。以good为例。
这种方法即使有新词出现,也不会出现问题。
对于一次搜索,如果点击了一个文档,认为他们是相关的。对于搜索查询集,DSSM去最大化被点击文档D^+ 的条件似然概率**。
其中D是全集,\gamma 是平滑因子。损失函数自然就是:
对于User view,计算User View和Item View之间的P(IV_i|UV) ,然后最小化:
其中P()定义为:
对于第j行输入数据,它的主域X_{u, j} 和一个激活View X_{a, j} ,其余的View输入X_{i:i \not= a} 都为0向量。
news article clicks:
App download histories:
movie/TV view history
训练目标:
原文公式:
训练目标:
最小化L()为目标得到W_u, W_1,... W_v ,即网络的参数矩阵。
对于user features,选取top-k最频繁的features。并通过TF-IDF过滤掉最常用的特征。
k-mean会指定k为类簇的个数,目标是最小化所有类簇点与中心点的距离只和。公式表达:
其中X_i 是数据点,C_j 是每个类簇的中心。通过K-means对相似的特征群分组为同一个cluster并生成新的特征,共生产k个新的特征。
应用:
对于输入数据矩阵X,shape=[size=n, dimension=k],划分为X=[f_1, f_2…, f_k] ,然后将每个f_k 归一化,对[f_1, f_2…, f_k] 使用k-means聚类,f_i 之间计算距离用cos相似度。然后就可以将特征降维到k维,对于每个新的特征向量Y_i, 1\leq i \leq n, 1 \leq Cls(a) \leq k 有:
比如原始维度是3.5M,设置k=10k,那么将为之后维度就是10k。
通过一个随机的矩阵将数据映射到低纬向量空间上,并且保持原始空间上的pairwis cos距离在新的空间上仍然获得保留。
原始维度d,降维到k,那么映射矩阵A \in R^{d \times k} ,即A包含了k个映射,每个映射A_i 都将X映射为Y_i ,输出为Y \in R^k 。计算Y_i 的公式为:
计算X_1, X_2 的cos相似度近似表示为:
,其中H(Y_1, Y_2) 表示汉明距离,论文选取的k=10000.
每个用户在每个域都有大量的日志数据,将每个用户在每个域只选取一个user-item对,具体为用户特征-用户在此域喜欢的所有item的平均分数。
本文提出了一种通用的结合丰富用户特征和item特征的推荐系统框架,通过结合多个域的丰富信息,是的推荐系统的质量极大提高,并且此方法通过降维的方法可扩展到大的数据集,同时对于老用户和新用户都适用推荐,在几个公开的大数据集上的表现都明显优于其他方法。
此框架可以应用于各个推荐系统,未来还需要:
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
代码: https://github.com/liaha/dssm
keras实现