推荐系统实战

来源:互联网 发布:信贷团队口号,知乎 编辑:程序博客网 时间:2024/04/30 19:08

什么是好的推荐系统

  • 推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动 查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。
  • 推荐系统是为了解决信息过载而推出的
  • 推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己 有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息 生产者的双赢
  • 主流商品往往代表了绝大多数用户的需求,而长尾商品往往代表了一小部分用户的个性化需求。因此,如果要通过发掘长尾提高销售额,就必须充分研究用户的兴趣,而这正是 个性化推荐系统主要解决的问题。
  • 推荐系统通过发掘用户的行为,找到用户的个性化需求,从而 将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。
  • 推荐系统包括社会化推荐(social recommendation),即让好 友给自己推荐物品。基于内容的推荐 (content-based filtering),。这种方式称为基于协同过滤(collaborative filtering) 的推荐。
  • 推荐算法的本质是通过一定的方式将用户和物品联系起来
  • 首先,推荐系统需要满足用户的需求;其次,推荐系统要 让各出版社的书都能够被推荐给对其感兴趣的用户;好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐的质量,增加 用户和网站的交互,提高网站的收入
  • 好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户 发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将 那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户
  • 好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户 发现那些他们可能会感兴趣,但却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将 那些被埋没在长尾中的好商品介绍给可能会对它们感兴趣的用户
  • 推荐系统的评测指标包括包括准确度、覆盖度、新颖度、惊喜度、信任度、透明度等。
  • 在推荐系统 中,主要有3种评测推荐效果的实验方法,即离线实验(offline experiment)、用户调查(user study) 和在线实验(online experiment)

UserCF与ItemCF

  • UserCF
    这里写图片描述
  • ItemCF
    这里写图片描述

  • K是影响准确率的重要因素

  • UserCF的使用不及ItemCF流行
  • K越大,两者的覆盖率均降低
  • K越大,UserCF流行度降低而ItemCF则不一定
  • UserCF的推荐更社会化,反映了用户所在的 小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。
  • UserCF比较适合个性化新闻推荐,UserCF可以给用户推荐和他有相似爱好的一群其他用户今天都在看的新闻,这样在抓住热 点和时效性的同时,保证了一定程度的个性化。
  • 从技术上考虑,UserCF需要维护一个用户相似度的矩阵,而ItemCF需要维护一个物品 相似度矩阵。从存储的角度说,如果用户很多,那么维护用户兴趣相似度矩阵需要很大的空间, 同理,如果物品很多,那么维护物品相似度矩阵代价较大。
    这里写图片描述

LFM隐语义模型

  • 在LFM中,重要的参数有4个:  隐特征的个数F;  学习速率alpha;  正则化参数lambda;  负样本/正样本比例 ratio。 通过实验发现,ratio参数对LFM的性能影响最大
  • 用户相关表,则需要O(M*M)的空间,而对于物品相关表,则需要O(N*N)的空 间。而LFM在建模过程中,如果是F个隐类,那么它需要的存储空间是O(F*(M+N)),这在 M和N很大时可以很好地节省离线计算的内存
  • 在一般情况下,LFM的时间复杂度要 稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。但总体上,这两种算法 在时间复杂度上没有质的差别。
  • LFM不 能进行在线实时推荐,ItemCF算法支持很好的推荐解释,它可以利用用户的历史行为解释推荐结果。 但LFM无法提供这样的解释,它计算出的隐类虽然在语义上确实代表了一类兴趣和物品, 却很难用自然语言描述并生成解释展现给用户
    这里写图片描述

冷启动问题

  • 如何在没有 大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统, 就是冷启动的问题。
  • 冷启动问题(cold start)主要分3类:
    (1) 用户冷启动 用户冷启动主要解决如何给新用户做个性化推荐的问题。 当新用户到来时, 我们没有他的行为数据,所以也无法根据他的历史行为预测其兴趣,从而无法借此给他 做个性化推荐。
    (2) 物品冷启动 物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题。
    (3) 系统冷启动 系统冷启动主要解决如何在一个新开发的网站上(还没有用户,也没有用 户行为,只有一些物品的信息)设计个性化推荐系统,从而在网站刚发布时就让用户体 验到个性化推荐服务这一问题。

  • 对于这3种不同的冷启动问题,有不同的解决方案。一般来说,可以参考如下解决方案:
    (1)提供非个性化的推荐 非个性化推荐的最简单例子就是热门排行榜,我们可以给用户推 荐热门排行榜,然后等到用户数据收集到一定的时候,再切换为个性化推荐。
    (2) 利用用户注册时提供的年龄、性别等数据做粗粒度的个性化。  利用用户的社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然 后给用户推荐其好友喜欢的物品。
    (3) 要求用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户 推荐那些和这些物品相似的物品。 一般情况下,这些物品的特点是:a、比较热门 b、具有代表性和区分性才c、启动物品集合需要有多样性。(其中Nadav Golbandi的算法首先会从所有用户中找到具有最高区分度的物品i,然后将用户分成3 类。然后在每类用户中再找到最具区分度的物品,然后将每一类用户又各自分为3类,也就是将 总用户分成9类,然后这样继续下去,最终可以通过对一系列物品的看法将用户进行分类。而在 冷启动时,我们从根节点开始询问用户对该节点物品的看法,然后根据用户的选择将用户放到不 同的分枝,直到进入最后的叶子节点,此时我们就已经对用户的兴趣有了比较清楚的了解,从而 可以开始对用户进行比较准确地个性化推荐。 )
    (4) 对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和它们相似的物品的用户。 UserCF算 法对物品冷启动问题并不非常敏感。当一个新物品加入时,总会有用户从某些途径看到这些物品,对这 些物品产生反馈。那么,当一个用户对某个物品产生反馈后,和他历史兴趣相似的其他用户的推 荐列表中就有可能出现这一物品,从而更多的人就会对这个物品产生反馈,解决第一推动力 最简单的方法是将新的物品随机展示给用户,但这样显然不太个性化,因此可以考虑利用物品的 内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户;对于ItemCF算法来说,物品冷启动就是一个严重的问题了。因为ItemCF算法的原理是给用户 推荐和他之前喜欢的物品相似的物品。ItemCF算法会每隔一段时间利用用户行为计算物品相似度 表(一般一天计算一次),在线服务时ItemCF算法会将之前计算好的物品相关度矩阵放在内存中。 因此,当新物品加入时,内存中的物品相关表中不会存在这个物品,从而ItemCF算法无法推荐新 的物品。解决这一问题的办法是频繁更新物品相似度表,但基于用户行为计算物品相似度是非常 耗时的事情,主要原因是用户行为日志非常庞大。而且,新物品如果不展示给用户,用户就无法 对它产生行为,通过行为日志计算是计算不出包含新物品的相关矩阵的。为此,我们只能利用物 品的内容信息计算物品相关表,并且频繁地更新相关表(比如半小时计算一次)。
    (5) 在系统冷启动时,可以引入专家的知识,通过一定的高效方式迅速建立起物品的相关度表。

用户标签数据

  • 根据给物品打标签的人的不同,标签应用一般分为两种:一种是让作者或者专 家给物品打标签;另一种是让普通用户给物品打标签
  • 标签系统中的推荐问题主要有以下两个:
    (1)如何利用用户打标签的行为为其推荐物品(基于标签的推荐)
    (2)如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)
  • 基于标签的推荐:
    这里写图片描述
  • 标签稀疏性的问题,存在标签过少影响推荐的情况。可以加入与已有标签类似的标签,标签相似度的度量方法:
    这里写图片描述
  • 标签的推荐:
    第0种方法就是给用户u推荐整个系统里最热门的标签;
    第1种方法就是给用户u推荐物品i上最热门的标签;
    第2种方法是给用户u推荐他自己经常使用的标签;
    第3种算法是前面两种的融合;
0 0
原创粉丝点击