美文网首页社区产品搜索系统
推荐系统实践-评测

推荐系统实践-评测

作者: 醉起萧寒 | 来源:发表于2017-02-08 15:28 被阅读874次

    此文是根据《推荐系统实践》部分整理而来。

    PART 1

    首先,最核心的问题是

    什么才是好的推荐系统?

    好的推荐系统需要考虑到三个参与方:

    • 用户方
    • 内容提供方
    • 产品方

    通常我们认知中认为一个好的推荐系统即是提供给用户想要的内容,但是同样要考虑到另外两方,总结起来就是三句话:

    • 用户能够获得感兴趣的内容
    • 内容能推送到对其感兴趣的用户
    • 系统能够获得良好的反馈和收益

    举例就是推荐一批书给用户,不仅用户能够获得感兴趣的书,每本书同样需要推送到对其感兴趣的用户手中。如果有一本书非常热门,大家都感兴趣,那么对用户方是满足了,但是内容提供方的其他书就没有获得推荐,这也是不成功的。

    PART 2

    其次,第二个问题是

    如何评测相关指标的数据?

    推荐系统主要分为三个实验方法

    • 离线实验
    • 用户调查(Q:如何在在线实验之前进行用户调查?)
    • 在线实验
    1. 离线实验

    离线实验的方法一般由如下的几个步骤构成:
    (1)通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
    (2)将数据集按照一定的规则分成训练集和测试集;
    (3)将训练集上训练用户兴趣模型,在测试集上进行预测;
    (4)通过事先定义的离线指标评测算法在测试集上的预测结果。
    优点:
    (1)不需要有对实际系统的控制权;
    (2)不需要用户参与试验;
    (3)速度快、可以测试大量算法。
    缺点:
    (1)无法计算商业上关心的指标,如点击率、转化率;(why?)
    (2)离线实验的指标和商业指标存在差距。

    2. 用户调查

    离线实验有个缺点:离线实验的指标和商业指标存在差距。

    比如用户满意度,离线实验可以计算出预测准确度等量化的指标,但是产品最终的目的是为了让用户满意,而用户满意度本身是一个很主观、无法量化的指标,要测试真实环境下的用户满意度(或者其他用户主观感受指标),就可以通过用户调查来获得。

    但是用户调查有很多点需要注意:
    (1)方式多样。主观的指标不能仅通过一种方式例如问卷来获得,得多个维度综合,所以调查的方式得多样化;
    (2)成本高。用户需要花时间,如果调查人数少,结论没有统计意义;如果人数多,成本就会非常高;
    (3)设计实验困难。首先,用户调查要保证是双盲实验,防止用户的主观感受受到影响;其次,用户群选择需要考虑到分布的随机,性别、年龄、活跃度都需要考虑到;
    (4)结果不稳定。本身主观的感受随着环境的变化而变化,用户因为任何额外因素都有可能改变主观感受,因此得到的结果本身不稳定,只具有部分参考价值。

    3. 在线实验

    在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试
    同样有几点需要注意:
    (1)AB test 的好处是显而易见的,可以公平获得不同算法实际在线时的性能指标;
    (2)AB test 和用户调查一样,同样需要考虑到分布的随机,尽量要将与最终指标有相关性的因素都列出来,总而言之就是切分流量是AB test 的关键;
    (3)AB test 的一个重要缺点就是实验周期长,这样才能得到可靠的结果,因此AB test 不应该测试所有的算法,而是只测试在离线实验和用户调查中表现很好的算法;
    (4)如果有用户标签库的话,会极大的帮助在线实验。

    4. 总结

    一个新的推荐算法最终上线,需要完成上面所说的3个实验:
    (1)首先,需要通过离线实验证明它在很多离线指标上优于现有的算法;
    (2)然后,需要通过用户调查确定它的用户满意度不低于现有的算法;
    (3)最后,通过在线等AB测试确定它在我们关心的指标上优于现有的算法。

    PART 3

    最后的问题是

    评测指标有哪些?

    1. 用户满意度

    用户满意度可以通过直接和间接的方式得到
    (1)直接的方式,主要是通过调查问卷。调查问卷的设计也非常有技巧,本人在《社会心理学》中看过关于用户调研统计以及调查问卷设计的内容,如果有兴趣可以查看,但是就个人而言觉得无论是学习成本还是调查成本都远远高出收益,所以不是很支持这种方式。
    (2)间接的方式,主要通过对用户行为的统计。显性的有,赞/踩、评分等等,看业务产品的设计;隐性的有点击率、用户停留时间、转化率等等。需要注意的是每种用户行为在设计上是否有偏差,是否正向反馈/负向反馈倾向过于明显。

    2. 预测准确度

    预测准确度是指推荐算法预测用户行为的能力,是最重要的推荐系统离线评测指标
    需要注意的一点是:准确的预测并不代表好的推荐,比如说用户本来就要买一本书,无论是否推荐都购买,这样推荐出去就并不是一次好的推荐。
    在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录,然后将该数据集通过时间分成训练集和测试集,最后通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。
    下面从几个不同的研究方向介绍预测准确度指标:

    • 评分预测
      评分预测基于有一个打分的功能,预测该用户在将来看到一个他没有评过分的物品时,会给这个物品评多少分。
      评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。对于 测试集中的一个用户 u 和物品 i,令 rui 是用户对物品 i 的实际评分,而 rˆui 是推荐算法给出的预测评分,那么RMSE的定义为:


      Paste_Image.png

      MAE采用绝对值计算预测误差,它的定义为:


      Paste_Image.png
      关于RMSE和MAE这两个指标的优缺点, Netflix认为RMSE加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。
      研究表明,如果评分系统是基于整数建立的(即用户给的评分都是整数),那么对预测结果取整会降低MAE的误差。
    • TopN 推荐
      网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
      令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。那么,推荐结果的召回率定义为:

      Paste_Image.png
      推荐结果的准确率定义为:
      Paste_Image.png
      有的时候,为了全面评测TopN推荐的准确率和召回率,一般会选取不同的推荐列表长度N, 计算出一组准确率/召回率,然后画出准确率/召回率曲线(precision/recall curve)。
    • 对比
      TopN推荐更符合实际的应用需求,推荐系统的目的是为了给用户推荐更感兴趣的内容,而不是预测他会给多少评分,也许有一部电影用户看了后会给很高的分数,但是他看的可能性很小。

    3. 覆盖率

    覆盖率描述一个推荐系统对物品长尾的发掘能力。覆盖率最简单的定义为:推荐系统能够推荐出来的物品占总物品集合的比例。 设系统的用户 为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。那么推荐系统的覆盖率可通过下面的公式计算:


    Paste_Image.png

    覆盖率主要针对内容提供者,其中热门排行榜的推荐覆盖率是很低的,所以一个好的推荐系统不仅需要有比较高的用户满意度,也要有较高的覆盖率。对于feed流,个人认为覆盖率不用太在意,因为本身目的就是为了筛选高质量的内容,对于低质量的内容就应该不展示;相反电商类的物品对覆盖率的要求会很高。
    上述对于覆盖率的定义过于粗略,因为即使覆盖率为100%,不同内容的展示程度、流行分布也是不一样的,为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的内容都出现在列表中且出现次数相似,那么这个推荐系统发掘长尾的能力就很好。因此,如果分布比较平缓,那么覆盖率高;如果分布陡峭,那么覆盖率低。
    在信息论和经济学中有两个著名的指标可以用来定义覆盖率。第一个是信息熵:


    Paste_Image.png

    这 p(i)是物品i的流行度除以所有物品流行度之和。
    第二个指标是基尼系数:


    Paste_Image.png

    这里,ij是按照物品流行度p()从小到大排序的物品列表中第j个物品。


    Paste_Image.png

    推荐系统的初衷是消除马太效应,使得各个物品都能被展示给对它们感兴趣的某一类人群,但是很多研究表明现在的主流推荐算法是具有马太效应的,不过对于内容为主的产品个人认为反而要利用好马太效应,因为不仅需要将各个内容展示给对应的人群,更好筛选出高质量的内容,其中马太效应反而能够有利于筛选内容。

    4. 多样性

    用户的兴趣是广泛的,目前的推荐算法由于注重准确度很容易造成过多的收敛,但是实际上内容推荐也需要多样性,覆盖不同的兴趣点。
    多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。 假设 s(i, j)∈[0,1] 义了物品i和j之间的相似度, 那么用户 u 的推荐列表 R(u) 的 多样性定义如下:


    Paste_Image.png

    而推荐系统的整体多样性可以定义为为所有用户推荐列表多样性的平均值:


    Paste_Image.png

    以社区为例,如果某个用户80%的时间在看他某一领域,另外20%想看看别的新闻或者其他什么的时候。推荐系统推荐10篇文章,应该8篇与他领域相关,另外两篇属于其他方面。推荐的时候需要综合考虑到主要兴趣和多样性。

    5. 新颖性

    新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。新颖性的实现方法有两种:
    1)把用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。缺点是用户可能在别的地方看到过。
    2)利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖,所以推荐结果中物品的平均热门程度较低,推荐结果就可能有较高的新颖性。但是得到的结果是比较粗略的,新颖性需要用户调查得到更准确的结果。
    有一个问题是,通过牺牲精度来提高多样性和新颖性是很容易的,但是在不牺牲精度的情况下提高多样性和新颖性。

    6. 惊喜度

    如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高;推荐的新颖性仅仅取决于用户是否听过这个推荐结果。
    目前没有公认的惊喜度指标定义方式,只有定性的度量方式:首先定义推荐结果和用户历史上喜欢的物品的相似度,其次定义用户对推荐结果的满意度。
    惊喜度总体而言还没有很成熟。

    7. 信任度

    对于基于机器学习的自动推荐系统,会存在信任度的问题,如果用户信任推荐系统,那么就会增加用户和推荐系统的交互。
    度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。
    提高推荐系统的信任度主要有两种方法:
    1)增加推荐系统的透明度,主要办法是提供推荐解释。让用户了解并认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。
    2)利用社交信息,利用用户的好友信息给用户做推荐,并用好友进行推荐解释。

    8. 实时性

    在很多网站中,因为物品(新闻、微博等)具有很强的时效性,因此在这些领域中,实时性就是个很重要的指标。
    推荐系统的实时性包括两个方面:
    1)推荐系统需要实时地更新推荐列表来满足用户新的行为变化。比如当一个用户购买了iPhone,如果推荐系统能够立即给他推荐相关配件,那么肯定比第二天再给用户推荐相关配件更有价值。很多推荐系统都会在离线状态每天计算一次用户推荐列表,然后于在线期间将推荐列表展示给用户,这种设计无法满足实时性。与用户行为相应的实时性,可以通过推荐列表的变化速率来评测,如果推荐列表在用户有行为后变化不大,那么推荐系统的实时性不高。
    2)实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。可以通过标签的形式来实现。

    9. 健壮性

    健壮性衡量了一个推荐系统抗击作弊的能力。作弊有一种方式就是行为注入攻击,包括刷单、刷评分等用户行为来作弊。
    算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算法比较健壮。
    提高系统的健壮性两个方法:
    1)设计推荐系统时尽量使用代价比较高的用户行为。
    2)使用数据前,进行攻击检测,从而对数据进行清理。‘

    10. 商业目标

    设计推荐系统需要考虑到最终的商业目标,这些目标依据不同公司的需求而定。

    PART 4

    1. 用一张表总结获取评测指标的途径
    Paste_Image.png

    对于可以离线优化的指标,作者的看法是在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用公式表达,离线实验的优化目标是:
    最大化预测准确度,使得 覆盖度>A & 多样性>B & 新颖性>C

    2. 评测维度

    有时候,一个推荐算法可能在某种特定的场景下性能比较好,可以通过不同的维度评测,从而融合不同推荐算法来取得最好的整体性能。
    一般来说,评测维度为3种

    • 用户维度。主要包括用户的人口学统计信息、活跃度以及是否新用户
    • 物品维度。包括物品的属性信息、流行度、平均分以及是不是新加入的物品等
    • 时间维度。包括季节,是工作日还是周末,是白天还是晚上等。

    相关文章

      网友评论

      • e76844475cef:赞,从评测的方法到评测的指标详解,如果能有更详细的例子就更好了~最近也开始学习评测相关,收益~
        醉起萧寒: @雪梅_993c 对的
        e76844475cef: @醉起萧寒 你是说推荐系统实践这本书哈
        醉起萧寒:@雪梅_993c 可以看看那本书,我的文章省略了很多具体的内容

      本文标题:推荐系统实践-评测

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