什么才是好的推荐系统? 以图书推荐系统为例:
首先推荐系统要满足用户的需求, 要尽可能地覆盖各种图书, 要能收集到高质量的用户反馈, 增加用户和图书网站的交互, 提高网站的收入. 要能够准确预测用户的行为, 还要扩展用户的视野, 帮助用户发现那些他们可能会感兴趣的但却不那么容易发现的东西. 本文主要从用户, 网站, 内容提供方提出不同的指标.
三种推荐系统实验方法
1, 离线实验(offline experiment)
实施步骤:
(1)将从日志系统收集来的用户行为数据, 生成为一个标准的数据集;
(2)按照一定的规则, 将数据集分成训练集和测试集两个部分;
(3)在训练集上训练用户兴趣模型, 在测试集上进行测试;
(4)利用定义好的离线指标评测算法, 在测试集上进行结果预测.
优点: 所有实验在数据集 (从系统日志中提取而来) 上完成, 对实际系统和用户参与依赖度低, 方便快捷;
缺点: 对商业上关注的指标获取能力弱;
2, 用户调查(user study)
用户调查, 是一种通过分析被调查用户(真实的用户), 在被测推荐系统上完成任务时的行为和回答问题的情况, 来了解测试系统性能的一种实验方法. 它旨在为上线测试提供准备工作, 以防范上线测试所潜在的降低用户满意度的问题.
优点: 在离线测试解决不了的 "用户主观感受相关指标" 的获取上, 有着优越的性能; 风险易控.
缺点: 实验成本高, 难组织大规模测试; 双盲实验设计困难, 影响测评结果.
3, 在线实验(online experiment)
这里的在线实验方法, 偏指 AB 测试方法.
实施步骤:
(1)通过一定规则将用户随机分组;
(2)对不同组的用户采用不同算法;
(3)统计不同组用户的不同评测指标, 以比较不同的算法.
优点: 公平获得不同算法实际在线的性能指标, 包括商业上关注的指标.
缺点: 试验周期较长; 设计 AB 测试系统的工程量大, 且流量切分设计一般必不可少.
评测指标:
1, 用户满意度:
基本在实际操作中不可用, 首先这是一个相对主观的指标, 一般依靠用户调研获取, 而用户基本也不知道自己想要什么, 最多谈一个表面上的感受, 参考价值不大. 其次最关心推荐系统好坏的往往是这个项目的 PM, 用户满意度的概念很容易被偷换成 PM 满意度或老板满意度. 以前有个朋友在游戏公司, 结果各个需求都以老板的满意为准, 最后倒闭了. 所以在实际情况下, 会用衡量准确度的客观指标来参考, 比如通过点击率的统计看用户对推出内容的满意程度.
2, 预测准确度:
应用中, 按场景可以将推荐系统分为 TopN 推荐和评分推荐两种, 评分推荐一般用 RMSE( 均方根误差)和 MAE(绝对平均)误差计算. 其中 RMSE 加大了对预测不准的项的惩罚, 评测更加严格. 而对于另一种 TopN 推荐的预测准确率, 一般用 Recall(召回率)和 Precision(准确率)来评测, 需要的时候还可以计算多对准确率和召回率, 然后画出 PR 曲线进行评测.
3, 覆盖率:
覆盖率用于描述系统对于长尾物品的发掘能力, 简单说就是对所有用户推荐的物品能够包括的物品种类越多, 覆盖率越大, 这样就引出了覆盖率最简单的一种定义方式: 系统能够推荐的物品占总物品集合的比例. 但是这样的计算方法没有考虑推荐列表中每种物品出现的频率, 如果列表中不但出现的比例大, 而且每种物品出现的频率也相近, 那么对长尾的挖掘能力越好. 通过物品在推荐列表中出现次数定义覆盖率的方式有信息熵和基尼系数两种. 这两个指标的计算又会涉及到流行度的计算, 一种商品的流行度就是它和多少用户发生了用户行为.
长尾效应如下图:
长尾效应, 英文名称 Long Tail Effect."头"(head)和 "尾"(tail)是两个统计学名词. 正态曲线中间的突起部分叫 "头"; 两边相对平缓的部分叫 "尾". 从人们需求的角度来看, 大多数的需求会集中在头部, 而这部分我们可以称之为流行, 而分布在尾部的需求是个性化的, 零散的小量的需求. 而这部分差异化的, 少量的需求会在需求曲线上面形成一条长长的 "尾巴", 而所谓长尾效应就在于它的数量上, 将所有非流行的市场累加起来就会形成一个比流行市场还大的市场.
简单来说就是热门的商品和 冷门商品贫富差距太大
4, 多样性:
推荐列表中物品的两两不相似性, 可以用相似度来定义, 相似度越高, 多样性就越低.
5, 新颖性:
推出那些用户之前没有接触过的内容.
6, 惊喜度:
推荐一个和用户兴趣一点关系没有但是用户觉得还很不错的内容.
7, 信任度:
要让用户认同推荐系统的推荐结果和推荐理由.
8, 实时性:
产生了新的用户行为之后能不能实时更新推荐里列表
加入了新的物品能不能立即推荐给用户(物品的冷启动问题)
9, 健壮性:
又称鲁棒性, 抗击作弊的能力
可以通过模拟攻击进行评测
提高健壮性的方法:
1, 设计推荐系统是使用代价高的用户行为
2, 使用数据训练模型前进行攻击检测, 对数据进行清理
来源: http://www.bubuko.com/infodetail-2566446.html