【词向量表示】Item2Vec、DeepWalk、Node2vec、EGES词向量生成算法

前言:一般来说用户Embedding在推荐系统中可以通过物品的Embedding向量平均或者聚类实现,因此物品的Embedding算法的效果成为重中之重。这篇文章是笔者阅读《深度学习推荐系统》第四章Embedding技术在推荐系统中的应用的学习笔记。本篇文章主要介绍传统词向量的生成算法,在Word2Vec算法的基础上,词向量生成算法在推荐系统上的衍生。

文章目录

    • 传统词向量生成算法
      • Embedding
        • Word2Vec
        • Item2Vec
      • Graph Embedding
        • DeepWalk
          • 主要思想
          • 算法实现
        • Node2vec
          • 算法实现
        • EGES
          • 算法实现

传统词向量生成算法

Embedding

Word2Vec

传统的编码方式:one-hot编码,不同单词[1, 0, 0][0, 1, 0]之间的余弦相似度为0。因此,Word2Vec希望能够通过训练得到一个新的词向量表达方式,从而丰富向量的语义信息。主要目标如图所示,从一个稀疏的one-hot向量通过训练得到一个丰富稠密的新向量。

学习参考链接:【词向量表示】Word2Vec原理及实现-CSDN博客

Item2Vec

狭义上:一种物品Embedding方法,是对Word2Vec算法的延申,Item2Vec方法是将物品视为“单词”,而一个行为,例如购买行为视为一个句子,在一个行为中,有物品先后购买顺序,而Item2Vec正是利用这种序列学习物品向量表示。

广义上:只要是物品→向量的方法都可以称为Item2Vec:双塔模型(百度、Facebook),以one-hot编码作为输入,经过复杂的多层神经网络输出Embedding向量。

与Word2Vec的区别

  • 数据不同:

Item2Vec利用“物品序列”等行为产生历史行为序列(包括购买、浏览等行为),而Word2Vec是利用“词序”。

  • 优化目标不同:

Item2Vec在优化目标的过程中认为任意两个物品之间都存在联系,而Word2Vec认为只有在一定窗口内才有联系。

局限性

只能使用序列型的行为数据实现向量生成

Graph Embedding

DeepWalk

本质还是Item2Vec算法,只不过是利用游走的方式在图上产生大量的物品序列

主要思想

​ 给定一张图结构,在图上进行随机游走,产生大量的物品序列,最后将序列放入Item2Vec中进行训练

image

算法实现

​ 与Item2Vec不同的是,在生成大量物品序列的过程中,需要确定当前结点的下一个结点,即随机游走的算法,假设物品关系图是有向有权图,则随机游走的形式化表达为:
P ( v j ∣ v i ) = M i j ∑ j ∈ N + ( v i ) M i j P(v_j|v_i) = \frac{M_{ij}}{\sum_{j \in N_+(v_i)}M_{ij}} P(vjvi)=jN+(vi)MijMij
其中$ N_+(v_i) 表示 表示 表示v_i 的所有出边集合, 的所有出边集合, 的所有出边集合,M_{ij}$表示两个结点之间的权重。这一过程即计算下一个结点被选择概率,边权重越大,被选择的概率越大。若是无权图,则将所有边权重默认为1,即每个结点被选择的概率相同。

Node2vec

在DeepWalk的基础上,调整了随机游走的权重,使得结果更能体现图网络的同质性和结构性

  • 同质性:相互连接的物品向量相近,在物品网络结构表示为同类、同属性商品;
  • 结构性:拓扑结构相似的物品向量相近,在物品网络结构表示为各品类的爆款、最佳凑单等等;
算法实现
  • 同质性:不仅需要找到相近的结点,还需要游走到远方的结点训练,BFS只能找到相近的结点,而DFS更适合表达网络”同质性“的游走过程
  • 结构性:需要找到物品相似的拓扑结构,需要对周围的结点网络结构进行遍历扫描,BFS更适合表达网络”结构性“游走过程

image

​ 综上所述,在选择下一结点时,需要权衡BFS和DFS的倾向性,Node2Vec通过节点间的跳转概率权衡两者的倾向性,从结点v跳转到结点x的概率为:
P ( x ∣ v ) = a p q ( d ) × ω v x P(x|v) = a_{pq}(d) \times \omega_{vx} P(xv)=apq(d)×ωvx
其中d表示结点v和x的距离, ω v x \omega_{vx} ωvx表示两个结点的权重, a p q a_{pq} apq表示概率权重参数,平衡BFS和DFS的倾向性
a p d ( d ) = { 1 p , d = 0 1 , d = 1 1 q , d = 2 a_{pd}(d)= \begin{cases} \frac{1}{p},d=0\\ 1, \ d=1\\ \frac{1}{q}, d=2\\ \end{cases} apd(d)= p1,d=01, d=1q1,d=2
其中p表示在附近游走的可能性,p越小,Node2vec更注重表达网络的结构性,q越小,则远离原始节点的概率越大,此时,Node2vec更注重表达网络的同质性

EGES

阿里巴巴的embedding方法,基本思想是在Deepwalk生成的Graph Embedding上引入补充信息,目的是为了解决长尾物品问题、冷启动物品交互信息少的问题。DeepWalk、Node2Vec只基于图结构生成节点嵌入向量,忽略了节点可能携带的其他辅助信息。EGES通过引入更多的补充信息来丰富向量特征。实现上并没有过多的理论创新,但在工业上是实用性很强的算法。

算法实现
  • 生成物品关系图:利用物品的相同特征生成基于内容的知识图谱,通过知识图谱生成的物品向量被称为补充向量

  • 对于不同特征的向量,模型通过加权求和的方式得到最后的Embedding输出,其中权重参数为 e a j e^{a_j} eaj

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

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

相关文章

【AI工具】强大的AI编辑器Cursor详细使用教程

目录 一、下载安装与注册 二、内置模型与配置 三、常用快捷键 四、项目开发与问答 五、注意事项与技巧 参考资料 近日,由四名麻省理工学院(MIT)本科生共同创立的Anysphere公司宣布,其开发的AI代码编辑器Cursor在成立短短两年…

交易所 Level-2 历史行情数据自动化导入攻略

用户部署完 DolphinDB 后,需要将历史股票数据批量导入数据库,再进行数据查询、计算和分析等操作。DolphinDB 开发了 ExchData 模块,主要用于沪深交易所 Level-2 行情原始数据的自动化导入,目前已支持的数据源包括: 沪…

zotero中pdf-translate插件和其他插件的安装

1.工具–》插件 2.找插件 3.点击之后看到一堆插件 4.找到需要的,例如pdf-translate 5.点击进入,需要看一下md文档了解下,其实最重要的就是找到特有的(.xpi file) 6.点击刚刚的蓝色链接 7.下载并保存xpi文件 8.回到zotero,安装并使…

5.12【机器学习】卷积模型搭建

softmax输出时不可能为所有模型提供精确且数值稳定的损失计算 model tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape(28, 28)),tf.keras.layers.Dense(128, activationrelu),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10) ]) mnist tf.keras…

头歌 Linux之线程管理

第1关:创建线程 任务描述 通常我们编写的程序都是单进程,如果在一个进程中没有创建新的线程,则这个单进程程序也就是单线程程序。本关我们将介绍如何在一个进程中创建多个线程。 本关任务:学会使用C语言在Linux系统中使用pthrea…

工业机器视觉-基于深度学习的水表表盘读数识别

字轮数字识别、指针读数识别(角度换算)、根据指针角度进行读数修正、根据最高位指针(x0.1)读数对字轮数字进行修正、得到最终读数。 基于深度学习的目标检测技术和OpenCV图像处理技术,可识别所有类型的表盘机械读数。

超详细MacBook Pro(M1)配置GO语言环境(图文超详细版)

前提 当我第一次使用MacBook配置Go语言环境时,网上的资料错综复杂,部分资料对于第一次使用MacBook的小白们非常不友好,打开终端时,终端的位置对应的访达中的位置不是很清楚,因此才有了这篇文章,该文章通过…

大数据项目-Django基于聚类算法实现的房屋售房数据分析及可视化系统

《[含文档PPT源码等]精品Django基于聚类算法实现的房屋售房数据分析及可视化系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程课程答疑等! 数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog 后台管理系统涉及技术: 后台使…

魔改版kali分享(新增50多种渗透工具)

网盘链接 我用夸克网盘分享了「Kali Linux 定制化魔改系统」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/dda56f7e3431 提取码:…

矩阵加法        ‌‍‎‏

矩阵加法 C语言代码C 语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入两个n行m列的矩阵A和B&#xff0c;输出它们的和AB。 输入 第一行包含两个整数n和m&#xff0c;表示矩阵的行数和列数。1 <…

前端开发 之 15个页面加载特效下【附完整源码】

文章目录 十二&#xff1a;铜钱3D圆环加载特效1.效果展示2.HTML完整代码 十三&#xff1a;扇形百分比加载特效1.效果展示2.HTML完整代码 十四&#xff1a;四色圆环显现加载特效1.效果展示2.HTML完整代码 十五&#xff1a;跷跷板加载特效1.效果展示2.HTML完整代码 十二&#xff…

微信 创建小程序码-有数量限制

获取小程序码&#xff1a;小程序码为圆图&#xff0c;有数量限制。 目录 文档 接口地址 功能描述 注意事项 请求参数 对接 获取小程序码 调用获取 小程序码示例 总结 文档 接口地址 https://api.weixin.qq.com/wxa/getwxacode?access_tokenaccess_token 功能描述 …

DP、CP、Mn是什么?有什么关系?双径节齿轮又是什么?

有一些刚刚接触齿轮的小伙伴们&#xff0c;经常听到和齿轮相关的是Mn这个代号&#xff0c;有时候拿到图纸会碰到DP和CP的图纸&#xff0c;今天就简单数一数他们三个的关系&#xff1a; 径节DP 齿轮的节距定义为两个相邻齿轮齿上两个相同点之间的距离。在理想情况下&#xff0c…

Linux之socket编程(一)

前言 网络通信的目的 我们已经大致了解了网络通信的过程: 如果主机A想发送数据给主机B, 就需要不断地对本层的协议数据单元(PDU)封装, 然后经过交换设备的转发发送给目的主机, 最终解封装获取数据. 那么网络传输的意义只是将数据由一台主机发送到另一台主机吗&#xff1f; …

视频 的 音频通道提取 以及 视频转URL 的在线工具!

视频 的 音频通道提取 以及 视频转URL 的在线工具&#xff01; 工具地址: https://www.lingyuzhao.top/toolsPage/VideoTo.html 它提供了便捷的方法来处理视频文件&#xff0c;具体来说是帮助用户从视频中提取音频轨道&#xff0c;并将视频转换为可以通过网络访问的URL链接。无…

Java环境变量配置

在Java 的开发环境的准备中&#xff0c;一般安装完JDK之后会进行Java相关的环境变量的配置&#xff0c; 那么&#xff1a; 需要配置哪些环境变量呢&#xff1f;为什么要配置这些环境变量呢&#xff1f; Java 相关的环境变量 JAVA_HOME &#xff0c; &#xff3b;新增环境变量…

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前

STM32 DMA直接存储器存取原理及DMA转运模板代码

DMA简介&#xff1a; 存储器映像&#xff1a; 注意&#xff1a;FLASH是只读的&#xff0c;DMA不能写入&#xff0c;但是可以读取写到其他存储器里 变量是存在运行内存SRAM里的&#xff0c;常量&#xff08;const&#xff09;是放在程序存储器FLASH里的 DMA框图&#xff1a; …

释放超凡性能,打造鸿蒙原生游戏卓越体验

11月26日在华为Mate品牌盛典上&#xff0c;全新Mate70系列及多款全场景新品正式亮相。在游戏领域&#xff0c;HarmonyOS NEXT加持下游戏的性能得到充分释放。HarmonyOS SDK为开发者提供了软硬协同的系统级图形加速解决方案——Graphics Accelerate Kit&#xff08;图形加速服务…

【专题】计算机网络之运输层(传输层)

1. 运输层协议概述 1.1 进程之间的通信 (1) 运输层的作用 运输层提供进程间的逻辑通信。 运输层的屏蔽作用&#xff1a; 运输层向高层用户屏蔽了下面网络核心的细节&#xff08;如网络拓扑、所采用的路由选择协议等&#xff09;&#xff0c;使应用进程看见的就是好像在两个运…