推荐系统实践-评测

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

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种

  • 用户维度。主要包括用户的人口学统计信息、活跃度以及是否新用户
  • 物品维度。包括物品的属性信息、流行度、平均分以及是不是新加入的物品等
  • 时间维度。包括季节,是工作日还是周末,是白天还是晚上等。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容