20240318-2-推荐算法Graph_Embedding

Graph Embedding

在这里插入图片描述

在许多推荐场景下,可以用网络结构数据来刻画对象(用户、商品等)之间的关系。例如:可以将用户和商品作为网络中的结点,用户和商品之间的边代表购买关系。

Graph Embedding 是一种将网络中对象之间的关系转换为每个对象的(向量)特征的一种技术。其主要想法是输入网络后,为每个对象生成一个(向量)特征,满足在网络中越相似的对象,其向量特征之间距离越接近。

下面主要介绍DeepWalk和Node2Vec两种Graph Embedding 算法。这两种算法利用网络生成对象序列后,采用word2vec算法生成对象的Graph Embedding。

1. Deep Walk

DeepWalk 主要由RandomWalk 和 Word2Vec 两部分组成。RandomWalk 用于生成结点(对象)序列,Word2Vec利用结点序列生成对象的Embedding。

在RandomWalk中,给定网络中以任意一点为起点,每次在当前结点的邻居中等概率选择一个节点放入已生成的序列中,并把该结点作为下一个结点重复上述采样过程,直到获得的序列长度达到预设的要求。

在获得足够多的结点序列后,使用Word2Vec算法生成每个对象的Embedding。在论文中使用Word2Vec中的SkipGram算法。

具体算法如下所示。

在DeepWalk中使用深度优先的方式生成对象序列,为了丰富对网络中相似结点的含义,也可以尝试用广度优先的方式生成对象序列。Node2Vec 就是一种在生成对象序列时结合深度优先和广度优先的算法。

2. Node2Vec

2.1 序列生成算法

Node2Vec 在RandomWalk的基础上引入search bias α \alpha α,通过调节超参数 α \alpha α,控制对象序列生成过程中广度优先和深度优先的强度。

RandomWalk的搜索方法比较朴素。在相邻结点之间根据边的权重或者其他业务理解定义转移概率。特别地,DeepWalk 采用等概率的方式搜索下一个结点。转移概率可以有如下的表达形式。

进一步,Node2Vec在未归一化的转移概率 π v x \pi_{vx} πvx之前乘以偏置项 α \alpha α,来反映序列生成算法对于深度优先和广度优先的偏好。以下是偏置项 α \alpha α的具体表达形式。

其中 d t x d_{tx} dtx为顶点 t t t和顶点 x x x之间的最短路径长度, p , q p, q p,q控制深度优先和广度优先的强度。

假设当前随机游走经过边 ( t , x ) (t,x) (t,x)后达到顶点 v v v,以 π v x = α p q ( t , x ) ω v x \pi_{vx}=\alpha_{pq}(t,x)\omega_{vx} πvx=αpq(t,x)ωvx的未归一化概率搜索下一个结点。

偏置项 α \alpha α受到超参数p和q的控制,具体来说p, q的大小会对搜索策略产生如下影响。

Return parameter p的影响:

  1. 超参数p影响回到之前结点t的概率大小。如果p越小,则回到之前结点t的概率越大,搜索策略越倾向于在初始结点的附近进行搜索。

In-out parameter q的影响:

  1. 超参数q控制着搜索算法对于广度优先和深度优先的偏好。从示意图中,我们可以看到q越小,越倾向于搜索远离初始结点t,与倾向于深度优先的方式。

2.2 Embedding学习

Node2vec 采用和SkipGram类似的想法,学习从节点到embedding的函数 f f f,使得给定结点 u u u,其近邻结点 N S ( u ) N_S(u) NS(u)的出现的概率最大。近邻结点的是由序列生成算法获得的一系列点。具体数学表达如下。

在原文中使用了条件独立性假设和特征空间独立行假设,并使用softmax函数来表示概率,将上述优化问题化简为容易求解的优化问题。采用SGD算法获得生成Embedding的函数 f f f。具体的化简过程可以参考原文。

如下是Node2Vec的整个算法过程,其中采用了时间复杂度为O(1)的alias采样方法,具体可以参考[2]。

面试真题

  1. 请结合业务谈一下怎样在推荐场景中建立网络。
  2. 在Node2Vec建立对象序列的过程中,怎样实现深度优先和广度优先的?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python项目格式代码风格

Visual Studio Code 选择使用 black 作为代码格式化工具,保证提交代码风格的统一 1. Install black pip install black2. Install black and isort extension for vscode: 3. 设定black及isort的格式化配置 3.1. ctrl , 打开配置面板 3.2. 在弹出的json配置中添…

域名防红源码-再次启用已经红掉拦截的域名-提示跳转浏览器打开

比如说你的域名已经红掉了被拦截了,还想继续在使用,那么你用这个系统后呢,他就会提示跳转浏览器打开。以此达到再次启用的效果。 假如你的域名是A,已经红掉的;使用此方法新加一个域名B;之后你每次发域名B或…

【理解机器学习算法】之Clustering算法(K-Means)

实现 K-means 聚类从零开始涉及几个关键步骤:初始化质心、将点分配给最近的质心、根据分配更新质心,以及重复这个过程直到收敛。这里是一个基本的 Python 实现: K-means 算法步骤: 初始化质心:从数据点中随机选择 k …

docker推拉时的数据交换详解

前言 docker用了这么久了, 有没有想过, 在执行docker push 和 docker pull命令的时候, 数据是如何传递的呢? 换句话说, 如果要实现一个镜像仓库, 针对推拉的服务, 如何实现接口呢? 根据OCI 分发规范文档 的描述, 已经对整个推拉过程中要调用的接口有描述了. 但是, 纸上学来…

何为布控球?布控球的分类对比

主要的分类有: 根据内部的主控板卡的系统分类,典型的是基于海思芯片的嵌入式LINUX系统的,一般出国标GB28181,另外一种是剑走偏锋的安卓系统的,需要把球机的输出YUV转换为UVC接入安卓主板,作为外接USB摄像头…

Java进阶—GC回收(垃圾回收)

1. 什么是垃圾回收 垃圾回收(Garbage Collection,GC)是Java虚拟机(JVM)的一项重要功能,用于自动管理程序中不再使用的内存。在Java中,程序员不需要手动释放内存,因为GC会自动检测并回收不再使用的对象,从而减少内存泄…

param参数

param参数介绍及使用 在 Web 开发中,param 是指路由中的参数,用于捕获 URL 中的动态部分,并将其作为参数传递给路由处理函数。当定义包含参数的路由时,可以使用 param 方法来捕获 URL 中的动态部分,并将其传递给路由处…

用户多部门切换部门,MySQL根据多个部门id递归获取所有上级(祖级)、获取部门的全路径(全结构名称)

背景 之前做过的项目,都是一个用户就一个部门的,现在碰到个一个用户在多个部门的需求,而且需要可以切换不同部门查看不同数据。 就比如说一个大公司下面有多个子公司,每个子公司有好多部门、子部门等等,然后有部分用…

chrome浏览器插件extension开发中content内容脚本和background脚本通讯

有时候我们想监听页面中的数据变化,然后将监听到的数据传递给background脚本处理,比如根据不同的数据,来处理不同的业务逻辑,存储到服务器?或者控制浏览器显示效果?都可以,问题的重点是怎么让co…

口袋条件下的Lead优化几何深度模型-Delete 评测

Delete (Deep lead optimization enveloped in protein pocket) 是一个基于口袋的,3D分子生成的,应用于lead优化过程中侧链修饰、骨架跃迁,linker设计,片段生长的几何深度学习模型。 一、模型介绍 Delete 模型是浙江大学侯廷军老…

第一篇:概述、 目录、适用范围及术语 --- IAB/MRC《增强现实(AR)广告(效果)测量指南1.0 》

第一篇:概述、目录、适用范围及术语 - IAB与MRC及《增强现实广告效果测量指南1.0》 --- 我为什么要翻译美国IAB科技公司系列标准 ​​​​​​​​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效…

STM32通信协议

STM32通信协议 STM32通信协议 STM32通信协议一、通信相关概念二、通信协议引脚作用三、通信方式四、采样方式五、电平信号六、通信对象 一、通信相关概念 通信接口 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定…

Mapmost Alpha —— 数字孪生创作新引擎,一键开启未来视界!

文章目录 一、关于 Mapmost Alpha1.1 Mapmost Alpha 应用创作工具1.2 Mapmost 数字孪生平台 二、Mapmost Alpha 产品能力与平台优势2.1 Mapmost Alpha 产品能力2.1 Mapmost Alpha 平台优势 三、Mapmost Alpha 成功案例3.1 美食地图3.2 同城活动3.3 智慧商业楼宇管理3.4 智慧交通…

C++之移动语义与智能指针

目录 移动语义 1、几个基本概念的理解 2、复制控制语义的函数 3、移动控制语义的函数 3.1、移动构造函数: 3.2、移动赋值函数 4.区别 5、std::move函数 6.代码演示: 资源管理与智能指针 一、C语言中的问题 二、C的解决办法(RAII技术): 三、四种智能指针…

水果检测15种YOLOV8

水果检测15种YOLOV8,只需要OPENCV,采用YOLOV8训练得到PT模型,然后转换成ONNX,OPENCV调用,支持C/PYTHON/ANDROID开发

宝塔面板优惠券在哪里领取?

随着科技的飞速发展,网站搭建和管理变得越来越简单。宝塔面板作为一款优秀的服务器管理面板,深受广大站长用户喜爱。为了帮助站长们更好地使用宝塔面板,本文将为大家详细介绍如何领取宝塔面板优惠券。 一、宝塔面板优惠券领取入口 领取入口&a…

Ubuntu Desktop 安装谷歌拼音输入法

Ubuntu Desktop 安装谷歌拼音输入法 1. Installation1.1. 汉语语言包​1.2. 谷歌拼音输入法1.3. 安装语言包1.4. 键盘输入方式系统1.5. 重启电脑1.6. 输入法配置 2. configuration2.1. Text Entry Settings… 3. ExecutionReferences 1. Installation 1.1. 汉语语言包 strong…

LeetCode刷题日志-34在排序数组中查找元素的第一个和最后一个位置

思路:用两次二分查找,分别查找指定元素的第一个和最后一个位置。 直接看代码 // 两次二分查找,分开查找第一个和最后一个 class Solution {public int[] searchRange(int[] nums, int target) {int[] reslut new int[]{-1, -1};int left 0…

virtualbox导入vdi

新建虚拟机 点击新建 输入新建属性 配置cpu和内存 虚拟硬盘 这里选择已有的vdi文件 摘要 这里点击完成 虚拟机添加成功 点击启动,启动虚拟机 注意 这个时候的ip,还是以前镜像的ip,如果两个镜像一起启动

双系统安装03--在已有麒麟KOS基础上安装Windows10

原文链接:双系统安装03–在已有麒麟KOS基础上安装Windows10 Hello,大家好啊!继我们之前讨论的关于双系统安装的系列文章之后,今天我将带给大家这个系列的第三篇——在已有的麒麟桌面操作系统上安装Windows 10。对于想要在使用麒麟…