三个部分:描述用户特征, 描述物品特征, 匹配用户和物品特征
新闻过滤领域:
NewsDude
实现了一个基于用户反馈的新闻代理软件,这个软件提供了新闻信息流,采用多线程,用户可以对信息流进行反馈操作,另一个线程则提供新闻队列供用户接下来阅读。
推荐引擎采用长期和短期推荐算法
短期模型
个人理解短期模型的作用是
- 确定用户短期喜好,并将这一时期用户反馈的商品,快速处理,展示给用户,明确用户的真实喜好(动态追踪用户兴趣变化)
- 在这一时期,用户接触过的商品不再展现给用户
建模和算法
采用TF-IDF算法将文本向量化,然后采用余弦相似度计算相似度
- 用户模型: 用户近期有过行为的文本的向量化
- 预测: 设定一个阈值t_min,用户模型中的文本所有和预测文本相似度大于这个阈值的文本,则就是一个voting 文本,然后求所有voting 文本的均值,作为预测评分。
同时设定一个阈值t_max 大于这个阈值的文本,被设定为known ,然后会乘一个常数k,k远小于1.如果预测文本没有任何voters, 将被传至长期模型
长期模型
采用多元伯努利贝叶斯模型(拉普拉斯平滑),对用户进行建模
长期模型涉及到一个贝叶斯模型的特征选取,本文是专业人士手工选取的200个特征
具体算法:
for d in {short_term_stories}:
if cosine_sim(d,u) > t_min:
voters.append(d)
if cosine_sim(d,u) > t_max:
known = True
if voters:
score = short_term_predict(u, voters)
if knows:
scores = score * k # k<<1.0
else:
if has{f1,f2, ... fn} to satisfy any fi, p{fi|c} > p{fi|!c}:
score = naive_bayes_predict(u, {all_stories})
else:
score = default
实验实现
采用数据为: 运用论文中开发的软件,收集的10个用户8天左右的3000条数据
实验方法:不同于传统的cv,本文将数据分成3个session,分成三次实验,第一次实验数据一个session预测下一个session,第二次为2个session预测下一个,以此类推。
评估标准:准确率和f1
Intimate
论文 intimate 的基于内容的推荐系统
论文介绍了基于内容的基本流程
- 文本特征化
- 特征选择
- 特征权重
- 训练分类器
- 预测与度量 调参
Fab
论文 fab 一个基于内容的协同过滤推荐系统
是一个用于推荐网页的推荐系统
大部分描述了 内容和协同各自的优缺点,然后大篇幅介绍fab
其中对于协同过滤的原理讲解的比较细 ,提到了协同过滤 中用户的负反馈可能不能及时得到有效的体现,因为是根据用户之间的相似度进行推荐 如果相似的用户的用户喜欢这个商品,那么依旧会给用户推荐这个商品。
论文中采取的结合方法是
先用内容分析找用户相似度,然后将这个相似度应用到协同过滤中 若协同过滤没有好的结果就降级至完全的内容推荐
如何根据内容分析找相似度:通过用户历史商品,特征提取然后根据特征计算相似值
文中提出的fab系统,提到了这个系统的整体构架,主要分为三部分选择器,收集器,中心路由
fab架构具体实现过程
- 对于网页推荐来说,物品就是网页,因此收集器需要不断地收集网页用来推荐,主要面对的是物品。
- 选择器则是用来为用户选择推荐的网页,主要面对的是用户。
- 中心路由是用来调度和实现协同过滤。
收集器和选择器内部都维护着自身的画像,收集器的画像是一个特殊的topic,选择器的画像则是一个单独用户的画像,比如目前用户喜欢的topics。
收集器通过自己的topic进行网页收集,将收集到的网页推送到中心路由中,选择器则负责从中心路由获取符合自身画像的网页。如何判别符合则是通过设定阈值,当网页的评分大于设定的阈值就认为符合。
ps:因为选择器是为每一个用户量身定制的,所以可以实现一些个性化操作。比如过滤掉该用户已经看过的网页。每十条推送中,添加其他topic中的网页,实现多样性。
用户反馈
用户在使用过程中的反馈是判断推荐效果的最佳方法,因为选择器的定制特性,因此可以用来收集每一个用户的反馈数据,也可以供其他应用使用。
一旦用户在请求,接受和查询推荐时,系统会要求用户对网页进行一个1-7分的评分。用户的反馈数据会被用来调整选择器的画像,也会回溯到推荐网页的收集器上,对该收集器的画像进行调整。
协同过滤
一旦用户反馈中出现得分较高的情况,会立刻将高分网站推荐到和该用户画像相似的相邻用户。这些推荐会像网页一样传递到中心路由,然后推荐至目标用户。
画像学习
精确的画像可以保证推荐的准确性,一方面保证基于内容推荐的网页要合适,另一方面确保协同过滤中计算的相邻用户的确是相似的。
收集器画像
收集器的画像展现了用户组兴趣的动态变化,而不是单一的用户。收集器的总体变化会跟着用户的人数进行调整。这种动态的调整由用户的反馈实现,对于不受欢迎的收集器,这些收集器收集的网页很少有人看,以及用户反馈评分均值很低的收集器,会被清除由反馈评分均值高的收集器的副本所取代。因此收集器的个性化可以不用提前来制定,而是随着系统的使用逐渐调整。
收集器种类
- search agent
- index agent
- popular agent
- average agent
实验
本文的实验就是通过11名用户使用fab系统,进行一些实验性的评估。
其中有一些关于系统的有趣特性,随着系统的逐渐使用,收集器的画像会逐渐朝着一个方向前进。举个例子,实验用户中有一个喜欢厨艺的用户,随着对系统的使用,其中一个收集器中的画像词组70%都是厨艺相关的词汇。这意味着通过系统的不断使用,可以挖掘出一些用户的重叠兴趣,也就是所谓的topic,比如音乐,艺术等这些大众分类
总结:这个系统证明通过不断的更替收集器可以达到个性化的效果,但是这需要时间的积累,在实际生活中用户的兴趣并不是像文中实验那样一成不变的。而且系统的评估指标十分模糊,可能在初期都达不到什么好的推荐效果,不过这个系统在一些方面还是有可取之处,比如将基于内容的推荐和协同过滤结合起来。而且文中有些细节解释得不是很清楚,比如用户的画像是如何生成的,还有用户反馈是如何反映到画像上的,都没有解释清楚。这篇文章只是介绍了大致的架构流程,并对系统的特性进行了一些说明,而且没有给出理论依据。
这个系统在架构设计上,设计出了收集器和选择器,将推荐系统的精髓很好的用几个组件表示了出来,而且通过用户的反馈优化收集器的设计也很出彩。总的来说,这个系统是在基于内容的推荐上,添加了协同过滤来提高推荐效果。其中选择器实现了收集用户兴趣和过滤的功能,收集器实现了收集物品和获得物品画像的功能,通过中心路由的调度,使系统可以稳定运行。
系统的改进方向,用户的兴趣漂移问题能否及时判断,不同的收集器之间的协调问题等。
其中提到收集器有一个机制,根据一个值貌似是中心评分值,不知道怎么算出来的,如果收集器没有达到这个值,就会被值高的收集器的副本取缔
收集器还有不同的种类,除了一些画像是topic的收集器,还有热门排行收集器,平均用户画像收集器
网友评论