推荐系统实战(基于机器学习/深度学习)

文章目录

  • 推荐系统介绍
    • 什么是推荐系统?
    • 推荐系统的应用
    • 为什么需要推荐系统
    • 推荐系统发展
    • 推荐系统的目标
    • 怎样评价推荐系统效果
    • 推荐系统里的常用词
    • 推荐系统经典流程
    • 推荐系统的难点与挑战
    • 涉及技术点分析
    • 为什么需要深度学习
  • 协同过滤与矩阵分解
    • 矩阵分解中的显式与隐式特征
    • 基于用户的协同过滤
    • 基于物品的协同过滤
    • 小例子
    • 为什么需要矩阵分解
    • 矩阵分解
    • 矩阵分解实例
    • 隐向量
    • 目标函数
    • 后续的改进
    • 隐式情况分析
    • Embedding的作用

推荐系统介绍

什么是推荐系统?

一句话概括,推荐给你感兴趣的视频,商品等,让你入迷。

推荐系统的应用

个性化推荐,优化用户体验,海量数据中快速定位,精准营销。抖音,京东,小红书等这些例子大多数人都耳闻能详。举几个例子

  • 抖音:推荐给你喜欢的视频,你就会挪不开眼睛,一看半天就下去了,这样抖音就赚到了流量,在当前这个社会,流量就是钱。
  • 京东:当你买了一个键盘后,肯定需要鼠标,鼠标垫啥的,推荐给你,你买的概率会很大,京东也就多挣一份钱呗。

为什么需要推荐系统

  • 卖的好的就那几种商品,其他的不要了?
  • 80%的销售来自20%的热门商品
  • 要想提高整体收益,得把长尾商品(也就是剩下的80%商品)推出去
  • 通过用户行为来进行个性化推荐
    在这里插入图片描述

推荐系统发展

  • 亚马逊1998年就开始用了,只不过那时候还是简单的协同过滤。
  • 2006年Netflix(在线视频)竞赛一炮走红
  • 2015年开始深度学习崛起,推荐也随之改变
  • 今天已经百花齐放,各大论文层出不穷

推荐系统的目标

  • Relevance:推荐的东西起码得相关才行
  • Novelty:新颖的才好,推的得是人家没有的
  • Serendipity:跟处对象一样一样的,机缘
  • Diversity:多样性,换着花样玩才好
    在这里插入图片描述

怎样评价推荐系统效果

  • 其实最主要的还是用户满意度,各种数学公式只是辅助判断
  • 常规的计算损失: R M S E = 1 ∣ τ ∣ ∑ ( u , i ) ∈ τ ( r ^ u i − r u i ) 2 RMSE =\sqrt{\frac{1}{\left|\tau\right|}\sum\limits_{(u,i)\in\tau}(\hat{r}_{ui}-r_{ui})^2} RMSE=τ1(u,i)τ(r^uirui)2 (T是测试集)
  • TopK推荐: p r e c i s i o n @ K = ∣ R e l u ∩ R e c u ∣ ∣ R e c u ∣ precision@K = {\left|Rel_u \cap Rec_u\right| \over \left|Rec_u\right|} precision@K=RecuReluRecu(用户相关商品集与推荐商品集的交集)
  • 覆盖率:挖掘长尾;多样性:覆盖不同领域;实时性:刚买了房子赶紧推装修

推荐系统里的常用词

  • Item:商品,例如要从拼多多买的9.9包邮的拖鞋
  • Embedding:隐向量,例如对用户商品评分矩阵进行分解
  • 召回:粗略计算要返回结果,例如先从100W商品中取比较可能的100个
  • 打分:要排名得有一个统一的标准;重排:最终结果排序

推荐系统经典流程

1、离线+近线+在线(召回+粗排+精排)
2、离线通常跑较大的模型与算法,先得到当前数据的大致结果,一定时间更新一次
3、粗排通常会跟着用户走,用户做了什么事,推荐结果也会随之更新
4、在线模块需要根据业务规则来返回最终呈现结果

推荐系统的难点与挑战

  • 需要更广泛的收集用户标签并画像
  • 人是善变的,随着时间的推移,兴趣也会改变
  • 根据固定画像数据,推荐结果可不能固定不变
  • 特征工程如何构建一直是一个大难题

在这里插入图片描述

  • 推荐系统中的冷启动也是一个问题
    冷启动指的是来了一个新人或者新物品。对他不是很熟悉。冷启动包括用户冷启动与商品冷启动;新用户来了,不知道他啥样怎么办;商品倒是好办,属性相对固定,解决方法比较多,例如直接推荐销冠

在这里插入图片描述

涉及技术点分析

  • Embedding方向:如何更好的表示数据,肯定不用one-hot
  • 隐向量的方法在推荐中几乎无处不用,例如常见的FM及其DeepFM算法

在这里插入图片描述

  • NLP方向:如何基于文本数据来进行推荐?
  • 文本处理方法比较多,LDA,词向量,矩阵分解等套路都能用得上

在这里插入图片描述

  • 知识图谱方向:现在这么火的技术点,推荐中肯定也用到了
  • 数据越多,越能体现出知识图谱的强大

在这里插入图片描述

  • CV方向:卷积与图卷积,图像与视频数据也是用户行为中的体现
  • 卷积不仅仅能应用在图像/视频数据中,矩阵数据都可以尝试

在这里插入图片描述

  • 特征工程与深度学习方向:如何更好的利用这么多信息?深度学习天生优胜!
  • 数据维度大,稀疏度高一直都是一个大难题,与深度学习结合能更简单

在这里插入图片描述

为什么需要深度学习

  • 宏观:传统人工特征工程难度较大,深度学习可以把特征做的更好
  • 本质:end2end的架构让模型训练起来更容易,项目做起来更简单!
  • 深度学习更适合NLP与图像数据,符合当下用户行为数据
  • 但凡看到深度学习,第一感觉应该是这件事做起来没那么麻烦了

协同过滤与矩阵分解

矩阵分解中的显式与隐式特征

显式特征:可以直观看到的数据
隐式特征:通过某些操作行为产生的数据

用户行为类型特征作用
评分显式整数量化的偏好,可能的取值是 [0,n];一般取值为 5 或者是 10通过用户对物品的评分,可以精确的得到用户的偏好
投票显式布尔量化的偏好,取值是 0 或 1通过用户对物品的投票,可以较精确的得到用户的偏好
转发显式布尔量化的偏好,取值是 0 或 1而过用户对物品的投票,可以精确的得到用户的偏好
保存书签显示布尔量化的偏好,取值是 0 或 1通过用户对物品的投票,可以精确的得到用户的偏好
标记标签显示一些单词,需要对单词进行分析,得到偏好通过分析用户的标签,可以得到用户对项目的理解,同时可以分析出用户的情感: 喜欢还是讨厌
评论显示一段文字,需要进行文本分析,得到偏好通过分析用户的评论,可以得到用户的情感:喜欢还是讨厌
点击流隐式一组用户的点击,用户对物品感兴趣,需要进行组分析,得到偏好用户的点击一定程度上反映了用户的注意力,所以它也可以从一定程度上反映用户的喜好.
页面停留时间隐式一组时间信息,噪音大,需要进行去噪分析,得到偏好用户的页面停留时间一定程度上反映了用户的注意力和喜好,但噪音偏大,不好利用。
购买隐式布尔量化的偏好,取值是 0 或 1用户的购买是很明确的说明这个项目它感兴趣。

基于用户的协同过滤

  • 首先找到相似用户(相似度计算)
  • 属性特征,行为特征等都可以当做计算输入
  • User1喜欢1,2,3,4;User3当前喜欢2,3
  • 如果这俩用户计算后相似度较高,就可以把1,4推给User3

在这里插入图片描述

存在的问题:数据稀疏,计算复杂度,人是善变的,冷启动问题,稀疏(通常商品非常多,用户购买的只是其中极小一部分),计算(计算相似度矩阵是个大活,用户和商品都比较多的时候就难了),冷启动(新用户来了怎么办?)

基于物品的协同过滤

  • 还是要先得到用户与商品的交互数据
  • 此时发现商品1和3经常在一起出现
  • 那这俩商品之间肯定有鬼。。。(相关度)
  • User3目前只买了商品2和3,此时可以推给他商品1
    在这里插入图片描述

小例子

首先计算商品之间的相似度(pearson),邻居设置为2,预测r51=?
在这里插入图片描述
在这里插入图片描述
R _ 51 = ( 0.41 ∗ 2 + 0.59 ∗ 3 ) / ( 0.41 + 0.59 ) = 2.6 R\_51 = (0.41*2+0.59*3)/(0.41+0.59)=2.6 R_51=(0.412+0.593)/(0.41+0.59)=2.6

为什么需要矩阵分解

  • 用户:1个亿,商品100W,这得是多大的一个矩阵,要命了
  • 能不能间接点来求呢?最终目标就是把每个用户对各个商品的喜好预测出来
  • 跟找中介租房子差不多,通过中介来重新组合矩阵
  • 矩阵分解已经成为推荐系统中用的最多的方法
    在这里插入图片描述

矩阵分解

  • user-item矩阵分解
  • 得到user,item两个矩阵
  • 原矩阵:m*n(用户,音乐)
  • user(mk),item(kn)

在这里插入图片描述

矩阵分解实例

  • 用户-歌曲之间的行为数据
  • 1代表听过该歌曲,0表示没有
  • 可以想象成一个非常稀疏的矩阵
  • 目标:预测空白值到底等于多少
    在这里插入图片描述
    在这里插入图片描述

那么存在这么几个问题:

  • 这俩矩阵可有实际值
  • K等于多少合适呢?
  • 其中的数值代表什么?
  • 如何计算得到?

目标其实就是得到一个大表,分解后的矩阵还原回这个大表即可,数值即表示对当前商品喜好程度。方法蛮简单,具体怎么做呢?
在这里插入图片描述

隐向量

其实就是特征的高维表达,只不过很难去理解。例如用户的隐向量可以想象成是这个样子:
在这里插入图片描述
用户与商品向量可以当做其特征表示,这可不是随机值,可以观察下数值特点,不同颜色表示特征鲜明的地方,也就是喜好
在这里插入图片描述
在这里插入图片描述
隐向量真的可以理解吗?通常只是比喻而已,一般难以理解,例如一个50维的向量,鬼知道它具体表什么含义,没关系,咱们理解不了无所谓,计算机能更好的理解就可以了
在这里插入图片描述

目标函数

  • 跟回归方程很像: min ⁡ X , Y ∑ r u i ≠ 0 ( r u i − x u T y i ) 2 + λ ( ∑ u ) ∣ ∣ x u ∣ ∣ 2 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 2 ) \min\limits_{X,Y}\sum\limits_{r_{ui}\neq0}(r_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u)||x_u||_2^2+\sum\limits_i||y_i||_2^2) X,Yminrui=0(ruixuTyi)2+λ(u)∣∣xu22+i∣∣yi22)
  • 用户矩阵 X = [ x 1 , x 2 , … … , x N ] X=[x_1,x_2,……,x_N] X=[x1,x2,……,xN]: 商品矩阵: Y = [ y 1 , y 2 , … … , y M ] Y=[y_1,y_2,……,y_M] Y=[y1,y2,……yM]
  • N为用户个数,M为商品个数,还需注意隐向量维度
  • 其中还额外引入了正则化惩罚项

后续的改进

  • 如果用户就特别刁钻,评分都会很低;如果商品本身就很好,评分都较高
  • 这里还需要注意的就是用户与商品的本身属性信息,之前公式中木有涉及
  • 在原公式中 min ⁡ X , Y ∑ r u i ≠ 0 ( r u i − x u T y i ) 2 + λ ( ∑ u ) ∣ ∣ x u ∣ ∣ 2 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 2 ) \min\limits_{X,Y}\sum\limits_{r_{ui}\neq0}(r_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u)||x_u||_2^2+\sum\limits_i||y_i||_2^2) X,Yminrui=0(ruixuTyi)2+λ(u)∣∣xu22+i∣∣yi22)分别加入用户与商品偏置项
  • 例如bu表示用户偏置,bi表示商品偏置

隐式情况分析

  • 用户-商品的评分矩阵做起来非常直接,但是哪有那么正好的事啊
  • 通常收集的数据都是用户的行为:观看时间,点击次数等指标
  • 这种数据该怎么求解呢?首先定义置信度: c u i = 1 + α r u i c_{ui}=1+\alpha r_{ui} cui=1+αrui
  • 置信度默认为1,表示用户没有产生行为的商品;行为越多,置信度越大
  • 重新定义评分: p u i = { 0 r u i = 0 1 r u i > 0 p_{ui}= \lbrace_{0\quad r_{ui}=0}^{1\quad r_{ui}>0} pui={0rui=01rui>0 (有行为的则评分为1)
  • 新的优化目标: G ( x ∗ , y ∗ ) = ( ∑ u , i c u i ( p u i − x u T y i ) 2 + λ ( ∑ u ∣ ∣ x u ∣ ∣ 2 + ∑ i ∣ ∣ y i ∣ ∣ 2 ) G(x_*,y_*)=({\sum\limits_{u,i}}c_{ui}(p_{ui}-x_u^Ty_i)^2+\lambda(\sum\limits_u||x_u||^2+\sum\limits_i||y_i||^2) G(x,y)=(u,icui(puixuTyi)2+λ(u∣∣xu2+i∣∣yi2)
  • 总结起来就是置信度越大的你得预测的越准,要不损失就大了
  • 求解过程依旧交替使用最小二乘法,固定Y优化X,再固定X优化Y

Embedding的作用

无处不在的Embedding,Ai的核心其实就是让计算机能更懂我!
NLP,CV领域做得太多啦,推荐中也不例外,Embedding做好啦一切都解决了!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据开发流程图

背景:公司处于数仓开发的起步阶段,需要构建一个数据开发的流程 分析:原有业务采集混乱,不受调度管理监控,数据不存储不统一,需要频繁转换 行动:改造原有业务,数据开发流程图如下 结…

Stable Video文本生成视频公测地址——Scaling Latent Video Diffusion Models to Large Datasets

近期,Stability AI发布了首个开放视频模型——"Stable Video",该创新工具能够将文本和图像输入转化为生动的场景,将概念转换成动态影像,生成出电影级别的作品,旨在满足广泛的视频应用需求,包括媒…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Nacosv2.2.3

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库,终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手,按照 MySQL , Nacos , Redis , Nginx , Gateway , Auth ,…

项目实战 MySQL读写分离【构建主从结构数据库(查从库)(增删改主库)】【ShardingJDBC实现读写分离】

项目实战 MySQL读写分离 1. MySQL主从复制1.1 介绍1.2 搭建1.2.1 准备工作1.2.3 从库配置 2. 读写分离案例2.2 ShardingJDBC介绍 转自-黑马 在前面基础功能实现的过程中,我们后台管理系统及移动端的用户,在进行数据访问时,都是直接操作数据库…

开源模型Mistral 7B+Amazon SageMaker部署指南

一、Mistral 7B简述 Mistral AI 是一家总部位于法国的 AI 公司,其使命是将公开可用的模型提升至最先进的性能水平。他们专注于构建快速而安全的大型语言模型(LLM),此类模型可用于从聊天机器人到代码生成等各种任务。不久前其发布…

Java进阶-IO(4)

前面几篇介绍了java IO的基础部分,现在进入核心内容的学习,如File类、动态读取和序列化等,如下。 一、File类 1、概述 是 java.io 包中唯一代表磁盘文件本身的对象(可以通过 File 类操作文件和目录),定义…

力扣hot100题解(python版48-50题)

48、路径总和III 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从…

图论 - 最小生成树(Prime、Kruskal)

文章目录 前言Part 1:Prim算法求最小生成树1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2:Kruskal算法求最小生成树1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客介绍两种求最小生成树的方法&#xff…

寻址错题本

指令寻址 顺序寻址 通过程序计数器PC自动加1,形成下一条指令的指令地址。 跳跃寻址 通过转移类指令实现跳转到指定的代码段或者子程序。 数据寻址 直接寻址 形式地址A就是操作数的地址EA,执行阶段访问一次存储器。 所以当我们需要取得实际的值(操作数)的时候: 第一步:…

Canvas笔记03:Canvas元素功能、属性、获取、原理等一文讲透

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas元素的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目可以私信贝格。 Canvas元素是HTML5中的一个重…

【LeetCode:225. 用队列实现栈 + 栈 | 队列】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Day23-磁盘管理与软件包管理

Day23-磁盘管理与软件包管理 1. 什么是文件系统?2. 为什么磁盘分区后需要格式化?3. 常见文件系统类型4. 文件系统体系结构(图)5. 生产文件系统选型5.1 SAS/SATA磁盘对应文件系统的选择:5.2 常规的服务应用建议&#xf…