MINT: Detecting Fraudulent Behaviors from Time-series Relational Data论文阅读笔记

2. 问题定义
时间序列关系数据(Time Series Relation Data)

这个数据是存放在关系型数据库中,每一条记录都是泰永时间搓的行为。

更具体地,每条记录表示为 x = ( v , t , x 1 , x 2 , … , x m − 2 ) x = (v,t,x_1,x_2,\dots,x_{m-2}) x=(v,t,x1,x2,,xm2),其中 v v v代表带时间戳的行为, t t t是时间戳,𝑥𝑖代表其他属性,例如设备ID和会话持续时间。

针对时间序列关系数据的欺诈检测(Fraud Detection over Time Series Relation Data)

每一个用户 u ∈ U u \in U uU都会有一些列的行为 V = { v 0 , v 1 , … , v n − 1 } V = \{v_0, v_1, \dots, v_{n-1}\} V={v0,v1,,vn1}其中 v i ∈ V v_{i} \in V viV代表的是用户的行为, n n n是序列的长度。用户的行为数据,也就是 V V V通常是按照时间顺序进行呈现的,目的是根据用户的历史顺序行为数据确定用户是否有可以行为,这个任务可以被构建为一个二分类任务

时间感知行为图

给定一个具有带时间戳的行为序列 V = { v 0 , v 1 , … , v n − 1 } V = \{v_0, v_1, \dots, v_{n-1}\} V={v0,v1,,vn1}及相应的属性的用户,其时间感知行为图定义为 G = { V , E , A } G = \{V, E, A\} G={V,E,A}, 其中 V V V代表行动节点, E E E是边, A ∈ R n ∗ n ( 0 ≤ A i , j ≤ 1 ) A \in R^{n*n}(0 \leq A_{i,j} \leq 1) ARnn(0Ai,j1)是图卷积矩阵(graph convolutional matrix)。图中的每个节点 V i V_i Vi代表一条记录,每条边< v i , v j v_i, v_j vi,vj>的权重与 v i v_i vi代表一条记录,每条边< v i v_i vi, v j v_j vj>的权重与 v i v_i vi v j v_j vj之间的时间差成反比。

图卷积矩阵(Graph Convolutional Matrix)

GCN计算所有邻近节点(包含节点本身)的节点特征的胶圈平均值。权重矩阵被称为图卷积矩阵。在时间感知行为图中,构建了一个时间感知的图卷积矩阵来模拟行动之间的相互依赖性。更具体地说,第 i i i个节点和第 j j j个节点之间的归一化边权重是
A ~ i , j = ρ ∣ t i − t j ∣ ∑ k = 0 n − 1 ρ ∣ t i − t k ∣ \widetilde{A}_{i,j}=\frac{\rho^{|t_i-t_j|}}{\sum_{k=0}^{n-1}\rho^{|t_i-t_k|}} A i,j=k=0n1ρtitkρtitj
,其中 0 < ρ < 1 0 < \rho <1 0<ρ<1 是控制每个目标节点接受场的范围的超参数。

3. MINT框架

image-20240320200744009

3.1 提取用户的时间信息,构建具有三个不同视角的时间感知行为图。

image-20240320200905759

MINT的数据预处理模块由图卷积矩阵构造器节点嵌入构造器组成。

  1. 将每一个行为表示为一个带有相应属性的节点特征
  2. 根据算法1构建三个具有不同接收计算的图卷积助阵,这个主要是 ρ \rho ρ的数值不相同。
  3. 更深的图卷积层会聚合更多的邻域信息(图四中的蓝色节点)到目的节点。
  4. 每一层中表示的是某一个用户的所有行为,按照的是时间段进行排序,然后,每一个节点的中的属性,例如时间,设备等等,会放入MLP中,输入的维度为 d d d,表示的是一个节点(也就是一个行为)的特征。
  5. 初始的行为嵌入表示为 H ( 0 ) ∈ R n ∗ d H^{(0)} \in R^{n*d} H(0)Rnd,其中 n n n是节点的数量, d d d表示输入嵌入的维度。
3.2 多视图卷积网络
3.2.1 多视图图卷积

在每一层图卷积中,特征聚合如下执行:
h N ( v i ) ( l ) = ∑ v j ∈ N ( v i ) A v i , v j ( l ) ∗ h v j ( l − 1 ) \mathbf{h}_{\mathcal{N}(v_i)}^{(l)}=\sum_{v_j\in\mathcal{N}(v_i)}\mathbf{A}_{v_i,v_j}^{(l)}*\mathbf{h}_{v_j}^{(l-1)} hN(vi)(l)=vjN(vi)Avi,vj(l)hvj(l1)
我们现在知道, H ( 0 ) = [ h v 0 ( 0 ) , h v 1 ( 0 ) , … , h v n − 1 ( 0 ) ] H^{(0)} = [h_{v_0}^{(0)},h_{v_1}^{(0)},\dots,h_{v_{n-1}}^{(0)}] H(0)=[hv0(0),hv1(0),,hvn1(0)],这个是初始化的特征,通过节点的属性经过 M L P MLP MLP获取的,

h N ( v i ) ( l ) \mathbf{h}_{\mathcal{N}(v_i)}^{(l)} hN(vi)(l)表示的是第 l l l层中行动节点 v i v_i vi的聚合邻居表示, A v i , v j ( l ) \mathbf{A}_{v_i,v_j}^{(l)} Avi,vj(l)表示的是在第 l l l层中行动节点 v j v_j vj到节点 v i v_i vi的归一化聚合系数。粗俗一点说也就是第 l l l层的节点特征是通过第 l − 1 l-1 l1层的节点特征*第 l l l层中的图卷积矩阵

然后,对于他自己聚合邻居节点候得特征计算方式如下:
h v i ( l ) = L e a k y R e L U ( W ( l ) h N ( v i ) ( l ) ) \mathbf{h}_{v_i}^{(l)}=LeakyReLU(\mathbf{W}^{(l)}\mathbf{h}_{\mathcal{N}(v_i)}^{(l)}) hvi(l)=LeakyReLU(W(l)hN(vi)(l))
L e a k y R e L U LeakyReLU LeakyReLU的激活函数公式如下所示,一般的 R e L U ReLU ReLU函数会将小于0的数值变成0,但是 L e a k y R e L U LeakyReLU LeakyReLU会将小于0的数值变成极小值
f ( x ) = { x i f x > 0 α x i f x ≤ 0 f(x)=\begin{cases}x&\mathrm{~if~}x>0\\\alpha x&\mathrm{~if~}x\leq0&\end{cases} f(x)={xαx if x>0 if x0
可以看见其中的 W ( l ) ∈ R d ∗ d \mathbf{W}^{(l)} \in R^{d*d} W(l)Rdd是第 l l l层转换函数中的可训练参数矩阵。

3.2.2 门控邻居交互

image-20240321111329141

在这一节中,作者推翻了上一小节讲述的东西,现在说的是上一小节的做法会存在过平滑问题

仅仅依赖时间间隔信息的信息聚合方法会导致严重的过平滑问题。也就是说,一些常见的行为,如‘访问主页’,在用户的行为数据中出现的频率远高于其他行为。导致用户的表示会被常见的行为信息所主导,从而降低欺诈检测的性能。我们将这个问题称为是过平滑问题。为了解决这个问题,我们尝试从邻居节点中尝试去聚合更有用的信息,作者设计了一个门控邻居交互机制。

首先对于第 l l l层中行动节点 v i v_i vi的聚合邻居表示 h N ( v i ) ( l ) \mathbf{h}_{\mathcal{N}(v_i)}^{(l)} hN(vi)(l),变成了如下公式进行解决:
h ^ N ( v i ) ( l ) = LayerNorm ( σ ( h v i ( 0 ) ) ⊙ t a n h ( h N ( v i ) ( l ) ) ) \widehat{\mathrm{h}}_{\mathcal{N}(v_i)}^{(l)}=\text{LayerNorm}(\sigma(\mathrm{h}_{v_i}^{(0)})\odot tanh(\mathrm{h}_{\mathcal{N}(v_i)}^{(l)})) h N(vi)(l)=LayerNorm(σ(hvi(0))tanh(hN(vi)(l)))
其中,他把初始化的通过节点属性输入进 M L P MLP MLP中的特征的输出结果,输出进了 σ \sigma σ函数中,其中 σ \sigma σ函数的公式如下:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac1{1+e^{-x}} σ(x)=1+ex1
他是把输入的 x x x输出为一个[0-1]的数值,这样做的目的可能是引入非线性函数去捕获更加复杂的信息。

然后 t a n h ( x ) tanh(x) tanh(x)的结构如下所示:
tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex
他的输出范围在[-1,1],通过这样的方式去保持中心化,也可以改善梯度流

采用 L a y e r N o r m LayerNorm LayerNorm也是为了缓解梯度爆炸或者梯度消失的问题。

最后,在第 l l l层中的节点特征 h v i ( l ) \mathbf{h}_{v_i}^{(l)} hvi(l)被表示为:
h v i ( l ) = L e a k y R e L U ( W ( l ) h ^ N ( v i ) ( l ) ) \mathbf{h}_{v_i}^{(l)}=LeakyReLU(\mathbf{W}^{(l)}\widehat{\mathbf{h}}_{\mathcal{N}(v_i)}^{(l)}) hvi(l)=LeakyReLU(W(l)h N(vi)(l))

读出层

image-20240321124821803

我们为了从行为嵌入矩阵中【 H ( l ) = [ h v 0 ( l ) , h v 1 ( l ) , … , h v n − 1 ( l ) ] H^{(l)} = [h_{v_0}^{(l)},h_{v_1}^{(l)},\dots,h_{v_{n-1}}^{(l)}] H(l)=[hv0(l),hv1(l),,hvn1(l)],】生成意图嵌入向量,设计了一个最大池化层和基于注意力机制的读出层,如图5所示。我们通过最大池化层去获取最显著的特征,我们称为嵌入相关的意图表示: h e ( 0 ) , h e ( 1 ) , h e ( 2 ) , h e ( 3 ) h_e^{(0)}, h_e^{(1)}, h_e^{(2)},h_e^{(3)} he(0),he(1),he(2),he(3),然后再运用注意力机制去融合在嵌入维度上保持最显著的行为。

对于每个试图,与行为相关的意图表示如下获得:
α ( l ) = ϕ a t t ( h e ( l ) , H ( l ) ) = h e ( l ) ⊺ W a t t H ( l ) \alpha^{(l)}=\phi_{att}(\mathbf{h}_{e}^{(l)},\mathbf{H}^{(l)})=\mathbf{h}_{e}^{(l)^{\intercal}}\mathbf{W}^{att}\mathbf{H}^{(l)} α(l)=ϕatt(he(l),H(l))=he(l)WattH(l)
h e ( l ) ⊺ ∈ R d ∗ n \mathbf{h}_{e}^{(l)^{\intercal}} \in R^{d*n} he(l)Rdn| W a t t ∈ R d ∗ d \mathbf{W}^{att} \in R^{d*d} WattRdd| H ( l ) ∈ R n ∗ d H^{(l)} \in R^{n*d} H(l)Rnd => α ( l ) ∈ R n ∗ n \alpha^{(l)} \in R^{n*n} α(l)Rnn

注意力机制计算后的结果:
h a ( l ) = ∑ i = 0 n − 1 α i ( l ) ⋅ h i ( l ) , α i ( l ) ∈ α ( l ) , h i ( l ) ∈ H ( l ) \mathbf{h}_{a}^{(l)}=\sum_{i=0}^{n-1}\alpha_{i}^{(l)}\cdot\mathbf{h}_{i}^{(l)},\alpha_{i}^{(l)}\in\boldsymbol{\alpha}^{(l)},\mathbf{h}_{i}^{(l)}\in\mathbf{H}^{(l)} ha(l)=i=0n1αi(l)hi(l),αi(l)α(l),hi(l)H(l)
α ( l ) ∈ R n ∗ n \alpha^{(l)} \in R^{n*n} α(l)Rnn| h ( l ) ∈ R n ∗ d \mathbf{h}^{(l)} \in R^{n*d} h(l)Rnd => h a ( l ) ∈ R n ∗ d \mathbf{h}_{a}^{(l)} \in R^{n*d} ha(l)Rnd

最后,该层的每个节点特征为: h ( l ) = h e ( l ) + h a ( l ) . \mathbf{h}^{(l)}=\mathbf{h}_{e}^{(l)}+\mathbf{h}_{a}^{(l)}. h(l)=he(l)+ha(l). 最后 h ( l ) ∈ R n ∗ d \mathbf{h}^{(l)} \in R^{n*d} h(l)Rnd

3.2.3 预测模块 (Prediction Module)

z = C O N C A T E ( [ h ( 0 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ] ) p = ϕ M L P ( z ) , ϕ M L P : R 4 ∗ d ↦ R \begin{aligned}\mathbf{z}&=CONCATE([\mathbf{h}^{(0)},\mathbf{h}^{(1)},\mathbf{h}^{(2)},\mathbf{h}^{(3)}])\\\\p&=\phi_{MLP}(z),\phi_{MLP}:\mathbb{R}^{4*d}\mapsto\mathbb{R}\end{aligned} zp=CONCATE([h(0),h(1),h(2),h(3)])=ϕMLP(z),ϕMLP:R4dR

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

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

相关文章

【Unity】UI九宫格

什么是九宫格&#xff1f; 顾名思义&#xff0c;九宫格就是指UI切成9个格子&#xff0c;9个格子可以任意拉伸。 1、3、7、9不拉伸。 2、8水平拉伸。 4、6垂直拉伸。 5既可以水平也可以垂直拉伸。 怎么切九宫格&#xff1f; 选中图片&#xff0c;改成Sprite模式&#xff0c;点…

Spark面试整理-Spark的主要组件是什么?

Apache Spark由几个关键组件组成,这些组件共同构成了它强大的数据处理和分析能力。以下是Spark的主要组件: Spark Core:Spark Core是整个Spark平台的基础,提供了基本的I/O功能、任务调度、内存管理、错误恢复等功能。它引入了弹性分布式数据集(RDD),这是Spark的一个基本…

Linux 常用命令汇总(七):进程管理 系统权限 用户授权

一、进程管理命令 1.1 service 1.1.1 介绍 service 是一个在大多数 Linux 发行版中用于管理系统服务的命令 1.1.2 使用方法 sudo service 服务名 [start|stop|restart|status|...] 1.1.3 常见使用案例 1.1.3.1 启动服务 sudo service apache2 start 这将启动名为 apac…

CCF编程能力等级认证GESP—C++5级—20240316

CCF编程能力等级认证GESP—C5级—20240316 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)成绩排序B-smooth 数 参考答案单选题判断题编程题1编程题2 单选…

[flask] flask的基本介绍、flask快速搭建项目并运行

笔记 Flask Flask 本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展Flask-Mail&#xff0c;用户认证Flask-Login&#xff0c;数据库Flask-SQLAlchemy&#xff09;&#xff0c;都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、…

婴儿奶瓶哪个品牌最好?五大热门品牌深度测评推荐

最近很多新手爸妈都在后台私信咨询如何选购婴儿奶瓶&#xff0c;以及要怎么选才能够避雷避坑。为了解答大家的问题&#xff0c;我特地为大家对现在的各种主流款奶瓶进行全面测评。 对于婴儿奶瓶&#xff0c;可能有些新手爸妈觉得随便买买就好&#xff0c;但实际上挑选婴儿奶瓶…

day12-SpringBootWeb 登录认证

一、登录功能 Slf4j RestController public class LoginController {Autowiredprivate EmpService empService;PostMapping("/login")public Result login(RequestBody Emp emp){log.info("员工登录: {}", emp);Emp e empService.login(emp);//登录失败, …

css使用伪类选择器来选择特定模式的元素

在CSS中&#xff0c;伪类选择器用于选择处于特定状态或符合特定条件的元素。以下是一些常用的伪类选择器&#xff0c;它们可以用来选择特定模式的元素&#xff1a; :hover&#xff1a;选择鼠标指针浮动在上面的元素。 a:hover { color: red; }:active&#xff1a;选择并激…

高企认定中科技成果转化是什么呢?

其实&#xff0c;这是一个流程&#xff0c;可以用下面的分段进程来表示&#xff1a;企业开展科研立项—科研立项得到科研结果—科研结果用于产品的生产—新产品品质提高带动了销售的增加。 上面的流程&#xff0c;其实是高企审核的核心&#xff0c;不仅仅关系到了量化打分。更…

负阻尼振荡器仿真模拟

负阻振荡器&#xff08;Negative resistance oscillator&#xff09;是利用负阻器件抵消回路中的正阻损耗&#xff0c;产生自激振荡的振荡器。由于负阻器件与回路仅有两端连接&#xff0c;故负阻振荡器又称为“二端振荡器”。 阻尼是指阻碍物体的相对运动、并把运动能量转化为…

NVIDIA 推出地球-2云平台,使用AI超级计算机的模拟技术,预测整个地球的气候变化

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

汇编LOG怎么看

一 汇编中常见的数据类型 C 字符 H 半字 F 全字 D 双字 X 十六进制数 B 二进制数 P 压缩十进制数 Z 非压缩十进制数AREA DS CL4 AREA2 DS 4CL1CL4是一个很常见的定义 类似的还有PL5,XL6 第一个定义保留4 个字节的区域&#xff0c;并将该区域的首地址赋予AREA&#xf…

深入理解 Linux 函数参数

在Linux Shell编程中&#xff0c;函数是一种非常有用的功能&#xff0c;它可以将重复的代码封装起来&#xff0c;提高代码的可重用性和可维护性。在本文中&#xff0c;我们将探讨Linux Shell函数及其参数的相关知识。 函数基础 在Linux Shell中&#xff0c;我们可以使用 func…

new mars3d.layer.GeoJsonLayer({的pupup配置参考

new mars3d.layer.GeoJsonLayer({的pupup配置可选项以及相关效果参考&#xff1a; 说明&#xff1a;popup按属性字段配置&#xff0c;可以是字符串模板或数组 1.popup仅配置{type}{name}等属性的的时候&#xff0c;指显示json文件内数据的type与name&#xff0c;效果如下 相关…

MyBatis核心配置文件:解锁数据之美的密码

MyBatis&#xff0c;这位编程的诗人&#xff0c;通过其独特的核心配置文件&#xff0c;为我们描绘出一幅数据之美的画卷。本篇博客将带你深入探讨MyBatis核心配置文件的奥秘&#xff0c;让你能够更好地理解和运用这个优雅的数据持久化框架。 最近想搞私域&#xff0c;欢迎各位…

【MySQL】8. 基本查询(update/delete/聚合/分组)

表的删改 3. Update 语法&#xff1a; UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]对查询到的结果进行列值更新 案例&#xff1a; 3.1 将孙悟空同学的数学成绩变更为 80 分 -- 更新值为具体值 -- 查看原数据 SELECT…

开发指南-1:编码技巧与规范开始

目录 实例 1.使用对象代替if及switch 2.使用Array.from快速生成数组 3.使用router.beforeEach来处理跳转前逻辑 4.使用v-if来优化页面加载 5.路由跳转尽量使用name而不是path 6.使用key来优化v-for循环 7.使用computed代替watch 8.统一管理缓存变量 9.使用setTimeout…

【深度学习】训练Stable Diffusion环境

仓库&#xff1a; https://github.com/bmaltais/kohya_ss.git 基础镜像&#xff1a; from kevinchina/deeplearning:sdxllighting_trt_nginx_002api docker run --net host --gpus device0 -e APIWORKS1 -it t1:t1 bash构建环境&#xff1a; sudo -i git clone https://git…

springboot291校园疫情防控系统

校园疫情防控系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园疫情防控信息管理难度…

【Python难点答疑】2、为什么要有@classmethod和@staticmethod,有什么区别?

在 Python 中&#xff0c;staticmethod 和 classmethod 都是用来定义类中的特殊方法的装饰器。它们允许我们定义与类相关的方法&#xff0c;而不需要实例化类。虽然它们都允许我们在类中定义方法&#xff0c;但它们的行为和用法略有不同。 1.静态方法&#xff08;staticmethod&…