推荐系统学习笔记(四)--基于向量的召回

news2024/12/26 10:59:31

离散特征处理

离散特征:性别,国籍,英文单词,物品id,用户id

处理:

建立字典:eg:china = 1

向量化:eg:one-hot /embedding(低维稠密向量)

one-hot--适合低维度

例如:

性别:男,女

字典:男 = 1,女 = 2

one-hot:

        未知[0 , 0]

        男 [1 , 0]

        女 [0 , 1]

one-hot局限:

例1: nlp中,对单词编码,维度上万

例2:推荐系统中,对物品id编码,上亿笔记

类别数量很大时,不用one-hot

embedding(嵌入)

例子:国籍embeddding

参数数量:向量维度 * 类别数量

embedding : 4 * 200 = 800

embedding层:参数以矩阵形式保存,大小为:向量维度 * 类别数量

输入:序号,eg:美国序号为2

输出:向量,eg:美国对应参数矩阵第二列

神经网络关键在于embedding层,对它的优化是一个关键点

one-hot和embedding关系

embedding = one-hot * 参数矩阵

矩阵补充(目前不常用)

训练:

用户embedding层,矩阵A,每个用户对应一列

物品embedding层,矩阵B,每个物品对应一列

内积就是第u个用户对第i个商品兴趣的预估值

训练的目的:学习矩阵A和B

数据集:(用户id a,物品id b,真实兴趣分数 y)------>三元组

优化问题:min\sum (y-<a,b>)^2

行:用户,列:物品,灰色位置表示未曝光,绿色位置代表分数

为什么叫矩阵补充?

大多数都是灰色的,我们并不知道这些用户对这些物品的兴趣,用绿色的部分训练,得到矩阵AB,将灰色部分补全,补全之后就可以给用户做推荐了

工业界不用

缺点:

1.没有利用物品和用户的属性,仅仅使用了id做embedding

2.负样本选取方式不对:

        正样本:曝光后点击

        负样本:曝光后未点击(这是一个“想当然”的设计,其实不对,工业界不采用,后面会详细讲如何构造负样本)

3.训练的方法不好,内积不如余弦相似度,平方损失(回归)不如交叉熵损失(分类)判断正负样本

线上服务

模型存储

训练得到的矩阵AB可能会很大,A--用户,B---物品

矩阵A:

        存到key-value表,key是用户id,value是A的一列。

矩阵B:

        比较复杂

线上服务

1.利用用户id,查找kv表,得到向量a

2.最近邻查找:查找最有可能的k个物品

        物品的embedding向量bi,计算内积<a,bi>,返回最大的k个物品

缺点:时间复杂度正比于物品数量,暴力枚举导致无法实时运转。

如何加速

近似最近邻查找

定义标准:余弦相似度最大(常用) or 内积最大 or 欧氏距离小。

如果系统不支持计算余弦相似度:

将向量归一化(二范数等于1),此时计算出的内积就等于余弦相似度。

方法:

1.数据预处理:分成多个区域,每个区域用一个长度为1的单位向量表示,建立索引,向量作为key,点列表作为value,给定一个向量,就可以返回区域内所有点。

如何划分:余弦相似度---扇形,欧氏距离---多边形

2.线上快速找回:用户向量a,与所有单位索引向量对比,计算相似度,找到最相似的,通过索引,找到所有点,再计算所有点的相似度

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

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

相关文章

【Qt QML】Dialog组件

带有标准按钮和标题的弹出对话框&#xff0c;用于与用户进行短期交互。 这个描述指的是一个常见的用户界面元素&#xff0c;即一个临时弹出的窗口&#xff08;或对话框&#xff09;&#xff0c;它包含一个标题&#xff0c;显示对话框的用途或内容描述&#xff0c;以及一系列标…

用手机做客服的吐槽点客服亲们有同感吗

聊天宝手机版很好的解决了&#xff0c;客服手机快速回复客户的需求&#xff0c;不论微信&#xff0c;企业微信&#xff0c;千牛或其他手机APP回复客户&#xff0c;都可以用聊天宝APP实现图文一键发送&#xff0c;非常方便 前言 做客服工作&#xff0c;除了电脑上回复客户咨询&…

开源博客项目Blog .NET Core源码学习(23:App.Hosting项目结构分析-11)

本文学习并分析App.Hosting项目中后台管理页面的标签管理页面、轮播图维护页面。 标签管理页面 标签管理页面用于显示、检索、新建、编辑、删除标签数据&#xff0c;以便在前台页面的首页及文章专栏等页面显示标签数据。标签管理页面附带一新建及编辑页面&#xff0c;以支撑新…

OpenStack与Kubernetes:云计算平台的两大巨头及其差异

目录 一、引言 二、OpenStack概述与特点 三、Kubernetes概述与特点 四、OpenStack与Kubernetes的比较 OpenStack上创建虚拟机的代码案例 Kubernetes上部署应用的代码案例 五、OpenStack与Kubernetes的协同工作 六、结论 一、引言 在数字化转型的时代&#xff0c;云计算…

gitlab push 代码,密码正确,仍然提示HTTP Basic: Access denied. The provided password

HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password gitlab 登录账户密码确认正确&#xff0c;登录获取代码仍然提示以上问题&#xff0c;解决方案 …

揭秘成绩等级背后的逻辑:小明的语文分数转换记

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、成绩等级转换规则 三、小明的语文成绩转换过程 四、总结与展望 一、引言 在…

蓝桥杯备赛——DP续【python】

一、小明的背包2 试题链接&#xff1a;https://www.lanqiao.cn/problems/1175/learning/ 输入示例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 120 问题分析 这题是完全背包&#xff0c;每个物品有无数个&#xff0c;所以对于任意dp[i][j]&#xff08;其表示的意思为选到第i个…

新手福利:这个模块/工具让你开发的程序轻松实现自动升级功能!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 项目介绍 📒📝 模块功能📝 安装📝 使用⚓️ 相关链接 ⚓️📖 介绍 📖 你是否在开发应用程序时,为如何实现自动软件升级而苦恼?特别是对于 Python 新手开发者来说,编写更新代码可能不是一件容易的事。今天,我将向…

Android 11 触摸小圆点显示流程

在开发者选项中&#xff0c;打开 “显示点按操作反馈” 开关&#xff0c;当我们在触摸屏幕时&#xff0c;会显示一个小圆点&#xff0c;来分析下小圆点的显示流程。 操作这个开关时&#xff0c;其实就是操作Settings数据库中的 SHOW_TOUCHES //packages\apps\Settings\src\com…

HTTP请求拦截器链

文章目录 HTTP请求拦截器链需求定义写一个Controller方法接口写三个http请求拦截器把拦截器加入到配置中&#xff0c;并且配置拦截规则在postman里面发送请求&#xff0c;看下测试结果是否正确 HTTP请求拦截器链 需求定义 我们写一个包含三个HTTP请求拦截器的拦截器链&#x…

如何让UE4.26使用VS2022【Windows,源码下载】

使用UE5一直用的是VS2022&#xff0c;都是因为团队需要&#xff0c;只能用UE4&#xff0c;而我电脑中拥有的UE4的版本是UE4.26以及VS2022&#xff0c;我不可能去下载VS2019来为这么一个项目&#xff0c;所以就研究了一下是哪里阻止了UE4.26不让我使用VS2022. 首先下载UE4.26源码…

Langchain-Chatchat之pdf转markdown格式

文章目录 背景开发环境loader文本解析步骤markdown格式的文本为什么选择markdown格式测试markdown格式提取表格原pdf表格markdown格式的表格 测试markdown格式的知识库运行项目修改文件加载器loader 其他问题运行项目报错查看系统当前的max_user_watches修改sysctl.conf配置 图…

【Linux】Linux下centos更换国内yum源

&#x1f331;博客主页&#xff1a;青竹雾色间 &#x1f331;系列专栏&#xff1a;Linux &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 1. 备份旧的 YUM 源文件2. 下载国内的 YUM 源文件阿里云&#xff1a;网易&#xff1a; 3. 清理 YUM 缓存4. 更新…

【c++leetcode】69. Sqrt(x)

问题入口 二分搜索 最困难的是能否意识到用二分搜索法解题。 算术平方根的区间在[1, x] 。代码如下&#xff1a; class Solution { public:int mySqrt(int x) {if (x 1 || x 0){return x;}int64_t start 1;int64_t end x;while (start < x){int64_t mid start (en…

开箱元宇宙| 探索家乐福如何在The Sandbox 中重新定义零售和可持续发展

有没有想过 The Sandbox 如何与世界上最具代表性的品牌和名人的战略保持一致&#xff1f;在本期的 "开箱元宇宙 "系列中&#xff0c;我们与家乐福团队进行了对话&#xff0c;这家法国巨头率先采用web3技术重新定义零售和可持续发展。 家乐福的用户平均游玩时间为 57 …

06_知识点总结(JS高级)

一、进程与线程 1. 进程(process)&#xff1a;程序的一次执行, 它占有一片独有的内存空间 2. 线程(thread)&#xff1a; 是进程内的一个独立执行单元&#xff0c;CPU的基本调度单元, 是程序执行的一个完整流程 3. 进程与线程 * 应用程序必须运行在某个进程的某个线程上 * 一个…

tinyrenderer-渲染器着色

整理了代码&#xff0c;创建了一个相机类&#xff0c;控制镜头 class Camera { public:Camera(Vec3f cameraPos, Vec3f target, Vec3f up):cameraPos_(cameraPos), target_(target), up_(up) {}Matrix getView();Matrix getProjection(); private:Vec3f cameraPos_;Vec3f targ…

来自学术界的知识库 RAG 调优方案实践(一)

背景介绍 在之前的文章详细梳理过工业界的 RAG 方案 QAnything 和 RagFlow&#xff0c;这次主要整理下来自学术界的一系列 RAG 优化方案。 主要关注优化方案对应的设计思想以及相关的实现&#xff0c;希望可以对大家的 RAG 服务效果提升有所帮助。 基础介绍 在综述论文 Ret…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys锂电池测试设备控制解决方案

锂电池诞生于上世纪60年代&#xff0c;90年代开始由日本索尼公司实现商业化。锂离子电池凭借快速充放电、长循环寿命、无记忆效应等众多优点&#xff0c;成为当今数码产品及电动汽车大规模应用的第一选择。与镍氢电池、铅酸电池相比&#xff0c;锂电池可以存储更多电能。现在&a…

Word如何绘制三线表及设置磅值

插入表格&#xff0c; 开始 边框 边框和低温 设置磅值 先全部设置为无边框 上边 1.5 0.5 以上内容未完善&#xff0c;请等待作者更新