一、推荐系统概述及常用评价指标1.1推荐系统的特点我在知乎搜索了推荐系统,结果比较少,貌似小众。那么大家对推荐系统的共同看法是:(1)重要性UI>数据>算法,即在推荐系统中一味追求高级算法是一种误区。通常,一些研究论文的推荐方法有很多假设和限制,有的考虑较少的工程实施问题,推荐系统需要大量的数据整理和转化,同时需要考虑公司的业务特点和与现有系统的集成,以形成推荐系统和业务之间的良性循环;(2)推荐系统线下测试很好,线上最后要么没有严格的测试结果只能凭感觉,要么实际效果不尽如人意。我觉得主要是线下测试比较理想,而线上AB冠军测试对前端和后端的要求都很高,没有强大的研发能力是很难做到的。;(3)推荐系统受很多外界干扰因素(季节、流行因素等),整个系统需要迭代更新,没有一次性的东西。1.2推荐系统的评价指标由于推荐系统比较复杂,涉及的评价指标很多。当然,用户满意是最有效的,因为这是推荐系统的最终目标,但资源有限,成本太高,推荐系统还依赖于其他客观评价指标。(1)推荐准确率:该参数可以离线计算,比较客观,是各大研究论文算法最重要的参考指标。一般来说,推荐系统有“预测”和“推荐”两大任务,所以对推荐系统准确率的评分包括:评分预测:学习用户的评价模型,用于预测用户对未接触事物的评分,其实可以作为回归模型,一般用均方根误差或者绝对误差来衡量;TopN推荐:给用户一个个性化的推荐列表,一般通过accuracy和recall等指标进行评估。其中,N也是可变参数,可以根据不同的N绘制相应算法的ROC曲线,进一步评估推荐效果;(2)覆盖率:反映挖掘算法发现长尾产品的能力。最简单的定义就是把所有用户推荐的商品组合起来,然后看组合的商品占比和商品总数。这个方法是粗线,因为马太效应在推荐系统中很常见,所以一个好的推荐算法应该对所有商品都有相似的概率被推荐,并且能够找到自己合适的用户,所以在实践中,指标如将考虑信息熵和基尼系数。(3)多样性:其原则可以表述为不挂在一棵树上。由于整个推荐系统涉及的因素太多,如果只向用户推荐一类相似的物品,失败的风险比较高,也难以实现整体推荐收益的最大化。(4)新颖性:原则是那些用户没有接触过、没有操作过的产品,或者知名度比较低的产品,对于用户来说是比较新的物品,往往会有意想不到的效果。个人觉得这个指标有点可笑~~(5)Trust:这个指标比较主观,就是让用户相信推荐系统做出的推荐是有根据的、有根据的,推荐系统是如何工作的在内部。比如亚马逊的商品推荐,会给出推荐的理由。作为用户,我会觉得很体贴,否则用户会觉得商家的利益被驱使,有抵触心理。(6)鲁棒性:例如相关推荐算法,商家恶意下单增加商品推荐频率,喷子恶意评论等。2.静态数据推荐基本上大部分算法都是利用用户-商品交互数据动态生成个性化推荐。静态数据是指尚未生成用户交互数据时。这种情况在系统冷启动时尤为常见。常用的静态数据包括:(1)性别、年龄、地域、学历、兴趣等人口统计信息;(2)授权社交网络账号的好友信息;这类基于推荐的方法简单,可以根据每一类用户预先设置推送内容,也可以在相似用户之间推送,但这种方法面临的推荐粒度比较大,对高度个性化产品相关的参考价值以个人品味和爱好为限。同时,当大家的隐私意识增强时,这样的数据可能不容易获得;第二种社交网络好友信息效果会更好,但也需要相应的平台授权接入。那么这里是新增用户和新增产品的冷启动问题:新增用户:推送热门产品;选择使用上述人口统计信息进行粗粒度推送;如果可以获取伙伴数据,获取他们的好友信息,选择密友进行UserCF推荐;向用户展示一些产品(通用的、有代表性的和差异化的、多样化的项目),得到用户的反馈,然后学习(NadavGolbandi算法);添加新商品:UserCF对新增商品的冷启动不是很敏感,因为只要有用户发现了新商品,新商品就会慢慢扩散开来。对于ItemCF,则更为严重。比如可以考虑开始使用基于内容的推荐,在数据积累到一定程度后转为协同过滤推荐。3.基于内容的推荐主要是根据用户之前的喜好推荐相似的物品。该系统包括两个方面:用户属性和产品属性。前者包括用户的固有属性(如人口统计信息)和用户的历史商品交互信息(如对看过的电影的评分,进而获取用户对喜欢的电影的属性描述),后者是对产品本身的属性,从而可以通过简单的余弦相似度来实现推荐。同时也可以感觉到,这种算法对于描述维度相似的同类型商品效果会更好,但对于电商陌生商品可能效果会更好。该方法要解决的核心问题是推荐是否具有扩展性。如果只是根据用户之前的爱好不断推荐相似的商品,那么整个推荐系统的价值显然是非常有限的,但是如果能够准确地推荐不同品类的其他商品,那将是非常有用的。好吧。Pandora的音乐推荐是一个典型的基于内容的推荐系统。他们使用各种维度的属性来描述音乐,然后根据用户之前的爱好推荐具有相似属性和风格的音乐。4.协同过滤算法协同过滤算法是推荐系统中最经典的算法,也称为基于领域的算法。协同过滤涉及用户与产品的交互信息,即用户行为,一般用户对产品的行为反馈包括:、评论和其他信息。隐性反馈行为——不能明确代表用户对产品偏好的行为,如页面浏览行为等。这类数据比较大,往往伴随着大量的噪音,需要经过处理和转化才能发挥作用具有实际用途。4.1基于用户的协同过滤算法(UserCF)是基于这样的假设:喜欢相似物品的用户可能具有相同或相似的品味和偏好。UserCF的实现步骤包括:(1)找到与目标用户兴趣相似的用户群;假设用户u和v的正反馈产品集合分别为N(u),N(v),那么两者的兴趣相似度可以记为(2)在这个集合中找到用户喜欢什么,但是目标用户没听说过,推荐一下;UserCF提供的参数K表示应该考虑目标用户最相似兴趣的人数。在保证准确性的同时,K也不宜太大,否则推荐结果会倾向于热门商品,人气指数和覆盖指数会下降。4.2基于内容的协同过滤算法(ItemCF)是目前使用最广泛的推荐算法,不是通过商品本身,而是通过用户对商品的行为来计算商品之间的相似度。它假定能够引起用户兴趣的产品,必须与其之前评价较高的产品相似。ItemCF的操作步骤包括:(1)计算项目之间的相似度。itemsimilarity可以表示为(其实和前面的support类似)第二个公式比第一个公式好,因为它可以惩罚过热的产品j。(2)根据商品的相似度和用户的历史行为,为用户生成推荐列表。4.3基于模型的协同过滤算法User-CF和Item-CF统称为memory-basedCF,model-basedCF利用通用的机器学习方法,根据样本用户偏好信息训练出推荐模型,然后基于Predict并根据实时用户偏好信息计算推荐。常用的模型有LSI、贝叶斯网络等。4.4UserCF和ItemCF的比较现实中,item的数量往往远小于user的数量,item的数量和相似度都比较稳定,工作量可以以最高相似度完成离线实时计算步骤,从而大大减少在线计算量,基于用户的实时性更好。但是具体的使用场景需要根据具体的业务类型来区分。User-CF侧重于反映小群体用户的热点,更具社交性,而Item-CF侧重于维护用户的历史兴趣,如:新闻、阅读。推荐,新闻阅读信息是实时更新的,所以这种情况下需要不断更新ItemCF,而且用户对新闻的个性化推荐不是特别强,用户的新行为不会导致类似用户的剧烈运动。对于电商品类,由于用户消费成本高,个性化的精准度也比较高,用户一个新的行为也会导致推荐内容的实时变化。协同过滤算法的缺点也很明显。除了上面的冷启动,商家往往有大量的用户和产品,所以矩阵的计算量会非常大,但特定用户往往购买的商品有限,所以数据也是高度稀疏的。5、基于标签的推荐方法基于标签的推荐算法也很常见,比如豆瓣网和京东的商品评论。标签信息一般由专家学者划分标签;一种是普通用户在产品上的标签(UGC,UserGeneratedContent)。标签的内容一般要么描述产品本身,如名称、类别、产地等,要么是用户对产品的看法,如便宜、好用、性能强等。三元组(用户,item,label)通过标签将用户与物品关联起来。基于标签的推荐最简单的例子就是统计一个用户最常使用的标签,统计每件物品最常被标记的标签,然后通过一定的关系对两者进行推荐;当然,也可以展示标签云,让用户可以点击自己喜欢的标签、感兴趣的标签,然后进行相应的个性化推荐。国内的京东、淘宝、豆瓣都大量使用标签信息。由于用户对标签的评价具有很强的主观性,一方面,用户使用的相同含义的词语差异较大。可以考虑标准化:在用户评价时提供常用的标签,让用户点击以减少输入差异,推荐的标签包括itemDescriptive标签,以及用户自己常用的标签(用户一致性);人工或通过自然语言处理技术组织标签,区分用户的正面评价和负面评价;标签也有长尾分布效应,所以除了热门标签之外如何提取那些差异化有用的标签进行更准确的推荐也是应该研究的课题(卡方分布/SVD)。
