机器学习(二十八)— 推荐算法

1、推荐系统目的

(1)帮助用户找到想要的商品(新闻/音乐/……),发掘长尾

(2)降低信息过载

(3)提高站点的点击率/转化率

(4)加深对用户的了解,为用户提供定制化服务

2、推荐算法概述

  推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种:

  1)基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。

  2)协同过滤推荐:本文后面要专门讲的内容。协调过滤是推荐算法中目前最主流的种类,花样繁多,在工业界已经有了很多广泛的应用。它的优点是不需要太多特定领域的知识,可以通过基于统计的机器学习算法来得到较好的推荐效果。最大的优点是工程上容易实现,可以方便应用到产品中。目前绝大多数实际应用的推荐算法都是协同过滤推荐算法。

  3)混合推荐:这个类似我们机器学习中的集成学习,博才众长,通过多个推荐算法的结合,得到一个更好的推荐算法,起到三个臭皮匠顶一个诸葛亮的作用。比如通过建立多个推荐算法的模型,最后用投票法决定最终的推荐结果。混合推荐理论上不会比单一任何一种推荐算法差,但是使用混合推荐,算法复杂度就提高了,在实际应用中有使用,但是并没有单一的协调过滤推荐算法,比如逻辑回归之类的二分类推荐算法广泛。

  现实应用中,其实很少有直接用某种算法来做推荐的系统。在一些大的网站如Netflix,就是融合了数十种算法的推荐系统。我们可以通过给不同算法的结果加权重来综合结果,或者是在不同的计算环节中运用不同的算法来混合,达到更贴合自己业务的目的。

  4)基于规则的推荐:这类算法常见的比如基于最多用户点击,最多用户浏览等,属于大众型的推荐方法,在目前的大数据时代并不主流。

  5)基于人口统计信息的推荐:这一类是最简单的推荐算法了,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后进行推荐,目前在大型系统中已经较少使用。

3、基于内容的推荐算法

  对一个给定的用户, 推荐与他之前喜欢的项目在内容上有相似性的其他项目。这种推荐仅需要得到两类信息: 项目特征的描述和用户过去的喜好信息。

  举个栗子,现在系统里有一个用户和一条新闻。通过分析用户的行为以及新闻的文本内容,我们提取出数个关键字。将这些关键字作为属性,把用户(过去的喜好)和新闻(新的内容)分解成向量。

  之后再计算向量距离,便可以得出该用户和新闻的相似度了,将计算相似度最大的(例如采用余弦计算)内容进行推荐。

  这种方法很简单,如果在为一名热爱观看英超联赛的足球迷推荐新闻时,新闻里同时存在关键字体育、足球、英超,显然匹配前两个词都不如直接匹配英超来得准确,系统该如何体现出关键词的这种“重要性”呢?这时我们便可以引入词权的概念。在大量的语料库中通过计算(比如典型的TF-IDF算法),我们可以算出新闻中每一个关键词的权重,在计算相似度时引入这个权重的影响,就可以达到更精确的效果。sim(user, item) = 文本相似度(user, item) * 词权,将重要的词加大权重。

  然而,经常接触体育新闻方面数据的同学就会要提出问题了:要是用户的兴趣是足球,而新闻的关键词是德甲、英超,按照上面的文本匹配方法显然无法将他们关联到一起。在此,我们可以引用话题聚类:利用word2vec一类工具,可以将文本的关键词聚类,然后根据topic将文本向量化,再根据topic为文本内容与用户作相似度计算。

  综上,基于内容的推荐算法能够很好地解决冷启动问题,并且也不会囿于热度的限制,因为它是直接基于内容匹配的,而与浏览记录无关。然而它也会存在一些弊端,比如过度专业化(over-specialisation)的问题。这种方法会一直推荐给用户内容密切关联的item,而失去了推荐内容的多样性。

4、冷启动问题

  冷启动问题主要分为3类:

  • 用户冷启动,即如何给新用户做个性化推荐
  • 物品冷启动,即如何将新的物品推荐给可能对它感兴趣的用户
  • 系统冷启动,即如何在一个新开发的网站(没有用户,没有用户行为,只有部分物品信息)上设计个性化推荐系统,从而在网站刚发布时就让用户体会到个性化推荐

  解决方案:

  • 推荐热门排行榜,等到用户数据收集到一定的时候,再切换为个性化推荐;
  • 利用用户注册信息;
  • 用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,然后给用户推荐那些和这些物品相似的物品;
  • 采用专家标注;
  • 利用物品的内容信息,物品冷启动;
  • 利用用户在其他地方已经沉淀的数据进行冷启动;
  • 利用用户的手机等兴趣偏好进行冷启动,比如安装的软件等

5、上下文信息、社交网络

  推荐系统中的上下文信息是指用户访问推荐系统的时间、地点、心情等。介绍时间上下文和地点上下文,让推荐系统能够准确预测用户在某个特定时刻及特定地点的兴趣。推荐系统的实时性和多样性。

  社交网络:电子邮件、注册信息、位置数据、论坛讨论组、社交网站。

  社会化推荐之所以受到很多网站的重视,主要因为下面的优点:

  • 好友推荐可以增加推荐的信任度,好友往往是用户最信任的,用户往往不一定信任计算机的智能,但会信任好朋友的推荐
  • 社交网络可以解决冷启动问题,当一个新用户通过新浪微博账号登录网站时,可以从社交网站中获取用户的好友列表,然后给用户推荐好友在网站上喜欢的物品。从而在没有用户行为记录时就给用户提供较高质量的推荐结果,部分解决了推荐系统的冷启动问题

  云音乐使用了3个维度向人们推荐音乐:朋友推荐、人工推荐、智能推荐

6、评估

  当推荐算法完成后,怎样来评估这个算法的效果?CTR(点击率)、CVR(转化率)、停留时间等都是很直观的数据。在完成算法后,可以通过线下计算算法的RMSE(均方根误差)或者线上进行ABTest来对比效果。 

7、改进

  • 1、打通公司各大业务平台,通过获取其他平台的用户数据,彻底解决冷启动问题;
  • 2、在不同设备上同步用户数据,包括QQID、设备号、手机号等;
  • 3、丰富用户的人口属性,包括年龄、职业、地域等;
  • 4、更完善的用户兴趣状态,方便生成用户标签和匹配内容。

  另外,公司的优势——社交平台也是一个很好利用的地方。利用用户的社交网络,可以很方便地通过用户的好友、兴趣群的成员等更快捷地找到相似用户以及用户可能感兴趣的内容,提高推荐的准确度。

参考文献:https://www.cnblogs.com/rongyux/articles/5396844.html

原文地址:https://www.cnblogs.com/eilearn/p/9488425.html