首页 > 编程知识 正文

经典推荐算法,几种推荐算法

时间:2023-05-03 08:51:07 阅读:186749 作者:1490

转自: http://www.cn blogs.com/mafeng/p/7912217.html

序言

最近,为了PAC平台自动化的需要,推出了射孔探测推荐系统。 乍一看很有趣的这个课题,对于算法的大神们来说如下。

而且,对刚接触这个领域的我来说,如下。

在深基坑周围走了一圈后,我整理了一些推荐系统的基本概念和具有代表性的简单算法。 作为对初探的总结,我想抛砖引玉,给想进同一个洞的伙伴们提供一些想法。

什么是推荐系统

1 .什么是推荐系统?

推荐的系统是什么?

如果你是多年的电子商务(剁手党),你会说是这个吧。

如果是充满文艺细胞的音乐迷,我会回答这个。

如果你是活跃在大型社交平台上的赞扬发烧友,请回答这个:

没错,你喜欢的东西,个性歌曲列表,热点微博,这些都是推荐系统的输出内容。 由此,可以总结推荐系统在做什么。

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

帮助用户找到想要的东西并不容易。 商品很多,就连我们自己,总是点淘宝,面对眼花缭乱的打折活动都不知道买什么。 经济学中有一个有名的理论叫长尾理论(The Long Tail )。

在网络领域,这意味着最热的一部分资源引起了大部分的关注,剩下的大部分资源很少被问津。 这不仅会造成资源的利用上的浪费,很多口味小的用户也找不到自己感兴趣的内容。

目的2 .减少信息过载

互联网时代的信息量处于爆炸状态,如果把所有内容都放在网站的首页,用户就无法阅读,信息的利用率会非常低。 因此,应该推荐系统,让用户过滤掉低价值的信息。

目的3 .提高网站点击率/转化率

良好的推荐系统使用户能够频繁访问网站,并始终找到想要购买的商品和想要阅读的内容。

目的4 .加深用户理解,为用户提供个性化服务

每当系统成功推荐用户感兴趣的内容时,我们对该用户的兴趣等维度上的印象就会越来越清晰。 如果能准确描绘每个用户的形象,就可以定制一系列服务,让不同需求的用户在平台上得到满足。

推荐算法

算法是什么? 我们可以把那个简化成一个函数。 函数接受几个参数,并输出返回值。

算法上图所示,输入参数为用户和item的各种属性和特征,包括年龄、性别、地域、商品类别、上市时间等。 返回经过推荐算法处理并根据用户喜好排序的项目列表。

推荐算法可以大致分为以下几类[1]

基于流行度的算法

协同过滤算法

基于内容的算法

基于模型的算法

混合算法

2.1基于流行度的算法

基于流行度的算法非常简单粗暴,像各条新闻、微博热搜榜等,根据PV、UV、日均PV或分享率等数据按热度顺序推荐给用户。

该算法的优点简单,适用于刚注册的新用户。 缺点也很明显,不能为用户提供个性化推荐。 基于该算法,还可以进行优化,包括加入用户群流行度排行榜,优先向体育粉丝推荐热搜榜的体育内容,以及将政治家的热门文章推给喜欢谈论政治的用户。

2.2协同过滤算法

协同过滤算法(Collaborative Filtering,CF )是一种常用的算法,被许多电子商务网站使用。 CF算法包括基于用户的CF (基于用户的CF )和基于物品的CF (基于项目的CF )。

基于用户的CF的原理如下。

分析各用户对item的评价(通过巡阅记录、购买记录等);

根据用户对item的评价计算出所有用户之间的相似度

选出与当前用户最相似的n个用户;

向当前用户推荐这n个用户评价最高、当前用户没有浏览的item。

图像如下所示。

基于物品的CF原理相似,但主体在物品上:

分析各个用户对item的浏览记录。

根据陟览记录分析所有item之间的相似度

对于当前用户评价较高的item,找到与其相似度最高的n个item;

向用户推荐这n个item。

图像如下所示。

举个例子,用户对CF算法的大致计算流程如下。

首先,根据站点记录计算用户和item的关系矩阵。 如下所示。

在图中,行是不同的用户,列是所有物品,(x,y )的值是x用户对y物品的评价(喜好程度)。 您可以将每一行视为一个用户对项目的偏好向量,并计算两个用户之间的向量距离。 这里使用余弦相似度。

 然后得出用户向量之间相似度如下,其中值越接近1表示这两个用户越相似:

  

  最后,我们要为用户1推荐物品,则找出与用户1相似度最高的N名用户(设N=2)评价的物品,去掉用户1评价过的物品,则是推荐结果。

  基于物品的CF计算方式大致相同,只是关联矩阵变为了item和item之间的关系,若用户同时浏览过item1和item2,则(1,1)的值为1,最后计算出所有item之间的关联关系如下:

  

  我们可以看到,CF算法确实简单,而且很多时候推荐也是很准确的。然而它也存在一些问题:

依赖于准确的用户评分;

在计算的过程中,那些大热的物品会有更大的几率被推荐给用户;

冷启动问题。当有一名新用户或者新物品进入系统时,推荐将无从依据;

在一些item生存周期短(如新闻、广告)的系统中,由于更新速度快,大量item不会有用户评分,造成评分矩阵稀疏,不利于这些内容的推荐。

  对于矩阵稀疏的问题,有很多方法来改进CF算法。比如通过矩阵因子分解(如LFM),我们可以把一个nm的矩阵分解为一个nk的矩阵乘以一个k*m的矩阵,如下图:

  

  这里的k可以是用户的特征、兴趣爱好与物品属性的一些联系,通过因子分解,可以找到用户和物品之间的一些潜在关联,从而填补之前矩阵中的缺失值。

  2.3 基于内容的算法

  CF算法看起来很好很强大,通过改进也能克服各种缺点。那么问题来了,假如我是个《指环王》的忠实读者,我买过一本《双塔奇兵》,这时库里新进了第三部:《王者归来》,那么显然我会很感兴趣。然而基于之前的算法,无论是用户评分还是书名的检索都不太好使,于是基于内容的推荐算法呼之欲出。

  举个栗子,现在系统里有一个用户和一条新闻。通过分析用户的行为以及新闻的文本内容,我们提取出数个关键字,如下图:

  

  将这些关键字作为属性,把用户和新闻分解成向量,如下图:

  

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

  sim(user, item) = 文本相似度(user, item) * 词权

  然而,经常接触体育新闻方面数据的同学就会要提出问题了:要是用户的兴趣是足球,而新闻的关键词是德甲、英超,按照上面的文本匹配方法显然无法将他们关联到一起。在此,我们可以引用话题聚类:

  

  利用word2vec一类工具,可以将文本的关键词聚类,然后根据topic将文本向量化。如可以将德甲、英超、西甲聚类到“足球”的topic下,将lv、Gucci聚类到“奢侈品”topic下,再根据topic为文本内容与用户作相似度计算。

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

  2.4 基于模型的算法

  基于模型的方法有很多,用到的诸如机器学习的方法也可以很深,这里只简单介绍下比较简单的方法——Logistics回归预测。我们通过分析系统中用户的行为和购买记录等数据,得到如下表:

  

  表中的行是一种物品,x1~xn是影响用户行为的各种特征属性,如用户年龄段、性别、地域、物品的价格、类别等等,y则是用户对于该物品的喜好程度,可以是购买记录、浏览、收藏等等。通过大量这类的数据,我们可以回归拟合出一个函数,计算出x1~xn对应的系数,这即是各特征属性对应的权重,权重值越大则表明该属性对于用户选择商品越重要。

  在拟合函数的时候我们会想到,单一的某种属性和另一种属性可能并不存在强关联。比如,年龄与购买护肤品这个行为并不呈强关联,性别与购买护肤品也不强关联,但当我们把年龄与性别综合在一起考虑时,它们便和购买行为产生了强关联。比如(我只是比如),20~30岁的女性用户更倾向于购买护肤品,这就叫交叉属性。通过反复测试和经验,我们可以调整特征属性的组合,拟合出最准确的回归函数。最后得出的属性权重如下:

  

  基于模型的算法由于快速、准确,适用于实时性比较高的业务如新闻、广告等,而若是需要这种算法达到更好的效果,则需要人工干预反复的进行属性的组合和筛选,也就是常说的Feature Engineering。而由于新闻的时效性,系统也需要反复更新线上的数学模型,以适应变化。

  2.5 混合算法

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

  2.6 结果列表

  在算法最后得出推荐结果之后,我们往往还需要对结果进行处理。比如当推荐的内容里包含敏感词汇、涉及用户隐私的内容等等,就需要系统将其筛除;若数次推荐后用户依然对某个item毫无兴趣,我们就需要将这个item降低权重,调整排序;另外,有时系统还要考虑话题多样性的问题,同样要在不同话题中筛选内容。

  ◆ ◆ ◆

  推荐结果评估

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

  ◆ ◆ ◆

  改进策略

  用户画像是最近经常被提及的一个名词,引入用户画像可以为推荐系统带来很多改进的余地,比如:

打通公司各大业务平台,通过获取其他平台的用户数据,彻底解决冷启动问题;

在不同设备上同步用户数据,包括QQID、设备号、手机号等;

丰富用户的人口属性,包括年龄、职业、地域等;

更完善的用户兴趣状态,方便生成用户标签和匹配内容。

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

  ◆ ◆ ◆

  总结

  随着大数据和机器学习的火热,推荐系统也将愈发成熟,需要学习的地方还有很多,坑还有很深,希望有志的同学共勉~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。