Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推荐系统算法初探

推荐系统算法初探

作者头像
腾讯大数据
发布于 2018-01-26 11:19:46
发布于 2018-01-26 11:19:46
1.3K0
举报

0. 序言

最近因为PAC平台自动化的需求,开始探坑推荐系统。这个乍一听去乐趣无穷的课题,对于算法大神们来说是这样的:

而对于刚接触这个领域的我来说,是这样的:

在深坑外围徘徊了一周后,我整理了一些推荐系统的基本概念以及一些有代表性的简单的算法,作为初探总结,也希望能抛砖引玉,给同样想入坑的伙伴们提供一些思路。

1. 什么是推荐系统?

推荐系统是啥?

如果你是个多年电商(剁手)党,你会说是这个:

如果你是名充满文艺细胞的音乐发烧友,你会答这个:

如果你是位活跃在各大社交平台的点赞狂魔,你会答这个:

没错,猜你喜欢、个性歌单、热点微博,这些都是推荐系统的输出内容。从这些我们就可以总结出,推荐系统到底是做什么的。

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

帮用户找到想要的东西,谈何容易。商品茫茫多,甚至是我们自己,也经常点开淘宝,面对眼花缭乱的打折活动不知道要买啥。在经济学中,有一个著名理论叫长尾理论(The Long Tail)。

套用在互联网领域中,指的就是最热的那一小部分资源将得到绝大部分的关注,而剩下的很大一部分资源却鲜少有人问津。这不仅造成了资源利用上的浪费,也让很多口味偏小众的用户无法找到自己感兴趣的内容。

目的2. 降低信息过载

互联网时代信息量已然处于爆炸状态,若是将所有内容都放在网站首页上用户是无从阅读的,信息的利用率将会十分低下。因此我们需要推荐系统来帮助用户过滤掉低价值的信息。

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

好的推荐系统能让用户更频繁地访问一个站点,并且总是能为用户找到他想要购买的商品或者阅读的内容。

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

可以想见,每当系统成功推荐了一个用户感兴趣的内容后,我们对该用户的兴趣爱好等维度上的形象是越来越清晰的。当我们能够精确描绘出每个用户的形象之后,就可以为他们定制一系列服务,让拥有各种需求的用户都能在我们的平台上得到满足。

2. 推荐算法

算法是什么?我们可以把它简化为一个函数。函数接受若干个参数,输出一个返回值。

算法如上图,输入参数是用户和item的各种属性和特征,包括年龄、性别、地域、商品的类别、发布时间等等。经过推荐算法处理后,返回一个按照用户喜好度排序的item列表。

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

  • 基于流行度的算法
  • 协同过滤算法
  • 基于内容的算法
  • 基于模型的算法
  • 混合算法

2.1 基于流行度的算法

基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据PV、UV、日均PV或分享率等数据来按某种热度排序来推荐给用户。

这种算法的优点是简单,适用于刚注册的新用户。缺点也很明显,它无法针对用户提供个性化的推荐。基于这种算法也可做一些优化,比如加入用户分群的流行度排序,例如把热榜上的体育内容优先推荐给体育迷,把政要热文推给热爱谈论政治的用户。

2.2 协同过滤算法

协同过滤算法(Collaborative Filtering, CF)是很常用的一种算法,在很多电商网站上都有用到。CF算法包括基于用户的CF(User-based CF)和基于物品的CF(Item-based CF)。

基于用户的CF原理如下:

  1. 分析各个用户对item的评价(通过浏览记录、购买记录等);
  2. 依据用户对item的评价计算得出所有用户之间的相似度;
  3. 选出与当前用户最相似的N个用户;
  4. 将这N个用户评价最高并且当前用户又没有浏览过的item推荐给当前用户。

示意图如下:

基于物品的CF原理大同小异,只是主体在于物品:

  1. 分析各个用户对item的浏览记录。
  2. 依据浏览记录分析得出所有item之间的相似度;
  3. 对于当前用户评价高的item,找出与之相似度最高的N个item;
  4. 将这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算法确实简单,而且很多时候推荐也是很准确的。然而它也存在一些问题:

  1. 依赖于准确的用户评分;
  2. 在计算的过程中,那些大热的物品会有更大的几率被推荐给用户;
  3. 冷启动问题。当有一名新用户或者新物品进入系统时,推荐将无从依据;
  4. 在一些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降低权重,调整排序;另外,有时系统还要考虑话题多样性的问题,同样要在不同话题中筛选内容。

3. 推荐结果评估

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

4. 改进策略

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

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

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

5. 总结

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

引用

[1] https://buildingrecommenders.wordpress.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。
汀丶人工智能
2023/02/21
5.9K0
协同过滤推荐算法(一)原理与实现
协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。简单的说就是:人以类聚,物以群分。下面我们将分别说明这两类推荐算法的原理和实现方法。
全栈程序员站长
2022/09/07
3.4K0
协同过滤推荐算法(一)原理与实现
大数据–商品推荐系统介绍(上)
为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统。
全栈程序员站长
2022/07/21
2K0
大数据–商品推荐系统介绍(上)
读书笔记 |《推荐系统实践》- 个性化推荐系统总结
推荐系统实践 对于推荐系统,本文总结内容,如下图所示: 推荐系统.png 文章很长,你可以跳着看你感兴趣的部分。 一、什么是推荐系统 1. 为什么需要推荐系统 结论是,为了解决互联网时代下的信息超载问
小莹莹
2018/04/20
1.8K0
读书笔记 |《推荐系统实践》- 个性化推荐系统总结
初探机器学习之推荐系统的基础知识
 最近公司有意做一款机器学习的应用,主要集中于推荐系统这个方向,因此看了看一些基础知识,此篇是一个学习总结,不算是完整原创文章。
Edison Zhou
2019/02/22
6500
初探机器学习之推荐系统的基础知识
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
做广告业务1年多时间了,但是平时的工作主要和广告工程有关,核心的广告算法由 AI 部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。
Guide哥
2020/09/27
8360
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
推荐系统(Recommendation system )介绍[通俗易懂]
随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝、京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢。这个就是现在电子商务里面的推荐系统,向客户提供商品建议和信息,模拟销售人员完成导购的过程。
全栈程序员站长
2022/09/20
3.1K0
推荐系统(Recommendation system )介绍[通俗易懂]
技术 | 从算法原理,看推荐策略
协同过滤推荐算法应该算是一种用的最多的推荐算法,它是通过用户的历史数据来构建“用户相似矩阵”和“产品相似矩阵”来对用户进行相关item的推荐,以达到精准满足用户喜好的目的。比如亚马逊等电商网站上的“买过XXX的人也买了XXX”就是一种协同过滤算法的应用。 推荐算法简介 目前的推荐算法一般分为四大类: 协同过滤推荐算法 基于内容的推荐算法 混合推荐算法 流行度推荐算法 协同过滤的推荐算法 协同过滤推荐算法应该算是一种用的最多的推荐算法,它是通过用户的历史数据来构建“用户相似矩阵”和“产品相似矩阵”来对用户进
小莹莹
2018/04/24
9840
技术 | 从算法原理,看推荐策略
基于协同过滤的推荐系统
原公式中,只考虑用户消费用一种商品,而没有考虑用户消费同一种商品处在不同时期。如果用户消费了物品i和物品j,如果消费时间间隔越近,那么这次“同现”的权重应该越大,间隔越远权重越小。在分子上除以间隔时间,惩罚时间间隔影响。
birdskyws
2018/11/22
1.9K0
系列学习——推荐算法综述
作者:章华燕 编辑:祝鑫泉 前言 1 随着移动互联网技术和社交网络的发展,每天都有大量包括博客,图片,视频,微博等等的信息发布到网上。我们正处于大数据的时代,传统的信息检索技术已经不能满足用户对信息发现的需求,推荐引擎的出现,可以帮用户获取更丰富,更符合个人口味和更加有意义的信息。 个性化推荐主要是根据用户的兴趣和和利时行为特点,向用户推荐所需的信息或商品,帮助用户在海量信息中快速发现真正所需的商品,提高用户黏性,促进信息点击和商品销售。推荐系统是基于海量数据挖掘分析的商业智能平台,推荐主要基于以下信息:
机器学习算法工程师
2018/03/06
1.7K0
个性化推荐算法总结[通俗易懂]
并且,推荐系统能够很好的发掘物品的长尾,挑战传统的2/8原则(80%的销售额来自20%的热门品牌)。
全栈程序员站长
2022/08/15
2.1K0
个性化推荐算法总结[通俗易懂]
协同过滤推荐算法
相信大家对推荐系统已经很熟悉了,它通过分析用户的历史行为,挖掘用户的兴趣爱好,预测并推荐给用户其接下来有可能感兴趣的事物,例如商品推荐、音乐推荐、新闻以及最近很火的短视频推荐等等。
小萌哥
2020/07/21
1.5K0
协同过滤推荐算法
推荐算法概览
推荐算法概览(一) 为推荐系统选择正确的推荐算法非常重要,而可用的算法很多,想要找到最适合所处理问题的算法还是很有难度的。这些算法每种都各有优劣,也各有局限,因此在作出决策前我们应当对其做以衡量。在实践中,我们很可能需要测试多种算法,以便找出最适合用户的那种;了解这些算法的概念以及工作原理,对它们有个直观印象将会很有帮助。 推荐算法通常是在推荐模型中实现的,而推荐模型会负责收集诸如用户偏好、物品描述这些可用作推荐凭借的数据,据此预测特定用户组可能感兴趣的物品。 主要的推荐算法系列有四个(表格1-4): 协同
CSDN技术头条
2018/02/12
1.6K0
推荐算法概览
基于协同过滤(CF)算法的推荐系统
         随着计算机领域技术的高速发展,电子商务时代的普及,个性化的推荐系统深入生活应用的各个方面。个性化推荐算法是推荐系统中最核心的技术,在很大程度上决定了电子商务推荐系统性能的优劣。而协同过滤推荐是个性化推荐系统应用最为广泛的技术,协同过滤推荐主要分为基于用户的协同过滤推荐、基于项目的协同过滤推荐和基于模型的协同过滤推荐。
Flaneur
2020/03/25
5.1K0
推荐系统产品与算法概述 | 深度
作者在《推荐系统的工程实现》(点击蓝字可回顾)这篇文章的第五部分“推荐系统范式”中讲到工业级推荐系统有非个性化范式、完全个性化范式、群组个性化范式、标的物关联标的物范式、笛卡尔积范式等 5种 常用的推荐范式。本文会按照这5大范式来讲解常用的推荐算法,但不会深入讲解算法的实现原理,只是概述算法的实现思路,后面的系列文章我会对常用的重点算法进行细致深入剖析。
AI科技大本营
2019/06/20
1.7K0
推荐系统产品与算法概述 | 深度
2018年最全的推荐系统干货(ECCV、CVPR、AAAI、ICML)
最近总有几位关注者希望我们可以分享一些“推荐系统”类的干货,最近正好一不小心看到一篇比较好的博主写的推送,在此我通过自己理解和该博主的内容,为大家带来一次推荐系统的分享!
计算机视觉研究院
2018/10/23
1.6K1
2018年最全的推荐系统干货(ECCV、CVPR、AAAI、ICML)
快点进来get“推荐系统常用的推荐算法”
一、推荐系统概述和常用评价指标 1.1 推荐系统的特点 在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是: (1)重要性UI>数据>算法,就是推荐系统中一味追求先
小莹莹
2018/04/25
1.2K0
快点进来get“推荐系统常用的推荐算法”
独家 | 一文读懂推荐系统知识体系-上(概念、结构、算法)
本文主要阐述: 推荐系统的3个W 推荐系统的结构 推荐引擎算法 浏览后四章的内容请见下篇。 1. 推荐系统的3个W 1.1 是什么(What is it?) 推荐系统就是根据用户的历史行为、社交关系、
数据派THU
2018/03/26
3.5K0
独家 | 一文读懂推荐系统知识体系-上(概念、结构、算法)
推荐系统之用户行为分析
用户行为介绍 基于用户行为的推荐,在学术界名为协同过滤算法。 协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。 用户行为在个性化推荐系统中一般分两种——显性反馈行为(explicit feedback)和隐性反馈 行为(implicit feedback)。 显性反馈行为包括用户明确表示对物品喜好的行为:主要方式就是评分和喜欢/不喜欢; 隐性反馈行为指的是那些不能明确反应用户喜好的行为:最具代表性的隐性反馈行为就是页面浏
Spark学习技巧
2018/01/31
4.1K0
推荐系统之用户行为分析
推荐系统基础:算法与应用
推荐系统是一种利用算法和数据分析技术为用户提供个性化推荐的技术。它在电子商务、社交媒体、内容提供等领域发挥着重要作用。本文将详细介绍推荐系统的基础知识,包括常见的算法及其应用,并通过一个完整的项目展示推荐系统的部署过程。
数字扫地僧
2024/08/06
2120
推荐阅读
相关推荐
推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档