美文网首页Python文集
基于内容的推荐系统

基于内容的推荐系统

作者: 雪茸川 | 来源:发表于2018-09-04 10:15 被阅读238次

    三个部分:描述用户特征, 描述物品特征, 匹配用户和物品特征

    新闻过滤领域:

    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 的基于内容的推荐系统
    论文介绍了基于内容的基本流程

    1. 文本特征化
    2. 特征选择
    3. 特征权重
    4. 训练分类器
    5. 预测与度量 调参

    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的收集器,还有热门排行收集器,平均用户画像收集器

    相关文章

      网友评论

        本文标题:基于内容的推荐系统

        本文链接:https://www.haomeiwen.com/subject/yqyguftx.html