您的位置:

基于物品的推荐算法python,购物推荐算法

本文目录一览:

猜你喜欢是如何猜的——常见推荐算法介绍

自从头条系的产品今日头条和抖音火了之后,个性化推荐就进入了大众的视野,如果我们说搜索时人找信息的话,那么推荐就是信息找人。搜索是通过用户主动输入索引信息告诉机器自己想要的东西,那么推荐的这个索引是什么才能让信息找到人呢?

第一类索引是“你的历史”,即基于你以前在平台上对某物品产生的行为(点赞,转发,评论或者收藏),寻找与你产生过相似行为的用户所喜欢的其他物品或者与你喜欢的物品相似的其他物品来为你推荐。这一基于用户行为相似的算法有:协同过滤算法、基于内容的推荐算法和基于标签的推荐算法。

基于用户的协同过滤算法是寻找与A用户有相似行为的所有B用户所喜欢的而A用户还不知道的物品推荐给A用户 。该算法包括两个步骤:

-根据用户所喜欢的物品计算用户间相似度,找到与目标用户相似的用户集合;

-找到该用户集合所喜欢的而目标用户所不知道的物品。

那么,找出一批物品以后哪个先推荐哪个后推荐?用户间相似程度大的先推荐,用户对物品的感兴趣程度大要先推荐。即假设A用户与B用户的相似程度为0.9,与C用户的相似程度为0.7,用户B喜欢物品a和物品b的程度分别为1和2,用户C喜欢物品a和物品b的程度分别为0.1和0.5,那么先推荐物品b。多个用户多个物品,只要拟定了用户间的相似度和用户对物品的感兴趣程度,即可对物品进行打分并且进行综合排序。

基于物品的协同过滤算法是根据用户行为而不是物品本身的相似度来判断物品的相似度 ,即如果物品A和物品B被很多的用户同时喜欢,那么我们就认为物品A和物品B是相似的。该算法也是包括两个步骤:

-根据用户行为计算物品间的相似度;

-根据物品的相似度和用户的历史行为给用户生成推荐列表。

与UserCF相似的是,同样会遇到推荐的先后顺序问题,那么ItemCF所遵循的原则是:物品间相似程度大的先推荐,用户对物品的感兴趣程度大要先推荐。假设用户对物品a和物品b感兴趣的程度分别为1和0.5,物品a与物品c和物品d的相似度分别为0.5和0.1,物品b与物品c和物品d的相似度分别为0.3和0.4,那么先推荐物品d。用户喜欢多个物品,并且多个物品与其他物品都有相似的情况下,只要拟定了用物品间的相似度和用户对物品的感兴趣程度,即可对物品进行打分并且进行综合排序。

协同过滤算法的核心都是通过用户行为来计算相似度,User-CF是通过用户行为来计算用户间的相似度,Item-CF是通过用户行为来计算物品间的相似度。

推荐算法很重要的一个原理是为用户推荐与用户喜欢的物品相似的用户又不知道的物品。物品的协同过滤算法是通过用户行为来衡量物品间的相似(喜欢物品A的用户中,同时喜欢物品B的用户比例越高,物品A与物品B的相似程度越高),而基于内容的推荐算法衡量则是通过物品本身的内容相似度来衡量物品间的相似。

假如,你看了东野圭吾的《解忧杂货店》,那么下次系统会给你推荐东野圭吾的《白夜行》。假设你看了小李子的《泰坦尼克号》,系统再给你推荐小李子的《荒野猎人》。

该算法与前两种不同的是,将用户和物品之间使用“标签”进行联系,让用户对喜欢的物品做记号(标签),将同样具有这些记号(标签)的其他物品认为很大程度是相似的并推荐给用户。其基本步骤如下:

统计用户最常用的标签

对于每个标签,统计最常被打过这个标签次数最多的物品

将具有这些标签最热门的物品推荐给该用户

目前,国内APP中,豆瓣就是使用基于标签的推荐算法做个性化的推荐。

第二类索引是“你的朋友”,基于你的社交好友来进行推荐,即基于社交网络的推荐。例如,微信看一看中的功能“朋友在看”就是最简单的基于社交网络的推荐,只要用户点击公众号文章的“在看”,就会出现在其好友的“朋友在看”的列表中。

复杂一点的算法会考虑用户之间的熟悉程度和兴趣的相似度来进行推荐。目前,在信息流推荐领域,基于社交网络进行推荐的最流行的算法是Facebook的EdgeRank算法,即为用户推荐其好友最近产生过重要行为(评论点赞转发收藏)的信息。

第三类索引是“你所处的环境”,基于你所处的时间、地点等上下文信息进行推荐。例如,我们看到很APP中的“最近最热门”,就是基于时间上下文的非个性化推荐;以及,美团和饿了么这些基于位置提供服务的APP中,“附近商家”这一功能就是基于用户位置进行推荐。高德地图在为用户推荐驾驶路线时,会考虑不同路线的拥堵程度、红绿灯数量等计算路线用和路程距离再进行综合排序推荐。

很多时候,基于时间上下文的推荐会协同过滤这类个性化推荐算法结合使用。例如,在使用协同过滤推荐策略的时候,会将时间作为其中一个因素考虑进入推荐策略中,最近的信息先推荐。

以上就是常见的推荐算法。作为产品人,我们不需要知道如何实现,但是我们必须知道这些推荐算法的原理,知道在什么场景下如何去做推荐才能提升推荐的效率,这才是产品经理的价值所在。

参考资料:《推荐算法实战》项亮

常见的推荐算法

根据用户兴趣和行为,向用户推荐所需要的信息,帮助用户在海量的信息中快速发现自己真正需要的东西。 所以推荐系统要解决的问题用户没用明确的需求以及信息存在过载 。推荐系统一般要基于以下来搭建:

1、根据业务来定义自身产品的热门标准

2、用户信息:比如性别、年龄、职业、收入等

3、用户行为

4、社会化关系

1、非个性化推荐

在冷启动方面我们精彩用非个性化推荐来解决问题。常见的有:热门推荐,编辑推荐,最新推荐等。下面是3个场景下的排序介绍:

热门推荐:根据业务类型确定排名核心指标,比如阅读数,其次要考虑避免马太效应,所以增加1个维度:时间。一般情况一个内容的热度是随着时间不断下降的,所以需要设定重力因子G,它决定热度随着时间流逝下降的速度。热度初始值由阅读数决定,我们假设R为阅读书,距离发帖时间的时间为T,重力因子为G,热度为rank。 根据热度随着时间而不断下降,且是非线性的,所以我们用指数函数来表达时间和热度的关系:rank=R/(T)^G,下图为热度的基本曲线:

通过该函数,我们可以随意调整参数来控制曲线的平坦和陡峭,如果G越大,曲线越陡峭说明热度下降越快。如果我们要调整热度初始值,可对R进行调整,比如R1=R^0.8,来缩短每篇文章的初始热度值

编辑推荐:一般由编辑在后台进行设置

最新推荐:如果无其他规则,一般按内容更新时间/创建时间来倒序

2、基于用户基本信息推荐(人口统计学)

根据系统用户的基本信息如:领域、职位、工作年龄、性别和所在地等。根据这些信息给用户推荐感兴趣或者相关的内容。

常见的用户基本信息有:性别,年龄,工作、收入、领域、职位、所在地,手机型号、网络条件、安装渠道、操作系统等等。根据这些信息来关联我们数据源,比如年龄-关联电影表、收入-关联商品类型表,性别-文章关联表等等。然后设定权重,给予个性化的推荐。

步骤1:用户建模,收集用户基本信息,建立兴趣图谱,标签体系树状结构然后配上权重

步骤2:内容建模,细分内容的元数据,将步骤1的用户标签和元数据连接,然后进行推荐

2、基于内容基本的推荐

根据推荐物品或者信息的元数据,发现物品或者信息的相关性, 然后基于用户以往的喜好记录 ,推荐给用户相似的物品。

内容的一些基本属性:tag、领域、主题、类型、关键字、来源等

3、基于协同过滤的推荐

这种算法基于一种物以类聚人以群分的假设, 喜欢相同物品的用户更有可能具有相同的兴趣 。基于协同过滤推荐系统一般应用于有用户评分的系统中,通过分数去刻画用户对于物品的喜好。根据维度可分为2种:

1、基于用户:找到和你相似的人推荐他们看过而你没有看过的内容

比如下面,系统判断甲乙2个用户是相似的,那么会给甲推荐短视频相关内容,会给乙推荐数据分析相关内容

甲:产品经理、运营、数据分析

乙:产品经理、运营、短视频

丙:比特币、创业、硅谷

步骤1:找到和目标用户兴趣相似的用户集合

步骤2:找到集合中用户喜欢的且目标用户没有被推荐过的内容

2、基于物品:以物为本建立各商品之间相似度关系矩阵,用户看了x也会看y

比如下面,甲和乙分别不约而同看了产品经理和数据分析,说明喜欢产品经理和数据分析的用户重合度高,说明两个内容相似。所以给喜欢产品经理的人推荐数据分析,给喜欢数据分析的人推荐产品经理。

这么理解:喜欢产品经理的人有m人,喜欢数据分析有n人,其中m中有80%用户与n中80%的用户是一样的,就意味着喜欢产品经理的用户也会喜欢数据分析。

产品经理:甲、乙,丁

数据分析:甲、乙,戊

增长黑客:甲、丙

喜欢物品A的用户,可能也会喜欢与物品A相似的物品B,通过历史行为计算出2个物品的相似度(比如m人喜欢A,n人喜欢B,有k人喜欢A又喜欢B,那么A和B的相似度可计算为k/m或者n,因为k属于m和n),这个推荐和内容推荐算法区别是内容推荐算法是根据内容的属性来关联, 而基于物品的协同过滤则是根据用户的行为对内容进行关联

4、基于用户社交关系推荐

用户与谁交朋友或者关系好,在一定程度上朋友的需求和自身的需求是相似的。所以向用户推荐好友喜欢的东西。本质上是好友关系链版的基于用户的协调过滤

5、推荐思路的拓展

根据不同使用场景进行不同的推荐,可细分的场景包括用户使用的:时间、地点、心情、网络环境、兴趣、上下文信息以及使用场景。每个场景的推荐内容都不一样,所以往往一个系统都是由多种推荐方式组成,比如加权混合。

加权混合:用线性公式将几种不同的推荐按照一定权重组合起来,具体权重值需要反复测试调整。例子:加权混合=推荐1结果*a+推荐2结果*b+...+推荐n结果*n,其中abn为权重,和为1

下面分享一张来自知乎的图,供学习,侵删:

基于用户信息的推荐 与 基于用户的协同过滤:

两者都是计算用户的相似度, 但基于用户信息的推荐只考虑用户本身信息来计算相似度,而基于用户的协同过滤是基于用户历史偏好来计算相似度

基于内容的信息推荐 与 基于物品的协同过滤:

两者都是计算物品的相似度, 但是基于内容的信息推荐只考虑物品本身的属性特征来计算相似度,而基于物品的协同过滤是基于用户历史偏好来计算相似度

基于用户信息的推荐特点:

1、不需要历史数据,对用户基本信息建模

2、不依赖于物品,所以其他领域可无缝接入

3、因为用户基本信息一般变化不大,所以推荐效果一般

基于内容信息的推荐特点:

1、物品属性有限,很难获得有效又全的数据

2、需要获取用户喜欢的历史内容,再来推荐与内容相似的东西,所以有冷启动问题

基于用户/基于物品的协同过滤推荐特点:

1、需要获取用户的历史偏好,所以有冷启动问题

2、推荐效果依赖于大数据,数据越多,推荐效果就越好

怎样理解互联网行业“数据分析”的意义

互联网企业拥有大量的线上数据,而且数据量还在快速增长,除了利用大数据提升自己的业务之外,互联网企业已经开始实现数据业务化,利用大数据发现新的商业价值。

以阿里巴巴为例,它不仅在不断加强个性化推荐、“千人千面”这种面向消费者的大数据应用,并且还在尝试利用大数据进行智能客户服务,这种应用场景会逐渐从内部应用延展到外部很多企业的呼叫中心之中。

在面向商家的大数据应用中,以“生意参谋”为例,超过 600 万商家在利用“生意参谋”提升自己的电商店面运营水平。除了面向自己的生态之外,阿里巴巴数据业务化也在不断加速,“芝麻信用”这种基于收集的个人数据进行个人信用评估的应用获得了长足发展,应用场景从阿里巴巴的内部延展到越来越多的外部场景,如租车、酒店、签证等。

因为客户的所有行为都会在互联网平台上留下痕迹,所以互联网企业可以方便地获取大量的客户行为信息。由互联网商务平台产生的信息一般具有真实性和确定性,通过运用大数据技术对这些数据进行分析,可以帮助企业制定出具有针对性的服务策略,从而获取更大的效益。近年来的实践证明,合理地运用大数据技术能够将电子商务的营业效率提高 60% 以上。

大数据在过去几年中已经改变了电子商务的面貌,具体来讲,电子商务行业的大数据应用有以下几个方面:精准营销、个性化服务、商品个性化推荐。

1. 精准营销

互联网企业使用大数据技术采集有关客户的各类数据,并通过大数据分析建立“用户画像”来抽象地描述一个用户的信息全貌,从而可以对用户进行个性化推荐、精准营销和广告投放等。

当用户登录网站的瞬间,系统就能预测出该用户今天为何而来,然后从商品库中把合适的商品找出来,并推荐给他。图 1 显示了用户画像会包括哪些用户基本信息和特性。

图 1 用户画像

大数据支持下的营销核心在于,让企业的业务在合适的时间,通过合适的载体,以合适的方式,推送给最需要此业务的用户。

首先,大数据营销具有很强的时效性。在互联网时代,用户的消费行为极易在短时间内发生变化,大数据营销可以在用户需求最旺盛时及时进行营销策略实施。

其次,可以实施个性化、差异化营销。大数据营销可以根据用户的兴趣爱好、在某一时间点的需求,做到对细分用户的一对一的营销,让业务的营销做到有的放矢,并可以根据实时性的效果反馈,及时调整营销策略。

最后,大数据营销对目标用户的信息可以进行关联性分析。大数据可以对用户的各种信息进行多维度的关联分析,从大量数据中发现数据项集之间有趣的关联和相关联系。

例如,通过发现用户购物篮中的不同商品之间的联系,分析出用户的其他消费习惯。通过了解哪些商品频繁地被用户同时购买,帮助营销人员从用户的一种商品消费习惯,发现用户另外的商品消费规律,从而针对此用户制定出相关商品的营销策略。图 2 显示了网站会根据用户画像为不同客户推荐不同商品。

图 2 精准营销

例如,某电子商务平台通过客户的网络浏览记录和购买记录等掌握客户的消费模式,从而分析并分类客户的消费相关特性。如收入、家庭特征、购买习惯等,最终掌握客户特征,并基于这些特征判断其可能关注的产品与服务。

从消费者进入网站开始,网站在列表页、单品页、购物车页等 4 个页面,部署了 5 种应用不同算法的推荐栏为其推荐感兴趣的商品,从而提高商品曝光率,促进交叉和向上销售。从多个角度对网站进行全面优化后,商城下定订单转化率增长了 66.7%,下定商品转化率增长了 18%,总销量增长了 46%。

在美国的沃尔玛大卖场,当收银员扫描完顾客所选购的商品后,POS 机上会显示出一些附加信息,然后售货员会根据这些信息提醒顾客还可以购买哪些商品。沃尔玛在大数据系统支持下实现的“顾问式营销”系统能够建立预测模型,例如,如果顾客的购物车中有不少啤酒、红酒和沙拉,则有 80% 的可能需要买配酒小菜、作料。

2. 个性化服务

电子商务具有提供个性化服务的先天优势,可以通过技术支持实时获得用户的在线记录,并及时为他们提供定制化服务。

许多电商都已经尝试了依靠数据分析,在首页为用户提供全面的个性化的商品推荐。海尔和天猫提供了让用户在网上定制电视的功能,顾客可以在电视机生产以前选择尺寸、边框、清晰度、能耗、颜色、接口等属性,再由厂商组织生产并送货到顾客家中。这样的个性化服务受到了广泛欢迎。

类似的定制服务还岀现在空调、服装等行业。这些行业通过满足个性化需求使顾客得到更满意的产品和服务,进而缩短设计、生产、运输、销售等周期,提升商业运转效率。

企业要为用户提供理想的个性化服务,首先必须通过数据充分了解用户的个性,其次是合理地掌控和设计服务的个性。了解用户个性是为用户提供他们想要的产品和服务的基础。企业需要在庞大的数据库中,找出最具有含金量的数据,然后,通过数据挖掘方法对用户进行聚类,再依据用户类型的特征设计针对性的服务。

个性化分散的单位可大可小,大到一个有同样需求的客户群体,小到每一个用户都是一个个性化需求单位。企业必须掌握好个性化服务的粒度,过于分散的个性化服务,会增加企业的服务成本和管理的复杂程度,所增加的个性化成本和实际收益需要成正比。

图 3 提供个性化旅游服务

携程的大数据应用从用户的角度岀发,分析基于携程所有用户的数据,包括用户在查询、浏览、预订、出行、评论等一系列旅行前后行为中所产生的数据。携程在剔除无效数据的同时,保证用户所留下的数据的真实性,然后将大量的数据进行实时筛选、分拣与重新组织并应用到用户的出行前、出行中、出行后的个性化需求中,如图 3 所示。

要做到个性化,明确用户的目标需求是至关重要的,不仅要看订单,还要关心用户所关心的内容。例如,同样是预订五星级酒店,有些用户对酒店设施十分敏感,有些看重酒店位置,有些则更在意酒店服务,对此,携程会根据用户的需求推荐不同的酒店。

美国塔吉特(Target)百货设立了一个迎婴聚会登记表,并对登记表中顾客的消费数据进行建模分析。他们发现,许多孕妇在第二个妊娠期的开始会买许多大包装的无香味护手霜,在怀孕的最初 20 周会大量购买补充钙、锌之类的保健品。

塔吉特最终选出了 25 种典型商品的消费数据,构建了“怀孕预测指数”。通过这个预测指数,塔吉特能够在很小的误差范围内预测到顾客的怀孕情况,从而就能在合适的时间把孕妇优惠广告寄发给顾客。

“Nike 跑鞋或腕带传感器”使耐克逐渐成为大数据营销的创新公司。运动者只要穿着 Nike 的跑鞋运动,与之关联的 iPod 就可以存储并显示运动日期、时间、距离、热量消耗值等数据。

Nike 通过跑步者上传的跑步路线掌握了主要城市最佳跑步路线的数据库,而且组织城市的跑步活动效果更好。目前,Nike 的运动网上社区有超过 500 万名活跃用户每天不停地上传数据,Nike 借此与消费者建立了前所未有的牢固关系。同时,海量的数据对于 Nike 了解用户习惯、改进产品、精准投放和精准营销也起到了不可替代的作用,Nike 甚至掌握了跑步者最喜欢听的歌是哪些。个性化服务离不开顾客的主动参与和分享,来源于客户的数据也能更精准地服务于客户。

“三只松鼠”近几年的快速发展,一方面是依靠品牌推广,另一方面是在数据分析的基础上不断完善细节,包括个性化的称呼、“三只松鼠”的卡通形象、赠品的差别化、不同的顾客标签分类以及用户体验等。“三只松鼠”通过 ERP 系统能够了解所有顾客在商城的购买记录,通过 CRM 系统能够准确抓取用户的评价,一些不经意的留言和评级会反映出他们的需求。

通过分析顾客过去在商城的购买习惯,用户的购买评价,来判断哪种口味的产品在哪个地区卖得最好,哪种产品是消费者最乐于接受的,从而进行更有针对性的产品首页推荐。同时,他们会对顾客进行个性化、人性化的标签分类和细化分析,从而根据这些分类,推送不同的产品类型。例如,爱老婆型顾客购买的产品主要是以老婆食用为主的,“三只松鼠”会在包裹里放上书信,以“松鼠”的口吻代替顾客给他老婆写一封信。

3. 商品个性化推荐

随着电子商务规模的不断扩大,商品数量和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。

个性化推荐系统通过分析用户的行为,包括反馈意见、购买记录和社交数据等,以分析和挖掘顾客与商品之间的相关性,从而发现用户的个性化需求、兴趣等,然后将用户感兴趣的信息、产品推荐给用户。

个性化推荐系统针对用户特点及兴趣爱好进行商品推荐,能有效地提高电子商务系统的服务能力,从而保留客户。

1)电子商务网站

随着电子商务的蓬勃发展,推荐系统在互联网中的优势地位也越来越明显。

在国际方面,Amazon 平台中采用的推荐算法被认为是非常成功的。在国内,比较大型的电子商务平台网站有淘宝网(包括天猫商城)、京东商城、当当网、苏宁易购等。

在这些电子商务平台中,网站提供的商品数量不计其数,网站中的用户规模也非常巨大。据不完全统计,天猫商城中的商品数量已经超过了 4 000 万。

在如此庞大的电商网站中,用户根据自己的购买意图输入关键字查询后,会得到很多相似的结果。用户在这些结果中也很难区分异同,难于选择合适的物品,推荐系统能够根据用户兴趣为用户推荐一些用户感兴趣的商品。电子商务网站利用推荐系统为用户推荐商品,方便了用户,从而也提高了网站的销售额。

2)电影视频网站

个性化推荐系统在电影和视频网站中的应用也很广泛,能够帮助用户在浩瀚的视频库中找到令他们感兴趣的视频。在该领域成功使用推荐系统的一家公司就是 Netflix。

Netflix 原先是一家 DVD 租赁网站,后来开始涉足在线视频业务。Netflix 非常重视个性化推荐技术,并且在 2006 年开始举办著名的 Netflix Prize 推荐系统比赛,希望研究人员能够将 Netflix 的推荐算法的预测准确度提升 10%。

该比赛对推荐系统的发展起到了重要的推动作用:一方面该比赛给学术界提供了一个实际系统中的大规模用户行为数据集(40 万用户对 2 万部电影的上亿条评分记录);另一方面,在 3 年的比赛中,参赛者提出了很多推荐算法,大大降低了推荐系统的预测误差。

图 4 是 Netflix 的电影推荐界面,包含了电影的标题和海报、用户反馈和推荐理由三部分。Netflix 使用的是基于物品的推荐算法,即给用户推荐和他们曾经喜欢的电影相似的电影。Netflix 宣称有 60% 的用户是通过其推荐系统找到感兴趣的电影和视频的。

图 4 Netflix 电影推荐

YouTube 作为美国最大的视频网站,拥有大量用户上传的视频内容。为了解决视频库的信息过载问题,YouTube 在个性化推荐领域也进行了深入研究,现在使用的也是基于物品的推荐算法。实验证明,YouTube 个性化推荐的点击率是热门视频点击率的两倍。

3)网络电台

个性化网络电台也很适合进行个性化推荐。首先,音乐很多,用户不可能听完所有的音乐再决定自己喜欢听什么,而且每年新的歌曲在以很快的速度增加,因此用户无疑面临着信息过载的问题。其次,人们听音乐时,一般都是把音乐作为一种背景乐来听,很少有人必须听某首特定的歌。对于普通用户来说,听什么歌都可以,只要能够符合他们当时的心情就可以了。因此,个性化音乐网络电台是非常符合个性化推荐技术的产品。

目前有很多知名的个性化音乐网络电台。国际上著名的有 Pandora 和 Last.fm | Play music, find songs, and discover artists,国内的代表则是豆瓣电台。这 3 个个性化网络电台都不允许用户点歌,而是给用户几种反馈方式:喜欢、不喜欢和跳过。经过用户一定时间的反馈,电台就可以从用户的历史行为中获得用户的兴趣模型,从而使用户的播放列表越来越符合用户对歌曲的兴趣。

Pandora 的算法主要是基于内容的,其音乐家和研究人员亲自听了上万首来自不同歌手的歌,然后对歌曲的不同特性(如旋律、节奏、编曲和歌词等)进行标注,这些标注被称为音乐的基因。然后,Pandora 会根据专家标注的基因计算歌曲的相似度,并给用户推荐和他之前喜欢的音乐在基因上相似的其他音乐。

Last.fm | Play music, find songs, and discover artists 记录了所有用户的听歌记录及用户对歌曲的反馈,在这一基础上计算出不同用户在歌曲上的喜好相似度,从而给用户推荐和他有相似听歌爱好的其他用户喜欢的歌曲。同时,Last.fm | Play music, find songs, and discover artists 也建立了一个社交网络,来让用户能够和其他用户建立联系,以及让用户给好友推荐自己喜欢的歌曲。Last.fm | Play music, find songs, and discover artists 没有使用专家标注,而是主要利用用户行为计算歌曲的相似度。

4)社交网络

社交网络中的个性化推荐技术主要应用在 3 个方面:利用用户的社交网络信息对用户进行个性化的物品推荐,信息流的会话推荐和给用户推荐好友。

Facebook 保存着两类最宝贵的数据:一类是用户之间的社交网络关系,另一类是用户的偏好信息。

Facebook 推出了一个称为 Instant Personalization 的推荐 API,它能根据用户好友喜欢的信息,给用户推荐他们的好友最喜欢的物品。很多网站都使用了 Facebook 的推荐 API 来实现网站的个性化。

著名的电视剧推荐网站 Clicker 使用 Instant Personalization 给用户进行个性化视频推荐。Clicker 现在可以利用 Facebook 的用户行为数据来提供个性化的、用户可能感兴趣的内容“’流”了,而更重要的是,用户无须在 Clicker 网站上输入太多数据(通过评分、评论或观看 Clicker.com 上的视频等方式),Clicker 就能提供这样的服务。

除了利用用户在社交网站的社交网络信息给用户推荐本站的各种物品外,社交网站本身也会利用社交网络给用户推荐其他用户在社交网站的会话。每个用户在 Facebook 的个人首页都能看到好友的各种分享,并且能对这些分享进行评论。每个分享和它的所有评论被称为一个会话,Facebook 开发了 EdgeRank 算法对这些会话排序,使用户能够尽量看到熟悉的好友的最新会话。

除了根据用户的社交网络及用户行为给用户推荐内容,社交网站还通过个性化推荐服务给用户推荐好友。

5)其他应用

因为电子商务企业基本上实现了业务流程的各个环节的数据化,所以可以充分利用大数据技术对这些数据进行挖掘分析来优化其业务流程,提高业务利润。除了前面介绍的几个应用之外,大数据在电子商务行业还可以应用在其他许多方面。

① 动态定价和特价优惠

电子商务企业可以通过使用数据构建客户资料,并发现用户喜欢花费多少费用和喜欢购买什么产品,从而通过跟踪客户的消费行为,使用大数据分析来开发灵活的定价和折扣政策。例如,如果分析显示用户对特定类别商品的兴趣飙升,则电子商务企业可以提供打折或买一送一优惠。

② 定制优惠

电子商务企业可以通过使用数据来确定客户的购买习惯,并根据以前的购买方式向他们发送有针对性的特价优惠和折扣代码。数据也可以用于在客户中止购买或只看不买时重新吸引客户,例如,通过发送电子邮件提醒客户他们查看过的产品或邀请他们完成购买。

③ 供应链管理

电子商务企业可以使用大数据更有效地管理供应链。数据分析可以揭示供应链中的任何延迟或潜在的库存问题。如果某个项目存在问题,则可以立即将其从销售中删除,以免破坏客户服务问题。

④ 预测分析

预测分析是指利用大数据技术分析电子商务业务的各种渠道,帮助企业制定未来运营的业务计划。数据分析可能会显示电商企业在线商店部门的新购买趋势或销售减缓的商品。

使用这些信息就可以帮助规划下一阶段的库存,并制定新的市场目标。随时了解电子商务的最新趋势具有一定的挑战性,但是利用大数据技术可以大大提高企业的利润,并帮助企业建立一个成功的前瞻性思维业务。如果不利用挖掘大数据的力量,就可能会错过市场成功的机遇。

如何学习python语言在推荐算法

看推荐系统实战,把里边的算法都手写一遍,里边的代码都是python实现的。

另外可以学习机器学习实战这本书,还可以在实验楼系统里做实验。也是python的

推荐算法简介

写在最前面:本文内容主要来自于书籍《推荐系统实践》和《推荐系统与深度学习》。

推荐系统是目前互联网世界最常见的智能产品形式。从电子商务、音乐视频网站,到作为互联网经济支柱的在线广告和新颖的在线应用推荐,到处都有推荐系统的身影。推荐算法是推荐系统的核心,其本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。

推荐系统的主要功能是以个性化的方式帮助用户从极大的搜索空间中快速找到感兴趣的对象。因此,目前所用的推荐系统多为个性化推荐系统。个性化推荐的成功应用需要两个条件:

在推荐系统的众多算法中,基于协同的推荐和基于内容的推荐在实践中得到了最广泛的应用。本文也将从这两种算法开始,结合时间、地点上下文环境以及社交环境,对常见的推荐算法做一个简单的介绍。

基于内容的算法的本质是对物品内容进行分析,从中提取特征,然后基于用户对何种特征感兴趣来推荐含有用户感兴趣特征的物品。因此,基于内容的推荐算法有两个最基本的要求:

下面我们以一个简单的电影推荐来介绍基于内容的推荐算法。

现在有两个用户A、B和他们看过的电影以及打分情况如下:

其中问好(?)表示用户未看过。用户A对《银河护卫队 》《变形金刚》《星际迷航》三部科幻电影都有评分,平均分为 4 .7 分 ( (5+4+5 ) / 3=4.7 );对《三生三世》《美人鱼》《北京遇上西雅图》三部爱情电影评分平均分为 2.3 分 ( ( 3十2+2 ) /3=2.3 )。现在需要给A推荐电影,很明显A更倾向于科幻电影,因此推荐系统会给A推荐独立日。而对于用户B,通过简单的计算我们可以知道更喜欢爱情电影,因此给其推荐《三生三世》。当然,在实际推荐系统中,预测打分比这更加复杂些,但是其原理是一样的。

现在,我们可以将基于内容的推荐归纳为以下四个步骤:

通过上面四步就能快速构建一个简单的推荐系统。基于内容的推荐系统通常简单有效,可解释性好,没有物品冷启动问题。但他也有两个明显的缺点:

最后,顺便提一下特征提取方法:对于某些特征较为明确的物品,一般可以直接对其打标签,如电影类别。而对于文本类别的特征,则主要是其主题情感等,则些可以通过tf-idf或LDA等方法得到。

基于协同的算法在很多地方也叫基于邻域的算法,主要可分为两种:基于用户的协同算法和基于物品的协同算法。

啤酒和尿布的故事在数据挖掘领域十分有名,该故事讲述了美国沃尔玛超市统计发现啤酒和尿布一起被购买的次数非常多,因此将啤酒和尿布摆在了一起,最后啤酒和尿布的销量双双增加了。这便是一个典型的物品协同过滤的例子。

基于物品的协同过滤指基于物品的行为相似度(如啤酒尿布被同时购买)来进行物品推荐。该算法认为,物品A和物品B具有很大相似度是因为喜欢物品A的用户大都也喜欢物品B。

基于物品的协同过滤算法主要分为两步:

基于物品的协同过滤算法中计算物品相似度的方法有以下几种:

(1)基于共同喜欢物品的用户列表计算。

此外,John S. Breese再其论文中还提及了IUF(Inverse User Frequence,逆用户活跃度)的参数,其认为活跃用户对物品相似度的贡献应该小于不活跃的用户,应该增加IUF参数来修正物品相似度的公式:

上面的公式只是对活跃用户做了一种软性的惩罚, 但对于很多过于活跃的用户, 比如某位买了当当网80%图书的用户, 为了避免相似度矩阵过于稠密, 我们在实际计算中一般直接忽略他的兴趣列表, 而不将其纳入到相似度计算的数据集中。

(2)基于余弦相似度计算。

(3)热门物品的惩罚。

从上面(1)的相似度计算公式中,我们可以发现当物品 i 被更多人购买时,分子中的 N(i) ∩ N(j) 和分母中的 N(i) 都会增长。对于热门物品,分子 N(i) ∩ N(j) 的增长速度往往高于 N(i),这就会使得物品 i 和很多其他的物品相似度都偏高,这就是 ItemCF 中的物品热门问题。推荐结果过于热门,会使得个性化感知下降。以歌曲相似度为例,大部分用户都会收藏《小苹果》这些热门歌曲,从而导致《小苹果》出现在很多的相似歌曲中。为了解决这个问题,我们对于物品 i 进行惩罚,例如下式, 当α∈(0, 0.5) 时,N(i) 越小,惩罚得越厉害,从而使热门物品相关性分数下降( 博主注:这部分未充分理解 ):

此外,Kary pis在研究中发现如果将ItemCF的相似度矩阵按最大值归一化, 可以提高推荐的准确率。 其研究表明, 如果已经得到了物品相似度矩阵w, 那么可以用如下公式得到归一化之后的相似度矩阵w':

归一化的好处不仅仅在于增加推荐的准确度,它还可以提高推荐的覆盖率和多样性。一般来说,物品总是属于很多不同的类,每一类中的物品联系比较紧密。假设物品分为两类——A和B, A类物品之间的相似度为0.5, B类物品之间的相似度为0.6, 而A类物品和B类物品之间的相似度是0.2。 在这种情况下, 如果一个用户喜欢了5个A类物品和5个B类物品, 用ItemCF给他进行推荐, 推荐的就都是B类物品, 因为B类物品之间的相似度大。 但如果归一化之后, A类物品之间的相似度变成了1, B类物品之间的相似度也是1, 那么这种情况下, 用户如果喜欢5个A类物品和5个B类物品, 那么他的推荐列表中A类物品和B类物品的数目也应该是大致相等的。 从这个例子可以看出, 相似度的归一化可以提高推荐的多样性。

那么,对于两个不同的类,什么样的类其类内物品之间的相似度高,什么样的类其类内物品相似度低呢?一般来说,热门的类其类内物品相似度一般比较大。如果不进行归一化,就会推荐比较热门的类里面的物品,而这些物品也是比较热门的。因此,推荐的覆盖率就比较低。相反,如果进行相似度的归一化,则可以提高推荐系统的覆盖率。

最后,利用物品相似度矩阵和用户打过分的物品记录就可以对一个用户进行推荐评分:

基于用户的协同算法与基于物品的协同算法原理类似,只不过基于物品的协同是用户U购买了A物品,会计算经常有哪些物品与A一起购买(也即相似度),然后推荐给用户U这些与A相似的物品。而基于用户的协同则是先计算用户的相似性(通过计算这些用户购买过的相同的物品),然后将这些相似用户购买过的物品推荐给用户U。

基于用户的协同过滤算法主要包括两个步骤:

步骤(1)的关键是计算用户的兴趣相似度,主要是利用用户的行为相似度计算用户相似度。给定用户 u 和 v,N(u) 表示用户u曾经有过正反馈(譬如购买)的物品集合,N(v) 表示用户 v 曾经有过正反馈的物品集合。那么我们可以通过如下的 Jaccard 公式简单的计算 u 和 v 的相似度:

或通过余弦相似度:

得到用户之间的相似度之后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。如下的公式度量了UserCF算法中用户 u 对物品 i 的感兴趣程度:

首先回顾一下UserCF算法和ItemCF算法的推荐原理:UserCF给用户推荐那些和他有共同兴趣爱好的用户喜欢的物品, 而ItemCF给用户推荐那些和他之前喜欢的物品具有类似行为的物品。

(1)从推荐场景考虑

首先从场景来看,如果用户数量远远超过物品数量,如购物网站淘宝,那么可以考虑ItemCF,因为维护一个非常大的用户关系网是不容易的。其次,物品数据一般较为稳定,因此物品相似度矩阵不必频繁更新,维护代价较小。

UserCF的推荐结果着重于反应和用户兴趣相似的小群体的热点,而ItemCF的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反应了用户所在小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反应了用户自己的个性传承。因此UserCF更适合新闻、微博或微内容的推荐,而且新闻内容更新频率非常高,想要维护这样一个非常大而且更新频繁的表无疑是非常难的。

在新闻类网站中,用户的兴趣爱好往往比较粗粒度,很少会有用户说只看某个话题的新闻,而且往往某个话题也不是每天都会有新闻。 个性化新闻推荐更强调新闻热点,热门程度和时效性是个性化新闻推荐的重点,个性化是补充,所以 UserCF 给用户推荐和他有相同兴趣爱好的人关注的新闻,这样在保证了热点和时效性的同时,兼顾了个性化。

(2)从系统多样性(也称覆盖率,指一个推荐系统能否给用户提供多种选择)方面来看,ItemCF的多样性要远远好于UserCF,因为UserCF更倾向于推荐热门物品。而ItemCF具有较好的新颖性,能够发现长尾物品。所以大多数情况下,ItemCF在精度上较小于UserCF,但其在覆盖率和新颖性上面却比UserCF要好很多。

在介绍本节基于矩阵分解的隐语义模型之前,让我们先来回顾一下传统的矩阵分解方法SVD在推荐系统的应用吧。

基于SVD矩阵分解在推荐中的应用可分为如下几步:

SVD在计算前会先把评分矩阵 A 缺失值补全,补全之后稀疏矩阵 A 表示成稠密矩阵,然后将分解成 A' = U∑V T 。但是这种方法有两个缺点:(1)补成稠密矩阵后需要耗费巨大的储存空间,对这样巨大的稠密矩阵进行储存是不现实的;(2)SVD的计算复杂度很高,对这样大的稠密矩阵中进行计算式不现实的。因此,隐语义模型就被发明了出来。

更详细的SVD在推荐系统的应用可参考 奇异值分解SVD简介及其在推荐系统中的简单应用 。

隐语义模型(Latent Factor Model)最早在文本挖掘领域被提出,用于找到文本的隐含语义。相关的算法有LSI,pLSA,LDA和Topic Model。本节将对隐语义模型在Top-N推荐中的应用进行详细介绍,并通过实际的数据评测该模型。

隐语义模型的核心思想是通过隐含特征联系用户兴趣和物品。让我们通过一个例子来理解一下这个模型。

现有两个用户,用户A的兴趣涉及侦探小说、科普图书以及一些计算机技术书,而用户B的兴趣比较集中在数学和机器学习方面。那么如何给A和B推荐图书呢?

我们可以对书和物品的兴趣进行分类。对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。简言之,这个基于兴趣分类的方法大概需要解决3个问题:

对于第一个问题的简单解决方案是找相关专业人员给物品分类。以图书为例,每本书出版时,编辑都会给出一个分类。但是,即使有很系统的分类体系,编辑给出的分类仍然具有以下缺点:(1)编辑的意见不能代表各种用户的意见;(2)编辑很难控制分类的细粒度;(3)编辑很难给一个物品多个分类;(4)编辑很难给一个物品多个分类;(5)编辑很难给出多个维度的分类;(6)编辑很难决定一个物品在某一个类别中的权重。

为了解决上述问题,研究员提出可以从数据出发,自动找到那些分类,然后进行个性化推荐。隐语义模型由于采用基于用户行为统计的自动聚类,较好地解决了上面提出的5个问题。

LFM将矩阵分解成2个而不是3个:

推荐系统中用户和物品的交互数据分为显性反馈和隐性反馈数据。隐式模型中多了一个置信参数,具体涉及到ALS(交替最小二乘法,Alternating Least Squares)中对于隐式反馈模型的处理方式——有的文章称为“加权的正则化矩阵分解”:

一个小细节:在隐性反馈数据集中,只有正样本(正反馈)没有负反馈(负样本),因此如何给用户生成负样本来进行训练是一个重要的问题。Rong Pan在其文章中对此进行了探讨,对比了如下几种方法:

用户行为很容易用二分图表示,因此很多图算法都可以应用到推荐系统中。基于图的模型(graph-based model)是推荐系统中的重要内容。很多研究人员把基于领域的模型也称为基于图的模型,因为可以把基于领域的模型看作基于图的模型的简单形式。

在研究基于图的模型之前,需要将用户行为数据表示成图的形式。本节的数据是由一系列用户物品二元组 (u, i) 组成的,其中 u 表示用户对物品 i 产生过行为。

令 G(V, E) 表示用户物品二分图,其中 V=V U UV I 由用户顶点 V U 和物品节点 V I 组成。对于数据集中每一个二元组 (u, i) ,图中都有一套对应的边 e(v u , v i ),其中 v u ∈V U 是用户对应的顶点,v i ∈V I 是物品i对应的顶点。如下图是一个简单的物品二分图,其中圆形节点代表用户,方形节点代表物品,用户物品的直接连线代表用户对物品产生过行为。比如下图中的用户A对物品a、b、d产生过行为。

度量图中两个顶点之间相关性的方法很多,但一般来说图中顶点的相关性主要取决于下面3个因素:

而相关性高的一对顶点一般具有如下特征:

举个例子,如下图,用户A和物品c、e没有边直连,但A可通过一条长度为3的路径到达c,而Ae之间有两条长度为3的路径。那么A和e的相关性要高于顶点A和c,因而物品e在用户A的推荐列表中应该排在物品c之前,因为Ae之间有两条路径。其中,(A,b,C,e)路径经过的顶点的出度为(3,2,2,2),而 (A,d,D,e) 路径经过了一个出度比较大的顶点D,所以 (A,d,D,e) 对顶点A与e之间相关性的贡献要小于(A,b,C,e)。

基于上面3个主要因素,研究人员设计了很多计算图中顶点相关性的方法,本节将介绍一种基于随机游走的PersonalRank算法。

假设要给用户u进行个性化推荐,可以从用户u对应的节点 v u 开始在用户物品二分图上进行随机游走。游走到任一节点时,首先按照概率α决定是继续游走还是停止这次游走并从 v u 节点重新开始游走。若决定继续游走,则从当前节点指向的节点中按照均匀分布随机选择一个节点作为游走下次经过的节点。这样,经过很多次随机游走后,每个物品被访问到的概率会收敛到一个数。最终的推荐列表中物品的权重就是物品节点的访问概率。

上述算法可以表示成下面的公式:

虽然通过随机游走可以很好地在理论上解释PersonalRank算法,但是该算法在时间复杂度上有明显的缺点。因为在为每个用户进行推荐时,都需要在整个用户物品二分图上进行迭代,知道所有顶点的PR值都收敛。这一过程的时间复杂度非常高,不仅无法在线进行实时推荐,离线计算也是非常耗时的。

有两种方法可以解决上面PersonalRank时间复杂度高的问题:

(1)减少迭代次数,在收敛之前停止迭代。但是这样会影响最终的精度。

(2)从矩阵论出发,重新涉及算法。另M为用户物品二分图的转移概率矩阵,即:

网络社交是当今社会非常重要甚至可以说是必不可少的社交方式,用户在互联网上的时间有相当大的一部分都用在了社交网络上。

当前国外最著名的社交网站是Facebook和Twitter,国内的代表则是微信/QQ和微博。这些社交网站可以分为两类:

需要指出的是,任何一个社交网站都不是单纯的社交图谱或兴趣图谱。如QQ上有些兴趣爱好群可以认识不同的陌生人,而微博中的好友也可以是现实中认识的。

社交网络定义了用户之间的联系,因此可以用图定义社交网络。我们用图 G(V,E,w) 定义一个社交网络,其中V是顶点集合,每个顶点代表一个用户,E是边集合,如果用户va和vb有社交网络关系,那么就有一条边 e(v a , v b ) 连接这两个用户,而 w(v a , v b )定义了边的权重。一般来说,有三种不同的社交网络数据:

和一般购物网站中的用户活跃度分布和物品流行度分布类似,社交网络中用户的入度(in degree,表示有多少人关注)和出度(out degree,表示关注多少人)的分布也是满足长尾分布的。即大部分人关注的人都很少,被关注很多的人也很少。

给定一个社交网络和一份用户行为数据集。其中社交网络定义了用户之间的好友关系,而用户行为数据集定义了不同用户的历史行为和兴趣数据。那么最简单的算法就是给用户推荐好友喜欢的物品集合。即用户u对物品i的兴趣 p ui 可以通过如下公式计算。

用户u和用户v的熟悉程度描述了用户u和用户在现实社会中的熟悉程度。一般来说,用户更加相信自己熟悉的好友的推荐,因此我们需要考虑用户之间的熟悉度。下面介绍3中衡量用户熟悉程度的方法。

(1)对于用户u和用户v,可以使用共同好友比例来计算他们的相似度:

上式中 out(u) 可以理解为用户u关注的用户合集,因此 out(u) ∩ out(v) 定义了用户u、v共同关注的用户集合。

(2)使用被关注的用户数量来计算用户之间的相似度,只要将公式中的 out(u) 修改为 in(u):

in(u) 是指关注用户u的集合。在无向社交网络中,in(u)和out(u)是相同的,而在微博这种有向社交网络中,这两个集合的含义就不痛了。一般来说,本方法适合用来计算微博大V之间的相似度,因为大v往往被关注的人数比较多;而方法(1)适用于计算普通用户之间的相似度,因为普通用户往往关注行为比较丰富。

(3)除此之外,还可以定义第三种有向的相似度:这个相似度的含义是用户u关注的用户中,有多大比例也关注了用户v:

这个相似度有一个缺点,就是在该相似度下所有人都和大v有很大的相似度,这是因为公式中的分母并没有考虑 in(v) 的大小,所以可以把 in(v) 加入到上面公式的分母,来降低大v与其他用户的相似度:

上面介绍了3种计算用户之间相似度(或称熟悉度)的计算方法。除了熟悉程度,还需要考虑用户之间的兴趣相似度。我们和父母很熟悉,但很多时候我们和父母的兴趣确不相似,因此也不会喜欢他们喜欢的物品。因此,在度量用户相似度时,还需要考虑兴趣相似度,而兴趣相似度可以通过和UserCF类似的方法度量,即如果两个用户喜欢的物品集合重合度很高,两个用户的兴趣相似度很高。

最后,我们可以通过加权的形式将两种权重合并起来,便得到了各个好有用户的权重了。

有了权重,我们便可以针对用户u挑选k个最相似的用户,把他们购买过的物品中,u未购买过的物品推荐给用户u即可。打分公式如下:

其中 w' 是合并后的权重,score是用户v对物品的打分。

node2vec的整体思路分为两个步骤:第一个步骤是随机游走(random walk),即通过一定规则随机抽取一些点的序列;第二个步骤是将点的序列输入至word2vec模型从而得到每个点的embedding向量。

随机游走在前面基于图的模型中已经介绍过,其主要分为两步:(1)选择起始节点;(2)选择下一节点。起始节点选择有两种方法:按一定规则抽取一定量的节点或者以图中所有节点作为起始节点。一般来说会选择后一种方法以保证所有节点都会被选取到。

在选择下一节点方法上,最简单的是按边的权重来选择,但在实际应用中需要通过广度优先还是深度优先的方法来控制游走范围。一般来说,深度优先发现能力更强,广度优先更能使社区内(较相似)的节点出现在一个路径里。

斯坦福大学Jure Leskovec教授给出了一种可以控制广度优先或者深度优先的方法。

以上图为例,假设第一步是从t随机游走到v,这时候我们要确定下一步的邻接节点。本例中,作者定义了p和q两个参数变量来调节游走,首先计算其邻居节点与上一节点t的距离d,根据下面的公式得到α:

一般从每个节点开始游走5~10次,步长则根据点的数量N游走根号N步。如此便可通过random walk生成点的序列样本。

得到序列之后,便可以通过word2vec的方式训练得到各个用户的特征向量,通过余弦相似度便可以计算各个用户的相似度了。有了相似度,便可以使用基于用户的推荐算法了。

推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,因此大量的用户行为数据就成为推荐系统的重要组成部分和先决条件。如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题。

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

针对用户冷启动,下面给出一些简要的方案:

(1)有效利用账户信息。利用用户注册时提供的年龄、性别等数据做粗粒度的个性化;

(2)利用用户的社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的物品;

(3)要求用户在登录时对一些物品进行反馈,手机用户对这些物品的兴趣信息,然后给用推荐那些和这些物品相似的物品;

(4)提供非个性化推荐。非个性化推荐的最简单例子就是热门排行榜,我们可以给用户推荐热门排行榜,然后等到用户数据收集到一定的时候,在切换为个性化推荐。

对于物品冷启动,可以利用新加入物品的内容信息,将它们推荐给喜欢过和他们相似的物品的用户。

对于系统冷启动,可以引入专家知识,通过一定高效的方式快速建立起物品的相关度表。

在上面介绍了一些推荐系统的基础算法知识,这些算法大都是比较经典且现在还在使用的。但是需要注意的是,在实践中,任何一种推荐算法都不是单独使用的,而是将多种推荐算法结合起来,也就是混合推荐系统,但是在这里并不准备介绍,感兴趣的可以查阅《推荐系统》或《推荐系统与深度学习》等书籍。此外,在推荐中非常重要的点击率模型以及基于矩阵的一些排序算法在这里并没有提及,感兴趣的也可自行学习。

虽然现在用的很多算法都是基于深度学习的,但是这些经典算法能够让我们对推荐系统的发展有一个比较好的理解,同时,更重要的一点——“推陈出新”,只有掌握了这些经典的算法,才能提出或理解现在的一些更好地算法。