因为毕业论文和小论文的原因,必须要研究推荐算法,对于我来说,入门是一件很痛苦的事情,但是推荐算法是必须要掌握的。所以把自己学习的点点滴滴来记录下来。
书名:推荐系统实践 人民邮电出版社
第一章:推荐系统评测指标
a、用户满意度
只能通过用户调查或者在线实验获得
在在线系统中,用户满意度可以通过对用户行为的统计获得,比如:推荐商品的购买率,或者用户反馈界面来收集用户满意度。点击率,用户停留时间和转化率等也是可以的。
b、预测准确度
离线数据集分为训练集和测试集,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和实际行为的重合度作为预测准确度。
准确度的计算:
均方根误差(RMSE) 平均绝对误差(MAE)
TopN推荐:
通过率(precision)/召回率(recall)
c、覆盖率
推荐系统能够推荐出来的物品占总物品集合的比例
d、其他:信任度 多样度 新颖度 实时度 健壮度
总结:评测维度
1)用户维度:主要包括用户的人口统计学信息,活跃度以及是不是新用户等
2)物品维度:包括物品的属性信息,流行度、平均分以及还不是新加入的物品等
3)时间维度:包括季节,工作日还是周末,是白天还是晚上等等。
第二章:用户行为数据
用户行为的统一表示
user id 产生行为的用户的唯一标识
item id 产生行为的对象的唯一标识
behavior type 行为的种类(购买还是浏览)
context 产生行为的上下文,包括时间和地点等
behavior weight 行为的权重(如果是观看视频的行为,那么这个权重可以是观看时长)
behavior content 行为的内容 标签活评论
用户行为有隐性和显性之分
1、仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。有各种分类。
基于用户的协同过滤算法:为用户推荐和他兴趣相似的其他用户喜欢的物品
(1)找到和目标用户兴趣相似的用户集合
(2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
UserCF算法只有一个重要的参数K,即为每个用户选出K个和他兴趣相似的用户,然后推荐那K个用户感兴趣的物品。对比准确率,召回率、流行度和覆盖率。因为两个用户对冷门物品采取过同样的行为才能说明他们兴趣的相似度,因此算法的改进里面惩罚了两人共同列表中的热门商品。
在算法中,
基于物品的协同过滤算法:为用户推荐和他之前喜欢的物品相似的物品
处理权重时注意:
1、热门物品的归一化
2、关于物品的分类
需要考虑这些问题:如何分类 如何确定用户对哪类物品感兴趣,以及感兴趣的程度 如何确定某物品在该类中占的权重
缺点:1、编辑的意见不能带到各种用户的意见 2、编辑很难控制分类的粒度 3、编辑很难给出多维度的分类
显示反馈 与隐性反馈(即没有产生过行为的物品作为负样本)
LFM:隐语义模型和基于邻域的方法(UserCF和ItemCF)
第三章:推荐系统冷启动问题
1、用户冷启动问题
A、人口统计学信息:年龄 性别 职业 民族 学历和居住地:根据统计属性进行分类
B、用户兴趣的描述:用文字描述他们的兴趣选择
选择合适的物品启动用户兴趣:
步骤:1、选择大概的分类,以扩大覆盖面积 2、比较热门的物品,这样才能保证用户是见过的 3、具有代表性和区分性
C、从其他网站导入的用户站外行为数据:豆瓣新浪QQ等
D、利用物品的内容信息
对于物品d,他的内容表示成一个关键词向量如下:d={(e1,w1),(e2,w2)}
第四章:利用用户标签数据
标签应用一般分为两种:一种是让作者或者专家给物品打标签,另一种是让普通用户给物品打标签,也就是UGC的标签应用。用户每一次达标签行为都用一个三元组表示:(用户、物品、标签)
在实际实现时,可以为用户推荐标签,以方便用户输入同时提高标签质量