推荐系统

推荐系统评价标准

准确度:打分系统,top N推荐
覆盖率:表示对物品长尾的发掘能力
多样性:表示推荐列表中物品两两之间的不相似性
新颖度:给用户suprise
惊喜度:推荐和用户历史兴趣不相似,却满意的
信任度:提供可靠的推荐理由
实时性:实时更新程度

基于内容的推荐

分析内容,上下文,无需考虑用户行为。为要推荐的内容,建立一份资料,比如词在文件中的权重,常用方法是tf-idf,然后为用户也建立一份资料,比如定义一个权重向量,表示某个词对用户的重要程度,最后使用距离公式计算匹配度。

协同过滤

User-based CF:找到和用户最近的其他用户,找到他们看过或者买过的,但是当前用户没有看过或者买过的item,根据距离加权打分,找到最高的推荐。
Item-based CF:根据用户对商品/内容的行为,计算item和item相似度,找到和当前的item最近的推荐。
这里写图片描述

优点

基于用户行为,对推荐内容无需先验知识
只需要用户和商品关联矩阵就行,结构简单
在用户行为丰富的情况下,效果好

缺点

需要大量显性/隐形的用户行为
需要通过完全相同的商品关联,相似的不行
假定用户的兴趣完全取决于之前的行为,而和当前的上下文环境无关
在数据稀疏的情况下受影响

矩阵分解与隐语义模型

隐语义模型:有用户评分矩阵,但是有一些位置是空着的,我们要做的时,尽量填满未打分的项,预测得分。cf协同过滤解释性强,但是隐语义模型能更好的挖掘用户和item关联中的隐藏因子。
需要进行矩阵分解,首先会想到SVD奇异值分解,将mxn的矩阵转换成mxr X rxr X rxn的形式,但是SVD的时间复杂度是0(m3),而且原矩阵缺失值太多。最简单的方法就是直接矩阵分解。
矩阵分解原理
假设由U个用户,D个item,R为打分矩阵
假设有K个隐含变量,我们需要找到矩阵P(U*K)和Q(D*K):

RPQT=R̂    r̂ ij=pTiqj=k=1kpikqkj

目标找到最佳的P,Q,使用梯度下降,求解梯度,加正则化项,迭代更新,再还原回矩阵乘积,即可补充未打分项。

加bias的的隐语义模型,加上其他权衡:

rxi=μ+bx+bi+qipx

μ : overall mean rating bx :bias for user x bi :bias for movie i
矩阵分解有很多现成的库,比如libmf, svdfeature等。
spark mllib中有一个ALS交替最小二乘实现了推荐:http://www.tuicool.com/articles/fANvieZ

word2vec在推荐中的应用

word2vec使用深度学习的方法,对中文分词之后的结果,在高维空间中映射成特征向量,通过向量之间的距离,判断两个词的关联度。
在推荐中,可以把用户的行为序列当做分词后的phrase,给word2vec学习,根据商品映射得到的特征向量去找相似的商品。本质上是一种item-based CF,但是覆盖率会更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值