什么是好的推荐系统

推荐系统一般有两种:一种是预测用户评分,另外是给出TopN,但后者会更频繁更有用。因为预测分数并不能怎么样。“重点是他看了,而不是评价”。下面都以TopN为主。

衡量推荐系统有四个基本指标:

  • 准确率:

  • 召回率:

  • 覆盖率:对长尾物品的挖掘能力,所有用户的推荐总列表,占所有商品的比例,可以看出,K越大,覆盖率一定越高

  • 流行度:

更高级别的:

  • 新颖度: 这会让人眼前一亮,但很难通过离线计算获得,通常都用用户问卷。

现在主流推荐算法都有马太效应:强者越强,弱者越弱,会造成基尼系数的进一步提升。

距离和基于图的算法

基于距离的算法

用户购买的物品,可以记做矩阵。就有了ItemCF和UserCF,即常用的协同过滤。简单说,购买了相似物品的用户越相似,被用户同时购买的商品更相似。

对大部分东西的热度曲线,都呈现长尾效应:指数曲线。占20%的物品占据了80%的流量。越是重度用户,越会关心那些冷门的信息。

UserCF的推荐更社会化, 反映了用户在小型团体中兴趣的程度;和自己相似的人喜欢的,自己也喜欢。 ItemCF的推荐更个性化,反映了用户自己的兴趣:一定会喜欢购买类似的商品。

算法看似简单,但都有共同的问题,比如物品和物品是不同的,新华字典的信息量肯定没有《机器学习》来得大;人和人也是不同的,一个书商购书行为,也和普通的文艺青年有所区别。因此,需要特别去调整频繁用户/物品的权重,避免污染整个数据集。

另外,如果物品特别多或更新频繁,就去更新用户矩阵。而若用户特别多,则可用物品矩阵。简而言之,没有最合适的方法,都需要根据具体业务场景来定义规则。

K值越大,需要考虑的用户和商品就越多,显然,对UserCF,可以提升覆盖率,但不一定能提升召回。对ItemCF, K越大会降低覆盖率(为什么?)。
选择一个合适的K很重要。ItemCF的好处是其可解释性。

基于隐语义的算法

简单说,如果用户之前喜欢科技类书籍,那么就可以给他打标签,科技,之后即可推荐科技类书籍。

但问题是:

  • 不是所有的书籍都有准确的分类,比如数学or计算机

  • 分类很难提供准确的粗细粒度

  • 甚至不一定有合适的分类标签

这就是隐语义,可以通过类似聚类的方法,将Item做分类,但标签不一定是可解释的,也就是所谓的“隐”,即LFM。

LFM通过如下公式计算用户对某个商品的兴趣:

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式