<h3>什么才是好的推荐系统?</h3> <p> 推荐系统存在三个参与方:用户、物品提供者和网站(或者手机应用)。好的推荐系统总体来说是一个能令三方共赢的系统。那么如何做到三方共赢呢?<br/> 从用户角度,推荐系统必须满足用户的需求,给用户推荐那些令他们感兴趣的图书。推荐系统还应该能够做到准确预测用户的行为,帮助用户发现那些他们可能感兴趣但不易本发现的物品(挖掘物品的长尾)。最后推荐系统也应该能够挖掘用户潜在的兴趣,将那些与用户兴趣无关但是用户看见之后可能会感兴趣的物品推荐给用户(后文将要说明的惊喜度)。<br/> 从物品提供商角度,推荐系统要让提供商的物品都能够被推荐给对其感兴趣的用户。<br/> 从网站角度,推荐系统能够让本身收集到高质量的用户反馈,不断完善推荐质量,增加用户和网站的交互(用户活跃度和粘稠度?)。<br/> 个人看法,以上情况很理想,但是现实总是骨干的,在实际应用中,这可能这是我们的终极目标。实际应用中可能会根据业务需求进行变动,并采取尽可能可行的方案去执行,尽快发布一个版本,然后在以后不断去完善(感觉与TDD类似)。 </p> <h3>推荐系统的实验方法</h3> <p> 1.离线实验<br/> 离线实验一般有如下几步构成:<br/> 1) 通过日志系统获取用户行为数据,并按照一定格式生成一个标准的数据集;<br/> 2) 将数据集按照一定的规则分成训练集和测试集;<br/> 3) 在训练集上训练用户兴趣模型,在测试集上进行预测;<br/> 4) 通过事先定义好的离线之指标评测算法评测预测结果。<br/> 优点:不需要用户参与;速度快,可测试大量算法。<br/> 缺点:离线实验的指标与商业指标存在差距,并且无法计算商业上关心的指标(如:点击率,转化率等)。<br/> 2.用户调查<br/> 基于离线实验的主要缺点,推荐系统在正是上线之前需要进行一次用户调查。<br/> 优点:可以获得许多体现用户主观感受的指标,相对在线实验风险较低,出现错误容易弥补。<br/> 缺点:很难组织大规模的测试用户,因此会使测试结果的统计意义不足。此外,用户在测试环境下的行为与真实环境下的行为可能有所不同。<br/> 3.在线实验<br/> 推荐系统上线后进行AB测试,通过一定规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后统计不同组用户的各种不同的评测指标,比较不同的算法。<br/> 优点:可以公平获得不同算法实际时的性能指标,包括商业上的指标。<br/> 缺点:周期较长,必须进行长期的实验才能获得可靠结果。因此AB测试主要测试那些在离线实验和用户调查中表现很好的算法。<br/> </p> <h3>实验方法的评测指标</h3> <p> 1.用户满意度<br/> 评测推荐系统的最终要指标,一般通过问卷调查的形式。<br/> 2.预测准确度<br/> 最重要的离线评测指标。<br/> a) 评分预测<br/> 评分预测一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。<br/> RMSE=sqrt[square(用户u对物品i的实际评分 - 用户u对物品i的预测评分)/物品i的个数]<br/> MAE=( | 用户u对物品i的实际评分 - 用户u对物品i的预测评分 | ) / 物品的个数 。<br/> 个人看法,感觉就是测量精度的问题,精度越准确就说明你测量的越准确。回头可以看看高中的相关知识。<br/> b) TopN推荐<br/> TopN推荐是推荐系统给用户的一个个性化推荐列表的推荐方式。<br/> TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。<br/> 相关文章请见:<a href=http://en.wikipedia.org/wiki/Information_retrieval#Precision>维基百科(点击即可)</a>。<br/> 3.覆盖率<br/> 暂不介绍,以后会补充。<br/> 4.多样性<br/> 暂不介绍,以后会补充。<br/> 5.新颖型<br/> 暂不介绍,以后会补充。<br/> 6.惊喜度<br/> 暂不介绍,以后会补充。<br/> 7.信任度<br/> 暂不介绍,以后会补充。<br/> 8.实时性<br/> 暂不介绍,以后会补充。<br/> 9.健壮性<br/> 暂不介绍,以后会补充。<br/> 10.商业指标<br/> 暂不介绍,以后会补充。<br/> </p> <h3>评测维度</h3> <p> 评测维度可以告诉你一个算法在什么情况下性能最好。这样可以通过融合不同推荐算法取得最好的整体性能。一般有用户维度、物品维度、时间维度。 </p>