【基于机器学习的推荐系统项目实战-1】初识推荐系统

news2024/9/28 7:21:15

本文目录

  • 一、为什么我们需要推荐系统?
  • 二、推荐系统的发展阶段
  • 三、推荐系统模型
  • 四、通用推荐系统框架
    • 4.1 数据生产
    • 4.2 数据存储
    • 4.3 算法召回
    • 4.4 结果排序
    • 4.5 结果应用
    • 4.6 新浪微博的框架开源结构图
  • 五、推荐常用特征
    • 5.1 用户特征
    • 5.2 物品特征
  • 六、推荐常用算法
  • 七、结果评估指标
    • 7.1 准确率
    • 7.2 AUC指标
    • 7.3 其他指标

一、为什么我们需要推荐系统?

几十年来,从时间维度上看,信息呈指数爆炸式的增长,数据和信息已经成为一种重要的生产资料了。

如果从表现维度上看,图片、视频等越来越多,信息的载体越来越多。

除此之外,任何一家企业公司都需要留存与转化,推荐系统越完善,用户信息采集的越多,从而可以达到更好的优化推荐效果,这会有明显的正反馈效应。

二、推荐系统的发展阶段

早期:
1990年由哥伦比亚大学教授首次提出。
1992年协同过滤被踢出。
2001年Item-based CF出现。

发展高潮期:
2006-2009年,Netflix发起的电影推荐系统竞赛。
2009年BPR算法成为隐式反馈数据推荐的经典算法。

深度学习期:
2016年谷歌发布YoutubeDNN,分为召回排序两个阶段。
2018年阿里引入注意力机制。
近年来字节、百度等公司均大规模使用深度学习。

三、推荐系统模型

在这里插入图片描述

推荐系统的抽象结构:

在这里插入图片描述

四、通用推荐系统框架

在这里插入图片描述

4.1 数据生产

将有用的信息进行汇总、清洗、及预处理,为后续的分析和推荐做准备。

4.2 数据存储

进行持久化存储收集到的数据。方便后续不同阶段和不同模块灵活的取用。通常会按照数据的冷热、结构化和非结构化等等特征进行分布存储。

4.3 算法召回

将海量的数据集,通过特定的算法进行初步筛选。通常会把候选集的数据规模从数十万降低至数百或者数千个。
在实际的算法过程中,会考虑多种策略,做到面面俱到。

4.4 结果排序

对召回的结果进行进一步的筛选,并且进行精确的排序。通常会将数据集规模从数百降低至几十,排序时会针对多个目标进行优化。

4.5 结果应用

根据不同的场景给用户展示最终的推荐结果,场景的不同往往会影响推荐的策略和算法。

  • 总的来说,从上百万的候选集中召回一定的数据,然后进行排序,最终成为推荐结果。

4.6 新浪微博的框架开源结构图

在这里插入图片描述

五、推荐常用特征

5.1 用户特征

自然属性:姓名、性别、年龄、地域。
画像特征:兴趣、行为。
关系特征:人群属性、关注关系、亲密度等等。
协同特征:点击相似用户、兴趣分类相似用户、兴趣主题相似用户。

5.2 物品特征

静态特征:分类、标签、主题、价格。
动态特征:热度、分类热度、标签热度。
相关性特征:主题相似、分类匹配、主题匹配、关键词匹配等等。
上下文特征:最近N条浏览记录。
环境特征:时间、地理位置等等。

六、推荐常用算法

基于流行度:最热门的、最新、最多人点赞等等。
基于内容:相同标签、关键词、主题等等。
基于关联规则:看了A的人也看了B。
近邻推荐:协同过滤(又可以进一步分为基于用户、基于物品、基于模型的过滤)

七、结果评估指标

7.1 准确率

1、准确率:正确的预测样本数/总采样数。(但容易被正负样本比例影响)

7.2 AUC指标

2、曲线下面积AUC:不同阈值下,预测结果中真阳和假阳之比。

ROC指标:
对于输出值连续的分类器(如概率预测),在某一阈值下真阳性TP的概率/假阳性FP的概率。
阈值的概念:就是超过多少概率下,才会认为是垃圾邮件。(例如阈值0.6,只有概率大于0.6时,才认为是真阳性。)

AUC可以看成:随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率。(就是任意选取一对正负样本,能够正样本的得分概率大于负样本的概率。)这对于正负样本的数值比例不会受影响!就优化了准确率这个评估指标。
在这里插入图片描述

AUC=1时,就是完美分类器。
AUC>0.5时候,绝大多数真实分类器的区间。
AUC=0.5,就是基线分类器,就是抛硬币。
AUC<0.5,对于负样本更加准确,是可以转化为正分类器的。

7.3 其他指标

满意度:准确率、停留时长、转化率。
覆盖率:长尾物品是否能被推荐。
多样性:推荐的物品是否两两不相似,尽可能覆盖多个兴趣点。
新颖性:是否能推一些新兴的产品。
惊喜性:推荐的东西和用户历史行为记录都不相似,但是用户非常喜欢。
实时性:根据用户最新喜好实时更新推荐结果。
商业目标:是否能达成商业目标如GMV。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正点原子IMX6ULL开发板-liunx内核移植例程-uboot卡在Starting kernel...问题

环境 虚拟机与Linux版本&#xff1a; VMware 17.0.0 Ubuntu16 NXP提供的U-boot与Linux版本&#xff1a; u-boot:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 linux:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 开发板&#xff1a; 正点原子-IMX6ULL_EMMC版本&#xff0c;底板版…

国产光刻机再突破后,能实现7nm芯片量产?专家:别再盲目自大

众所周知&#xff0c;不能生产高端芯片&#xff0c;一直都是我国芯片产业一个无法抹去的痛。加上老美近几年的刻意打压&#xff0c;部分中芯企更是苦不堪言&#xff0c;因此大部分人心里也都憋着一口气&#xff0c;这几年也是铆足了劲&#xff0c;大力推动国产芯片技术的发展。…

小家电品牌私域增长解决方案来了

小家电品牌的私域优势 01、行业线上化发展程度高 相对于大家电动辄上千上万元的价格&#xff0c;小家电的客单价较低。而且与大家电偏刚需属性不同的是&#xff0c;小家电的消费需求侧重场景化&#xff0c;用户希望通过购买小家电来提高自身的生活品质。这就决定了用户的决策…

【数组】JavaScript 全栈体系(六)

JavaScript 基础 第十章 循环-for 一、for循环基本使用 实现循环的 3 要素 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

嘉宾阵容公布 | Impact Tech, She Can 2023 对话升级

2023 年&#xff0c;在三八妇女节来临之际&#xff0c;Jina AI 联合将门创投、OpenMMLab、亚马逊云科技、稀土掘金、开源中国、CSDN等 14 家科技行业伙伴&#xff0c;发起了第二届「Impact Tech, She Can」线上对话。活动信息通过 2 场圆桌对话、1 场技术分享&#xff0c;希望让…

函数栈帧详解

写在前面 这个模块临近C语言的边界&#xff0c;学起来需要一定的时间&#xff0c;不过当我们知道这些知识后&#xff0c;在C语言函数这块我们看到的不仅仅是表象了&#xff0c;可以真正了解函数是怎么调用的。不过我的能力有限&#xff0c;下面的的知识若是不当&#xff0c;还…

一些关于linux process 和python process的记录

python mulprocess 主要用来生成另一个进程并运行 def func(i):print(helloworld)from multiprocessing import Process p Process(targetfunc,args(i, )) p.start()如果想要调用shell命令&#xff0c;可以采用os.popen 或者是 subprocess.run 但是前者只能执行命令并获取输…

【链表OJ题(二)】链表的中间节点

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录链表OJ题(二)1. 链表…

每日学术速递3.1

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Directed Diffusion: Direct Control of Object Placement through Attention Guidance 标题&#xff1a;定向扩散&#xff1a;通过注意力引导直接控制物体放置 作者&#xff1a;…

Kafka入门(六)

下面聊聊Kafka中的Offset位移 1、Offset位移概述 在引入Kafka服务后&#xff0c;当consumer消费完数据后需要进行位移提交&#xff0c;那么提交的位移数据究竟存储到那里&#xff0c;有以何种方式进行存储&#xff1f; Kafka旧版本&#xff08;<0.8&#xff09;是重度依赖Z…

【python学习】批量从含有多列数据的txt文件中提取某个数据,并存入csv文件

批量从含有多列数据的txt文件中提取某个数据&#xff0c;并存入csv文件任务需求与解读代码实现导入相关库提取txt文件的三列数据存为列表按条件提取某个数据存入字典将字典写入csv文件任务需求与解读 昨天收到一个需求&#xff0c;希望能将电化学工作站的数据文件(.bin后缀)转…

欧文数据建模师 erwin Data Modeler Crack

欧文数据建模师 erwin Data Modeler 是一款屡获殊荣的数据建模工具&#xff0c; 用于查找、可视化、设计、部署和标准化高质量的企业数据资产。从任何地方发现和记录任何数据&#xff0c;以在大规模数据集成、主数据管理、元数据管理、大数据、商业智能和分析计划中实现一致性、…

kubernetes--安全沙箱运行容器gVisor

gVisor介绍 所知&#xff0c;容器的应用程序可以直接访问Linux内核的系统调用&#xff0c;容器在安全隔离上还是比较弱&#xff0c;虽然内核在不断的增强自身的安全特性&#xff0c;但由于内核自身代码极端复杂&#xff0c;CVE漏洞层出不穷。 所以要想减少这方面安全风险&#…

MATLAB | 这些花里胡哨的热图怎么画

好早之前写过一个绘制相关系数矩阵的代码&#xff0c;但是会自动求相关系数&#xff0c;而且画出来的热图只能是方形&#xff0c;这里写一款允许nan值出现&#xff0c;任意形状的热图绘制代码&#xff0c;绘制效果如下&#xff1a; 如遇到bug请后台提出&#xff0c;并去gitee下…

Spring Boot+Vue前后端分离项目练习02之网盘项目利用token进行登陆验证

1.添加依赖 首先需要添加jwt对应的依赖。 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>2.添加配置 JWT由三部分构成&#xff0c;分别是 header, pa…

详解数据结构中的顺序表的手动实现,顺序表功能接口【数据结构】

文章目录线性表顺序表接口实现尾插尾删头插头删指定位置插入指定位置删除练习线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列…

Freemarker动态模板渲染flyingsaucer将html转PDF(多页固定头尾)

目录一、序言二、CSS样式控制打印模板三、代码示例1、pom.xml2、application.yml3、PdfGenerationController4、Freemarker模板内容四、展示效果一、序言 一般正常来说&#xff0c;生成PDF的操作都是通过将HTML转成PDF&#xff0c;HTML动态渲染可以借助模板引擎&#xff0c;如…

从外行到外包,从手工测试到知名互联大厂测开,我经历了什么...

本人本科就读于某普通一本院校&#xff08;非985&#xff0c;211&#xff09;&#xff0c;经管类专业&#xff0c;从大四实习到15年毕业后前两年一直在从事自己专业相关的工作。17年时决定想要转业从事计算机相关领域工作&#xff0c;在17年9月的一个机遇大跨度转行到测试行业&…

vue子组件监听父组件数据变化并作出改变(亲测有效)

vue子组件监听父组件数据变化并作出改变&#xff08;亲测有效&#xff09; 1. 问题 1.1 封装组件时经常会遇到子组件需要根据父组件数据变化并执行对应的操作逻辑 1.2 监听方法中加了deep、immediate 等参数监听数组/对象还是没有生效 1.3 类型table组件需要根据父组件数据…

Java多线程学习——线程的创建、Thread类以及多线程状态

文章目录学习目标一、认识线程1、线程是什么&#xff1f;2、为什么要有线程3、进程和线程的区别二、Thread类以及常见方法1.创建线程的几种方式2、Thread类属性及方法2.1、Thread的常见构造方法2.2、Thread的常见属性3、线程的中断-interrupt()中断一个线程&#xff1a;4、等待…