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

基于Redis的推荐系统开发

作者头像
用户1263954
发布于 2018-01-30 07:03:05
发布于 2018-01-30 07:03:05
4K0
举报
文章被收录于专栏:IT技术精选文摘IT技术精选文摘

介绍

推荐系统并不总是需要用到复杂的机器学习技术.只要手头上有足够的数据,你就可以花很少的功夫开发一个推荐系统.一个最简单的推荐系统可以只是从用户感兴趣的表中查找所需要的推荐信息.当你已经有很多用户和其行为的数据时,使用协同过滤就是一个简单的推荐方案.例如,对于一个运用了协同过滤推荐算法的电子商务网站,你就可以知道哪些购买过睡袋的用户也购买了手电筒,灯笼和驱虫剂.而基于内容的推荐系统则进一步,它具有强大的预测功能,如基于用户的交互就能预测一个用户想要什么.本文将演示如何使用Redis基于用户的兴趣和协同过滤算法开发一个简单的推荐系统.

什么是Redis?

Redis是一个被经常当作数据库,缓存和消息代理来使用的内存型NoSQL数据存储.不像其它的内存型数据存储,它还能够将你的数据保存到磁盘上,同时也提供了大量的数据结构类型(Sets, Sorted Sets, Hashes, Lists, Strings, Bit Arrays, HyperLogLogs, and Geospatial Indexes). Redis命令可以帮助开发者以极低的复杂度在其数据结构上执行高性能操作.也就是说,Redis 的构建是基于性能和简单性的考量而出发的.

Redis的数据结构

Redis数据结构就像乐高的积木,可以帮助开发者实现低复杂度,低网络开销和低延时的具体功能,因为这些操作都是在仅临数据存储的内存中高效执行.多样而灵活的数据结构使得Redis与其它的K/V存储和NoSQL数据库相区分开来.Redis数据结构包括:

  • Strings
  • Hashes
  • Lists
  • Sets
  • Sorted sets
  • Bit Arrays
  • HyperLogLogs
  • Geospatial Indexes

什么是推荐引擎?

推荐引擎就是一个最可能为用户做出下一个选择的应用或微服务.推荐内容包括如用户最想听的下一首歌,他们最想看的下一场电影或者他们预定某服务后下一步可能做出的选择行为.

在系统层面,推荐引擎会匹配用户最可能感兴趣的物品.通过推送相关的个性化推荐给用户,应用会引导用户购买相关物品,提升他们在网站或APP上的停留时间或者点击想看的广告-最终帮助对收入,使用率的最大化.

一个有效的推荐引擎需要具备以下条件:

  1. 提供正确相关的选择给用户(这通常取决于所选择的算法).
  2. 能够实时的提供高性能的选择给用户.
  3. 能够高效的使用系统或其它应用的资源.

常见的推荐引擎

最常用的推荐引擎有基于用户选择的画像设置,协同过滤和基于内容的推荐.

基于用户选择的画像设置是最易实现的一种,但它是静态的,即它不会考虑用户的行为或尝试理解什么需要被推荐.

当你有许多用户并收集了足够的信息,那么就很适合用协同过虑基于用户的行为去给用户进行分类.协同过滤非常的高效并能取得到非常好的效果.不足之处就是它是重量级的计算.

基于内容的推荐则依赖于机器学习技术并需要理解被推荐用户和物品的属性维度.为它准备正确的数据模型通常是个严格而漫长的过程.然而,一旦有了正确的数据模型,那么基于内容的推荐只需要少量的历史数据或系统用户就可以产生很好的推荐结果.

Redis中适合推荐引擎的数据结构和命令

Redis的数据结构在大规模的高性能应用中可极大的降低应用的复杂度.推荐引擎方案通常需要Set的一些可快速执行的操作诸如 intersection, unionsetdifference.我们可以很方便地使用Redis的Strings, Sets和 Sorted Sets等数据结构来实现推荐引擎或一个内存数据库平台.Redis只需极少计算资源就可以达到亚毫秒级的高性能.

在我们开发推荐系统之前,让我们先来熟悉下Redis的一些数据结构和命令:

基于用户兴趣的推荐

这是一个简单的基于用户兴趣的推荐系统.在这个方法中,我们让用户选择他们所感兴趣的类别.我们也会根据他们选择的类别对物品进行分类.然后我们会基于这样的分类将用户的兴趣和物品相关联起来.

算法:

找出用户U所感兴趣的所有类别,我们将这个类别集合叫做userU.然后得到userU所关联的所有物品.

步骤1

设置每个用户所感兴趣的类别.

SADD user:<user id>:categories <category>

步骤 2

为每个类别维护一个集合,此集合存放该类别的所有物品。

SADD category:<category>:items <item id>

步骤 3

获取一个用户所感兴趣的所有类别(假设这个集合很小,对于大数据集则使用SSCAN).

SMEMBERS user:<user id>:categories

步骤 4

获取属于用户所感兴趣类别的所有物品.

SUNION category:<category 1>:items category:<category 2>:items category:<category 3>:items …

对于大数据集,最好使用SUNIONSTORE.

示例场景: 一个当地杂货铺的移动应用

杂货铺刚发布了一款新的手机应用以供客户选择他们感兴趣的商品. 应用的背后会追踪每个类别促销的所有商品. 当一个客户走进此店并打开这个应用,那么客户将会收到个性化的目标优惠劵。该例子的数据结构:

categories = {organic, dairy,… }

category:organic:items = {milk, carrots, tomatoes, …}

category:dairy:items = {milk, butter, cheese, …}

user:U1:categories = {organic, dairy}

user:U2:categories = {dairy}

当客户U1打开她的应用,她将会收到关于以下商品的促销信息:

SUNION category:organic:items category:dairy:items

= {milk, carrots, tomatoes, butter, cheese, …}

基于用户-物品关系的协同过滤

在这个方法中,我们将深入了解用户的行为并基于其它用户类似的行为做出相关的推荐.

算法:

  1. 找出与用户U具有相同物品集合的其它之关联用户 (U1, U2, U3…) .
  2. 获取与U1, U2, U3相关联的所有物品…
  3. 移除已经与用户U相关联的物品,这样只有非关联的物品会被推荐给用户U.

步骤 1

维护一个与指定用户相关联的所有物品集合,例如:所有通过电子商务应用所购买的物品.

SADD user:<user id>:items <item id>

步骤 2

对每个用户-物品关系,维护一个反向映射即物品-用户关系.

SADD item:<item id>:users <count> <user id>

步骤 3

获取同用户相关联的所有物品 (假设这是一个小集合,对于大数据集则使用SSCAN).

SMEMBERS user:<user id>:items

步骤 4

获取属于用户所感兴趣类别的所有用户.

SUNION item:<item id 1>:users items:<item id 2>:users items:<item id 3>:users …

步骤 5

获取属于用户所感兴趣类别的所有物品.

SUNIONSTORE user:<user id>:all_recommended user:<user id 1>:items user:<user id 2>:items user:<user id 3>:items …

上面这个计算出来的集合将包含其它用户所具有相同物品关系的所有关联物品.

步骤 6

获取还未与用户相关联但与其它具有类似行为用户相关联的物品列表.

SDIFF user:<user id>:all_recommended user:<user id>:items

示例场景: 本地杂货铺移动应用的推荐信息

本地杂货铺的个性化促销灵感取得了很大的成功,杂货铺决定继续升级,即通过用户的行为来促销物品。杂货铺想告诉顾客,“购买了物品X的顾客也购买了Y”,此例的数据结构如下:

userid:U1:items = {milk, bananas}

userid:U2:items = {milk, carrots, bananas}

userid:U3:items = {milk}

item:milk:users = {U1, U2, U3}

item:bananas:users = {U1, U2}

item:carrots:users = {U2}

那么,什么物品将会被推荐给用户U1?

SMEMBERS user:U1:items

= {milk, banana}

SUNION item:milk:users items:banana:users

= {U1, U2, U3}

SUNIONSTORE user:U1:all_recommended user:U1:items user:U2:items user:U3:items

= {milk, bananas, carrots}

SDIFF user:U1:all_recommended user:U1:items

= {milk, bananas, carrots} - {milk, bananas}

= {carrots}

杂货铺会推荐carrots给U1

基于用户-物品关系及其打分的协同过滤

此方法不仅要计算具有相同物品集合的不同用户的共同行为,还要决定每个用户如何给物品打分。对于一个给定用户U,此技术要找出给同用户U类似的物品打过分的所有用户,然后系统将根据打分情况推荐具有类似行为用户打过分的物品.

算法:

给定一个用户,根据以下条件找出最相似的用户:

  1. 找出同此用户至少有一个或多个共同物品并打过分的所有用户,将这些用户作为候选者.
  2. 对于每个候选者,对他们相互的物品积分差进行开平方根计算,从而得出一个分数.
  3. 为每个独立的用户保存与其最相似的用户.

找出将要排在最前的物品:

  1. 找出与原用户类似的用户所打过分的所有物品,但不包含独立用户未打过分的物品.
  2. 计算每个物品的平均积分.
  3. 保存排在前面的物品.

步骤 1 插入打分事件

为每个用户维护一个Sorted Set用于存储该用户打过分的所有物品.

ZADD user:<user id>:items <rating> <item id>

为每个物品维护一个Sorted Set来追踪所有给该物品打过分的用户.

ZADD item:<item id>:scores <rating> <user id>

步骤 2 获取具有相同物品积分的候选者

这里需要分两步,第一步,获取给相同物品打过分的所有用户. 第二,找出第一步中已经计算过的每个与用户U相似的用户,这个用户就是需要推荐的.

找出<user id>打过分的物品

ZRANGE user:<user id>:items 0 -1

找出给相同物品打过分的用户

ZUNIONSTORE user:<user id>:same_items 3 item:I1:scores item:I2:scores item:I3:scores

步骤 3 计算每个候选者的相似性

找出<user id> 与列表中其它用户的差异 .

ZRANGE user:<user id>:same_items 0 -1

ZINTERSTORE rms:<user id1>:<user id2> 2 user:<user id1>:items user:<user id2>:items WEIGHTS 1 -1

将两个用户的差开平方根再取绝对值。然后根据这值去实现自己的逻辑来判断谁与给定用户最为接近.

步骤 4 获取候选物品

既然我们有一个与用户U1类似的Sorted用户Set,那么我们可以将与那些用户和他们打过分相关联的物品抽取出来. 我们将会用ZUNIONSTORE 和U1的相似用户来做这个, 但我们需要保证已经排除了用户U1已经打过分的所有物品.

这里又要用到权重,这次使用AGGREGATE选项和ZRANGEBYSCORE命令. 将U1的物品乘以-1,其它的物品乘以1,指定AGGREGATE MIN选项可以得到一个比较容易截取的Sorted Set: 所有U1物品的分数将是负数,而其它用户的物品分数将是正数. 借助ZRANGEBYSCORE, 我们可以获取到分数大于0的所有物品,并返回用户U1未打过分的那些物品.

假设<user id 1> 与<user id 3>, <user id 5>, <user id 6>相似:

ZUNIONSTORE recommendations:<user id 1> 4 user:<user id 1>:items user:<user id 3>:items user:<user id 5>:items user:<user id 6>:items WEIGHTS -1 1 1 1 AGGREGATE MIN

示例场景: 本地杂货铺移动应用的推荐信息

杂货连锁店决定在应用内增加另一个特性. 允许顾客给物品打分,分数范围从1到5. 那些购买过类似物品并给物品打过类似分的顾客将更具有相关性,因为商铺现在开始促销的物品不仅仅是基于顾客购买的行为来推荐的,而且还基于他们如何给物品打分来做推荐.

数据结构如下:

userid:U1:items = {(milk, 4), (bananas, 5)}

userid:U2:items = {(milk, 3), (carrots, 4), (bananas, 5)}

userid:U3:items = {(milk, 5)}

item:milk:scores = {(U1, 4), (U2, 3), (U3, 5)}

item:bananas:scores = {(U1, 5), (U2, 5)}

item:carrots:scores = {(U2, 4)}

ZRANGE user:U1:items 0 -1

= {(milk, 4), (bananas, 5)}

ZUNIONSTORE user:U1:same_items 2 item:milk:scores item:bananas:scores

user:U1:same_items = {(U1, 9), (U2, 8), (U3, 5)}

ZINTERSTORE rms:U1:U2 2 user:U1:items user:U2:items WEIGHTS 1 -1

ZINTERSTORE rms:U1:U3 2 user:U1:items user:U3:items WEIGHTS 1 -1

rms:U1:U2 = {(bananas, 0), (milk, 1)};

rms:U1:U3 = {(milk, -1)};

RMS of rms:U1:U2 = 0.7

RMS of rms:U1:U3 = 1

根据以上的计算,我们可以得出结论U2与U1的相似性要高于U3与U1的相似性.然而,对我们的计算,我们会选择开平方根的值<=1的,因此,我们会同时考虑 U2和U3的打分.

ZUNIONSTORE recommendations:U1 3 user:U1:items user:U2:items user:U3:items WEIGHTS -1 1 1 AGGREGATE MIN

recommendations:U1 = {(bananas, -5), (milk, -4), (carrots, 4)}

具有最高分的物品推荐给了U1. 在我们例子中,商铺推荐了carrots给U1.

高级推荐

如果有大量的用户行为数据,那么使用协同过滤是一个很好的技术方案。协调过滤相对比较泛化,不需要深入理解被推荐物品的内容. 这个技术对于许多用户具有相同兴趣的情况下会工作的很好。反观基于内容的推荐却很乏味. 但他们如果结合了预测分析和机器学习技术后会最有效. Redis-ML提供了一个使用树族如随机树的分类技术.

下面的伪代码阐述了我们如何使用Redis-ML模块做推荐. 代码中假设你已经生成了在Apache Spark上的模型并将其导入到了Redis. Apache Spark提供了一些必要的工具用于创建和训练一个机器学习(ML)模块. 当你将Apache Spark的ML模型导入到Redis, Redis-ML会自动将Spark ML模块转成Redis的数据结构并使用得它可以立即工作.

代码的主要思路是:

  1. 从Redis中获取用户画像.
  2. 抓取用户感兴趣的分类. 我们允许用户选择他们感兴趣的类别或者/和基于他们的购买历史来计算类别.
  3. 获取属于感兴趣分类的所有物品.
  4. 对每个物品,在随机树分类器中计算分数(RedisRandomForestClassfy).
  5. 根据打分对物品进行排序, 并推荐具有最高分的物品.

关于Redis-ML更多的信息,请访问 http://redismodules.com/modules/redis-ml/.

优化生产环境中的实时推荐服务

Set和Sorted Set操作比较耗时耗资源,特别是对大数据集而言. 对于实时推荐,我们所需要的最终产品就是:推荐给每个用户的物品Set或Sorted Set. 作为一个高性能,低延时,内存型的数据存储,Redis通常能完成好推荐所需要的计算量. 然而,我们推荐你应该提前为每个用户准备最终推荐产品,主要是为了(1) 以亚毫秒的延时推送推荐信息且(2) 让方案更资源有效. 所有临时的用于计算的Sets和Sorted Sets可在生成用户的最终推荐集合后被丢弃.

推荐引擎是否要以一个batch job来创建还是当用户更新他们的画像或活动时做为一个正在运行的进程?这其实取决于许多因素, 如用户访问应用频率有多高,他们的行为改变有多频繁, 事务的量有多大以及业务目标等. 例如,如果方案的设计者正在一个退休计划应用(一个不被用户经常使用的应用)中创建推荐 ,那么没有实时的推荐信息并不重要. 反之,如果方案设计者正在给白天的交易员创建推荐,那么推荐需要及时的反应市场最佳情况才是有价值的. 方案设计者必须研究他们的数据,用户的行为,推荐的目标等来选择正确的响应级别.

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

本文分享自 IT技术精选文摘 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于协同的SlopeOne推荐算法原理介绍和实现
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 的协同过滤推荐算法。
石晓文
2019/08/06
1.2K0
基于协同的SlopeOne推荐算法原理介绍和实现
非常强大的商品实时推荐系统!
根据用户特征,重新排序热度榜,之后根据两种推荐算法计算得到的产品相关度评分,为每个热度榜中的产品推荐几个关联的产品
架构师修炼
2021/05/17
3K1
非常强大的商品实时推荐系统!
基于标签的推荐系统详解
推荐系统是现代互联网应用中的重要组成部分,广泛应用于电商、社交网络、音乐和视频流媒体等领域。推荐系统的主要目标是帮助用户在海量信息中找到感兴趣的内容,提高用户体验和平台的转化率。推荐系统根据不同的实现方式,可以分为协同过滤、基于内容的推荐、混合推荐等。本文将深入探讨一种常用的推荐方式:基于标签的推荐系统。
数字扫地僧
2024/08/15
4490
如何动手设计和构建推荐系统?看这里
你听说过著名的果酱实验吗?在 2000 年,来自哥伦比亚大学和斯坦福大学的心理学家 Sheena Iyengar 和 Mark Lepper 基于现场实验提出了一项研究。
机器之心
2019/06/20
6040
如何动手设计和构建推荐系统?看这里
Spark推荐系统实践
推荐系统是根据用户的行为、兴趣等特征,将用户感兴趣的信息、产品等推荐给用户的系统,它的出现主要是为了解决信息过载和用户无明确需求的问题,根据划分标准的不同,又分很多种类别:
大数据学习与分享
2020/08/10
7540
Spark推荐系统实践
机器学习-08-关联规则和协同过滤
懂业务+会选择合适的算法+数据处理+算法训练+算法调优+算法融合 +算法评估+持续调优+工程化接口实现
用户2225445
2024/04/12
2200
机器学习-08-关联规则和协同过滤
基于Flink商品实时推荐系统项目【大数据及算法】
介绍: 基于Flink实现的商品实时推荐系统。flink统计商品热度,放入redis缓存,分析日志信息,将画像标签和实时记录放入Hbase。在用户发起推荐请求后,根据用户画像重排序热度榜,并结合协同过滤和标签两个推荐模块为新生成的榜单的每一个产品添加关联产品,最后返回新的用户列表。 1. 系统架构 v2.0 1.1 系统架构 v2.0
用户1410343
2020/07/02
3.3K1
基于Flink商品实时推荐系统项目【大数据及算法】
推荐系统中的冷启动问题及解决方案
推荐系统是当今互联网产品的核心组成部分,广泛应用于电商、流媒体、社交网络等领域。其主要目的是根据用户的历史行为、偏好、和属性,向用户推荐其可能感兴趣的内容。然而,在实际应用中,推荐系统常常面临一个棘手的问题——冷启动问题(Cold Start Problem)。该问题指的是在没有足够的用户行为数据时,系统难以为新用户或新物品提供有效的推荐。
数字扫地僧
2024/08/09
4030
推荐系统User-Item Embedding图算法
在做推荐算法任务时,在(user, item)的交互数据集中进行建模是常见的方式,本文基于GNN对User侧和Item侧进行embedding的思路,介绍3篇相关论文。这三篇文章分别来自SIGIR 2019,2020,2021。
炼丹笔记
2021/06/15
1K0
推荐系统User-Item Embedding图算法
一位算法师工程师的Spark机器学习笔记:构建一个简单的推荐系统
推荐引擎应用场景: .用户有海量选择:随着场景内item越来越多,用户越来越难以选择到合适的产品 .个性化场景:在选择产品时,会借鉴那些与推荐用户相似地群体,利用群体智慧对用户进行推荐”千人千面” 在本篇博客中,会涉及到以下几个部分: .介绍不同类型的推荐引擎 .使用用户偏好模型来构造推荐模型 .使用训练好的模型来为指定user计算给定item的相似度大的items .使用标准的评测函数来构造推荐模型的好坏 推荐模型类别: .基于item的过滤:使用item的内容或者属性,选择给定item的相似的item
CDA数据分析师
2018/02/05
1.1K0
一位算法师工程师的Spark机器学习笔记:构建一个简单的推荐系统
推荐系统设计方法论
一、前言 结合目前已存在的商品推荐设计(如淘宝、京东等),推荐系统主要包含系统推荐和个性化推荐两个模块。 系统推荐: 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。 个性化推荐:对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。 下面具体介绍系统推荐和个性化推荐的设计方案。 二、系统推荐 2.
陆勤_数据人网
2018/02/28
1.8K0
推荐系统设计方法论
AI驱动的个性化推荐系统:技术解析与实践案例
在当今信息爆炸的时代,个性化推荐系统已成为解决信息过载问题的关键工具。它通过分析用户的历史行为、兴趣偏好等信息,为用户推荐符合其需求的产品或服务。AI技术的引入使得推荐系统更加智能、精准,能够更好地满足用户需求,提升用户体验。
江南清风起
2025/03/23
5240
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对Apache Hadoop的支持,使这些算法可以更高效的运行在云计算环境中。
全栈程序员站长
2022/07/28
2.4K0
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
聊聊基于Alink库的推荐系统
Alink提供了一系列与推荐相关的组件,从组件使用得角度来看,需要重点关注如下三个方面:
Ryan_OVO
2023/10/19
2800
聊聊基于Alink库的推荐系统
读书笔记 |《推荐系统实践》- 个性化推荐系统总结
推荐系统实践 对于推荐系统,本文总结内容,如下图所示: 推荐系统.png 文章很长,你可以跳着看你感兴趣的部分。 一、什么是推荐系统 1. 为什么需要推荐系统 结论是,为了解决互联网时代下的信息超载问
小莹莹
2018/04/20
1.8K0
读书笔记 |《推荐系统实践》- 个性化推荐系统总结
大数据–商品推荐系统介绍(上)
为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统。
全栈程序员站长
2022/07/21
1.9K0
大数据–商品推荐系统介绍(上)
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
做广告业务1年多时间了,但是平时的工作主要和广告工程有关,核心的广告算法由 AI 部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。
Guide哥
2020/09/27
8250
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
基于协同过滤的推荐引擎(理论部分)
记得原来和朋友猜测过网易云的推荐是怎么实现的,大概的猜测有两种:一种是看你听过的和收藏过的音乐,再看和你一样听过这些音乐的人他们喜欢听什么音乐,把他喜欢的你没听过的音乐推荐给你;另一种是看他听过的音乐或者收藏的音乐中大部分是什么类型,然后把那个类型的音乐推荐给他。当然这些都只是随便猜测。但是能发现一个问题,第二种想法很依赖于推荐的东西本身的属性,比如一个音乐要打几个类型的标签,属性的粒度会对推荐的准确性产生较大影响。今天看了协同过滤后发现其实整个算法大概和第一种的思想差不多,它最大的特点就是忽略了推荐的东西
用户1332428
2018/03/08
1K0
基于协同过滤的推荐引擎(理论部分)
推荐系统学习笔记之一 综述
评分预测是比较简单的一种模型,比如某个用户给定某个物品的评分,在对比其他用户对该用户的评分相似度来判断该用户对其他物品的喜爱程度,从而进行推荐。最典型的就是IMDB与豆瓣,都需要用户主动评分才能进行下一步推荐。其中CBRS基于内容的推荐系统,Collaborative Filtering 协同过滤,SVD奇异值分解就是评分预测的典型模型。
大鹅
2021/06/11
3910
Python数据分析与机器学习在电子商务推荐系统中的应用
在构建推荐系统之前,需要收集并预处理数据。电子商务平台上可以收集的数据包括用户行为数据(点击、浏览、购买等)、用户属性数据(年龄、性别等)和物品属性数据(类别、价格等)。
屿小夏
2024/06/11
1430
Python数据分析与机器学习在电子商务推荐系统中的应用
推荐阅读
相关推荐
基于协同的SlopeOne推荐算法原理介绍和实现
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文