图解推荐系统算法向量

回顾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.协同过滤(基于用户)的推荐系统.zip基于协同过滤算法商品推荐系统.zip 基于协同过滤算法商品推荐系统.zip 基于协同过滤算法商品推荐系统.zip 上传者:FireFox1997时间:2024-10-06 基于协同过滤的论文推荐系统.zip 基于协同过滤的论文推荐系统协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的...https://www.iteye.com/resource/qq_44593353-12488115
2.大数据毕设基于Hadoop的音乐推荐系统的设计和实现(六)在设计该系统时,要设计一个完整的数据处理流程:数据清洗,数据上传,数据分析,数据存储,数据可视化。这个系统主要是针对于数据,对于数据进行处理,然后分析,能够得到推荐的结果,主要是基于协同过滤算法的推荐、十大流行歌曲、十大流行歌手。希望能够给大家一个直观的感受,所有添加了Echarts,利用这个技术可以图形化数据。https://developer.aliyun.com/article/1404874
3.协同过滤推荐研究综述AET目前,应用于推荐系统的算法主要分三类:基于内容的过滤推荐算法、协同过滤推荐算法及混合推荐算法。 基于内容的过滤推荐算法[2]是对用户的兴趣进行分析,构成用户配置文件,并将其和文件集中的文件用共同的特征变量表示。最后比较两者的相似度来为用户进行推荐。随后,通过用户的反馈信息,不断更新用户配置文件,以此来动态地...http://www.chinaaet.com/article/212308
1.JAVA助力数字化营销:基于协同过滤算法实现个性化商品推荐...本文主要介绍基于协同过滤的推荐算法。在了解实践应用之前,我们先对推荐系统、Mahout学习框架以及算法进行简单介绍,然后再结合实践进行深入探讨。 第一部分概述了推荐系统的产生背景、作用和工作原理,并介绍了Mahout学习框架的算法。 第二部分则基于Mahout框架-协调过滤算法,实现个性化商品推荐。 https://www.jianshu.com/p/67bbce31375a
2.java代码实现协同过滤算法商品推荐基于协同过滤算法java代码实现协同过滤算法商品推荐 基于协同过滤算法 一.基于用户的协同过滤算法简介 在推荐系统的众多方法之中,基于用户的协同过滤是诞最早的,原理也比较简单。基于协同过滤的推荐算法被广泛的运用在推荐系统中,比如影视推荐、猜你喜欢等、邮件过滤等。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens ...https://blog.51cto.com/u_16213604/10293525
3.springboot基于协同过滤算法商品推荐系统因此,在计算机上安装协同过滤算法商品推荐系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,协同过滤算法商品推荐系统的有效运用可以帮助管理人员准确快速地处理信息。 协同过滤算法商品推荐系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的...https://blog.csdn.net/m0_58065010/article/details/141932971
4.基于协同过滤的商品个性化推荐算法应用研究摘要:个性化商品推荐系统是电子商务平台系统的重要组成部分,推荐效率的高低直接影响用户的购物体验和电子商务平台商品交易量的提升.近年来,电子商务平台的交易数据呈海量增长趋势,导致商品推荐的正确率下降、误差增大、效率降低,因此对商品个性化推荐算法的研究分析尤为必要.基于企业级阿里云机器学习PAI平台对商品协同过滤推荐...https://d.wanfangdata.com.cn/periodical/hbgcjszyxyxb202004006
5.基于协同过滤的银行产品推荐系统建模基于协同过滤的银行产品推荐系统建模1 李欣璐,刘鲁 北京航空航天大学经济管理学院(100083),北京 摘 要:本文根据银行产品和银行业的自身特点,采用协同过滤算法,设计了银行产品推荐 系统模型。该模型从客户和产品两个方面对交易明细进行数据分析,避免了协同过滤算法中 早期数据冷起动问题,该系统模型最终生成的客户/产品/时...https://doc.mbalib.com/view/24d1b64326ed4662a3fd330da1f4b956.html
6.PythonDjango网页界面协同过滤推荐算法实现商品管理与推荐商品管理与推荐系统,本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术搭建显示界面,后端采用Django框架处理用户的请求响应+ 目录 介绍 创新点:使用协同过滤算法,以用户对商品的评分作为依据,在猜你喜欢界面中实现对当前登录用户的个性化推荐。 主要功能有: 系统分为用户和管理员两个角色。 用户可以...https://www.jb51.net/python/305546cjo.htm
7.CollaborativeFiltering(协同过滤)算法详解基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分。根据不同用户对相同商品或内容的态度和偏好程度计算用户之间的关系。在有相同喜好的用户间进行商品推荐。简单的说就是如果A,B两个用户都购买了x、y、z三本图书,并且给出了...https://cloud.tencent.com/developer/article/1085760
8.GitHub系统实现 算法(基于物品的协同过滤算法(ItemCF))设计与实现 基于物品的协同过滤算法主要有两步: 计算物品之间的相似度。 根据物品的相似度和用户的历史行为给用户生成推荐列表。 设N(i)是表示喜欢物品 i 的用户数。N(i)?N(j)表示同时喜欢物品 i 物品 j 的用户数。则物品 i 与物品 j 的相似度为: ...https://github.com/Sicmatr1x/EMAN
9.联邦学习怎样应用在推荐系统中?对于模型的联邦化,可以划分为基于协同过滤的推荐算法的联邦化、基于深度学习的推荐算法的联邦化和基于元学习的推荐算法的联邦化三个类别。 在此分类下,一些经典的和前沿的推荐模型的联邦化例子及其特点如图3所示。 图3推荐模型的联邦化 2.3隐私保护技术的应用 ...https://aidc.shisu.edu.cn/62/f3/c13626a156403/page.htm