图解推荐系统算法向量

回顾20多年前推荐算法提出的90年代,也是中国互联网起步的时候,浏览门户网站即可满足我们对数字世界探索的大部分需求,彼时是‘人找物’,系统推荐的应用空间不大。

一、系统初探

那么推荐系统是如何运转的呢?为什么它知道我在某宝上要买的是咖啡而不是啤酒,然后在App的首页呈现?

回答这个问题,我们先从推荐系统流程的角度着手了解:系统将一个物品/内容推荐给用户主要经历两个步骤,即召回与排序。

在购物网站上会有很多与你兴趣相似的用户,你们有着类似的喜好,Ta喜欢的东西大概率你也会觉得不错,通过行为统计寻找你们的相似度就可以找到那些同类用户喜欢的而你还没有接触过的商品。

另外,商品之间也有相似的属性,比如《魔鬼经济学》与《牛奶可乐经济学》是有关行为经济学的著作,一般我们就会见到电子书网站会为看过《魔鬼经济学》的读者推荐《牛奶可乐经济学》。

如上描述的把相似的用户与相似的物品匹配起来,从而筛选出用户感兴趣物品的过程就是召回。

召回阶段取回的物品数量通常都比较大,可能在十万百万量级以上,进一步地,推荐引擎结合多种因素考量(比如业务特征、人工干预等),精细筛选出Top100款甚至更少的物品推荐给用户,这就是排序的过程。

从系统流程可以看出,相似度是推荐系统的核心环节。那么用户之间、物品之间的相似度怎么定义、如何计算呢?

二、找到相似的用户/物品1.相似度计算

对于推荐系统来说,通常是基于向量来确定两两用户或两个物品是否相似,即系统首先要把用户(用户属性或用户行为偏好)、物品(物品特征)向量化。

比如有5件商品:夹克、连衣裙、球鞋、网球拍、贝雷帽,1表示用户购买过该商品,0表示未购买过。用户P买过夹克、球鞋、网球拍,用户Q买过连衣裙、网球拍、贝雷帽,则用向量表示用户P和用户Q就是R(P)=(1,0,1,1,0),R(Q)=(0,1,0,1,1)。

那么如何计算两个用户是否相似呢?

让我们回忆一下中学关于两个向量u、v的余弦相似度公式:

利用公式,可以知道用户P(1,0,1,1,0)和用户Q(0,1,0,1,1)之间的相似度为:

2.最近的邻居

所谓物以类聚、人以群分,系统当然不需要按相似度遍历所有数据,一般推荐引擎只需要寻找一批与目标(用户/物品)最相似的‘邻居’组成一类群体进而做物品推荐。

接下来看看最近的邻居是如何确定的:以用户间的相似度举例,想象一个二维平面,每个用户代表一个点,用户(点与点)之间的距离就是相似度的大小;计算用户①的若干个最近邻,一种方案就是以目标用户①为圆心,设定一个距离K,落在半径K的圆中的所有用户就是①最近的‘邻居’。

三、推荐算法类型

上面介绍了如何计算相似度和寻找最相似的‘邻居’,接下来就要探寻推荐系统的核心——推荐算法。通常,推荐算法可以分为三类:基于属性相似度的推荐、基于协同过滤推荐、基于模型推荐。

1.基于属性相似度的推荐

基于属性相似度的推荐是一种基础的推荐算法,又可分为按用户属性的相似度推荐和按物品属性的相似度推荐。

用户属性的相似度推荐,即按用户的年龄、性别、地域等基础特征建模,计算用户之间的相似度,把用户A喜欢的物品推荐给与他类似的用户B。

物品属性的相似度推荐,即按物品的属性特征(以音乐举例,如音乐类型、歌手、播放时长等)建模,用户喜欢钢琴曲,而小提琴曲与钢琴曲都可以划分为轻音乐,则系统把小提琴曲推荐给用户。

上述基于属性相似度的推荐,好处是推荐解释性较强,易于理解,且不需要过多依赖用户行为的历史数据,对于长尾/上新的物品都能做到很好的曝光。

2.基于协同过滤推荐

协同过滤,顾名思义就是指由相似兴趣的用户们组成‘邻居’互相协作,通过不断的与系统发生交互从而持续过滤掉用户不感兴趣的内容,它是一种群体智慧效应的体现。

从用户与内容的角度又可划分为:基于用户的协同过滤(UserCF)和基于物品的协同过滤(ItemCF)。

1)基于用户的协同过滤(UserCF)

基于用户的协同过滤是通过用户的行为去寻找与其相似的用户进行推荐,与上一节基于用户属性的推荐对比,两者的核心区别是计算相似度的定义不同,基于用户属性推荐只考虑用户的静态特征,而UserCF是在用户的历史行为偏好中计算相似度。

基于用户协同过滤预测用户u对物品i的兴趣程度p(ui)的公式如下:

其中,S(u,K)是包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,w(uv)是用户u与用户v的兴趣相似度,r(vi)代表用户v对物品i的行为兴趣评分。

从公式可以看出,基于用户的协同过滤算法主要有两步:一是用户之间的相似度,二是用户与内容之间的行为偏好分数,通过图形拆解算法的计算路径如下图。

2)基于物品的协同过滤(ItemCF)

基于物品的协同过滤是通过用户对物品的行为偏好找到与用户喜欢物品的相似物品进行推荐,简单理解即喜欢物品1的用户大多也喜欢物品2。

基于物品的协同过滤预测用户u对物品j的兴趣程度p(uj)的公式如下:

其中,N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,w(ji)是物品j和i的相似度,r(ui)是用户u对物品i的兴趣分数。

同UserCF,基于物品的协同算法主要也是两步:一是物品之间的相似度,二是用户产生过偏好行为的物品评价分数,图示计算路径如下。

3.基于模型的推荐

基于模型的推荐主要是利用机器学习的方法挖掘用户、物品、用户历史行为偏好之间的关系,从而找到用户可能感兴趣的物品进行推荐。

机器学习包括深度学习的推荐算法在业界已经提出了很多种,本文仅介绍一种经典的模型——基于隐语义的模型推荐(LFM)。如下图形式是把所有用户和物品按用户对物品的偏好程度画成一张表中,推荐系统的工作就是要预测那些表格中的空白值。

同样,物品也可以按这些用户偏好(品牌、尺寸、型号、价格)进行分类。

隐语义模型就是要找到用户-偏好、物品-偏好这两个关系矩阵(如下图),然后通过矩阵计算的方式合成用户-物品的完整矩阵,求得用户对物品的推荐分数。

系统求解的过程是随机生成初始矩阵,推荐结果要与原始数据矩阵中有值的项尽可能相近,这就转换成了机器学习求最优解的问题。

相比协同过滤,无论UserCF或ItemCF,能够影响推荐效果的往往是少部分的用户行为和物品,而隐语义模型则通过机器挖掘隐藏在数据中的偏好从而进行推荐,通常能更充分的探寻到数据中的信息,推荐效果也更准确。

但因为偏好信息没有具体物理意义,所以其缺点也同样明显,无法对推荐结果做出合理的解释。

四、谈信息茧房

至此,推荐系统的大致原理和算法模型已经介绍完毕了。

在结束之前,最后简单聊聊信息茧房问题。在当前的互联网世界中,无论图文信息流亦或短视频应用,到处充斥着个性化推荐算法,很多用户担心终将会被禁锢在由狭隘偏好所编制的茧牢中。

其实破解信息茧房就是在回答一个问题,即什么是好的推荐系统?

意料之外,情理之中,也许是对推荐系统最好的诠释。

作者:策略伽;公众号:策略伽

本文由@策略伽原创发布于人人都是产品经理,未经作者许可,禁止转载。

THE END
1.基于邻域的算法(协同过滤)和内容过滤算法基于用户行为分析的推荐算法是个性化推荐系统的重要算法,一般将这种算法成为协同过滤算法。协同过滤,就是用户可以齐心协力,通过不断和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。 1. 基于邻域的算法 基于邻域的算法是推荐系统中最基本的算法,主要分为两大类,一类是基于用户...https://www.jianshu.com/p/50c8132d9677
2.基于协同过滤算法图书推荐系统的设计与实现.pdf想预览更多内容,点击免费在线预览全文 免费在线预览全文 本科毕业设计 论文题目:基于协同过滤算法的图书推荐系统的 设计与实现 摘要 随着网络和信息技术的飞速发展,电子图书资源的数量也在以惊人的速度增 长,越来越多的用户通过图书购买网站购买图书或在图书阅读网站上阅读电子书, ...https://max.book118.com/html/2024/0217/7053136045006042.shtm
3.协同过滤算法深入解析:构建智能推荐系统的核心技术在这种背景下,推荐系统应运而生,成为帮助用户过滤信息,找到自己感兴趣内容的有效工具。协同过滤算法作为推荐系统中的一种核心技术,广泛应用于电商、社交媒体、音乐、电影等多个领域,极大地改善了用户体验。本文将对协同过滤算法进行深入解析,让我们一起探讨这一神奇的技术。https://developer.aliyun.com/article/1267365
4.什么是智能推荐?智能推荐的原理是什么?所以,CF依赖于“群体共性”“群体智慧”挖掘出那些潜在的、可能会被用户喜欢的内容并推荐给用户。CF算法也是最早、最经典的推荐算法之一,可以这么说,CF算法是推荐算法的鼻祖。我们后续很多推荐算法都是基于CF的协同过滤思想延伸而来。有两类基于协同的推荐算法:基于用户的协同过滤算法、基于物品的协同过滤算法。https://www.niaogebiji.com/article-106383-1.html
5.基于流形近邻的协同过滤算法AET为了比较基于欧氏距离的协同过滤算法和基于最小最大距离的协同过滤算法,此处变化邻居数,加权方案取01VD,记使用欧氏距离的协同过滤方案为ECF,得到的实验结果如图2所示。 从图2可以看出,使用流形近邻的协同过滤算法优于使用欧氏距离的协同过滤算法。 3.3不同流形邻居数对实验结果的影响 ...http://www.chinaaet.com/article/3000016485
1.传统推荐算法——协同过滤ItemCF 是基于物品相似度进行推荐的协同过滤算法。通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似物品进行进一步排序和推荐,ItemCF 的具体步骤如下: 基于历史数据,构建以用户(假设用户总数为m mm)为行坐标,物品(物品总数为n nn)为列坐标的m × n m \times nm×...https://blog.csdn.net/weixin_55210809/article/details/143807593
2.基于内容和协同过滤的混合推荐算法研究及应用目前的主流推荐算法有基于内容的推荐算法、协同过滤算法等。基于内容的推荐算法能够充分利用推荐对象的属性特征进行推荐,但其推荐结果局限性较强,不能挖掘出用户潜在的兴趣爱好。协同过滤推荐算法有着比较稳定的性能,但也存在着数据稀疏性、新物品没有用户评分难以推荐导致“冷启动”等问题。此外,传统协同过滤算法的核心...https://cdmd.cnki.com.cn/Article/CDMD-10611-1020355978.htm
3.十个优秀开源推荐系统/算法/资源基于内容的推荐或者协同过滤算法各有优缺点。为了更准确地推荐产品,还可以使用混合推荐算法,即同时使用基于内容和协同过滤推荐产品。混合推荐算法具有更高的效率和更好的实用性。 三、10个最佳开源推荐系统相关资源 为了进一步理解推荐系统,以下收集了一些用于学习或者开发的最佳开源项目,包括:学习资源、开发包、完整的推荐...https://www.easemob.com/news/10998
4.淘宝和网易云怎样知道你喜欢什么?终于有人把推荐系统讲明白了...推荐系统具有不同的分类方法。常见的分类方法有:按照推荐结果因人而异分类、按照推荐方法分类、按照推荐模型构建方式分类。因为推荐算法是整个推荐系统中最核心部分,所以推荐系统还可以依据推荐算法分类。基于此,推荐系统可以分为基于内容的推荐、基于协同过滤的推荐以及混合推荐方法。 https://www.51cto.com/article/645404.html
5.常用推荐算法介绍——基于内容的推荐算法在基于内容的协同过滤算法中,要做的第一件事是根据内容,计算出书籍之间的相似度。在本例中,使用了书籍标题中的关键字(图二),这只是为了简化而已。在实际中还可以使用更多的属性。 图二:用户已经评论过的书籍标题 首先,通常要从内容中删除停止词(比如语法词、过于常见的词),然后用代表出现那些词汇的向量(或数组...https://cloud.tencent.com/developer/news/394225