马上要做推荐系统了,从一篇文章中看到《推荐系统实践》这本书,于是拿来看看。作为没有接触过这个领域,也无人引导的小菜来说,这本书让我学到了很多东西,我从这本书和网上的一些推荐系统实例开始我的推荐系统之路。下面就总结一下这本书的内容吧。
1. 什么是推荐系统?
就目前的肤浅认识来看,对于用户来说,推荐系统主要是
(1).挖掘用户的喜好,推荐给用户感兴趣的内容,它省去了麻烦的查找过程,为用户节省时间。
(2).发掘用户潜在的兴趣,扩大用户视野,将用户没有意识到,但实际感兴趣的内容呈现在其面前。
对商家而言,推荐系统可以
(1). 增强用户良好的使用(或购买)体验感。
(2). 减弱长尾效应,使长尾部分商品或者内容能够合理的呈现在用户面前,提高销售业绩。
对于以上论述,我自己使用“今日头条”说明一下:今日头条第一次使用需要注册,注册时,需要选择自己感兴趣的话题或者任务,我选择了雷锋网、人工智能,以及国内外几个科技巨头,同时,本人特别喜欢唐嫣,因此选了唐嫣。每天呈现给我的新闻一般是科技新闻、唐嫣的各种八卦(当然,有些完全是标题党)。从用今日头条开始,我基本不用再在网易和新浪上按照类型找新闻了。对于长尾,最明显的是每天唐嫣的各种新闻都会推荐给我,有很多小新闻可能在门户新闻网站上根本找不到。
个性化推荐系统的应用领域主要有电子商务、电影和视频网站、个性化音乐网络电台、社交网络、个性化阅读、基于位置的服务(例如大众点评)、个性化邮件、个性化广告等。
推荐系统实验方法——测评推荐系统的性能:
(1). 离线实验
通过日志系统获得的用户行为数据生成标准的数据集,将数据集按照一定的规则分为训练集和测试集,在训练集上训练用户兴趣模型,用测试集预测模型的准确性。
此测试系统的优点是最容易实现,仅需要使用推荐日志,即可计算完成,缺点是测试结果跟真事的推荐效果存在差距。
(2). 用户调查
请真实的用户在需要测试的系统上完成一系列任务,记录其行为和使用感受。
优点是可以获得很多真实的用户主观感受,缺点是组织用户调查的过程复杂,且代价和成本更大。
(3).在线实验
将推荐系统分成AB组上线,新的算法和旧的算法在同样的环境下跑,通过点击率或购买率来测评新旧算法的效果。
优点是测试结果真实可靠,但缺点是测试周期长,且测试系统的设计较复杂。因此,只有重要的算法才会采用这种测试方式。
一个新的推荐系统上线基本需要完成以上3个实验:首先通过离线实验证明新算法优于旧算法;然后通过用户调查确定它的用户满意度不低于旧算法;上线测试,通过 AB测试确定在关心的指标上新算法确实优于旧算法。
测评指标:
(1). 用户满意度——通过用户调查来获得。
(2). 预测准确性——通过离线测试完成,例如评分预测:通过用户对物品的历史评分,预测将来看到一个新的推荐物品,他会评多少分。预测指标是均方根误差和平均绝对误差。
(3). 覆盖率——系统发掘长尾的能力。可以通过研究物品在推荐列表中出现次数的分布来描述这个指标,如果分布较平,说明覆盖率高,如果分布陡峭,说明覆盖率低。在信息论中用熵和基尼系数都可以表示覆盖率。
熵的公式:,p(i)是物品i的流行度除所有物品流行度之和(归一化后的流行度)。
基尼系数:,
是流行度从小到大排列中第j个物品。
判断马太效应:如果初始初始用户行为中的物品流行度的基尼小于用户推荐列表中物品流行度的基尼,说明此推荐算法具有马太效应,马太效应不利于发掘长尾。
(4). 多样性——推荐列表中物品两两的不相似度。
(5). 新颖性——用推荐结果的平均流行度来评测推荐算法的新颖性。
(6). 此外还有惊喜度、信任度、实时性和健壮性、商业目的。
2. 利用用户的行为数据
这部分主要讲了根据用户的行为数据做推荐算法,采用基于邻域算法、隐语义模型、基于图的模型。基于邻域的算法主要是基于用户的协同过滤算法和基于物品的协同过滤算法。在本书中,这几种算法几乎贯穿整本书。
以上3种算法做推荐包含数据集准备、实验设计、评测3个过程。数据集书中采用MovieLens数据集,然后将数据集随机分成M份,其中M-1份为训练数据集,1份为测试数据集,通过相关算法训练和测试,然后通过测评指标来评测算法,评测指标只要有准确率、召回率、覆盖率、流行度。其中召回率描述有用户-物品评分记录物品包含在推荐列表中的比例,准确率描述最终的推荐列表中有多少比例是发生过通用户-评分记录的,覆盖率描述发掘长尾的能力,流行度描述推荐结果的新颖度。
由于,实际运用中,我的数据主要是用户行为数据,因此从小一篇开始,对以上3种算法通过以上过程做实验。