机器学习实战20-利用AnoSVGD算法探索多指标的异常检测的应用

news2025/1/16 11:04:47

大家好,我是微学AI,今天给大家介绍一下机器学习实战20-利用AnoSVGD算法探索多指标的异常检测的应用。SVGD(Stein Variational Gradient Descent)是一种通用的变分推断算法,它是优化中梯度下降的自然对应物。SVGD通过应用一种功能性梯度下降来迭代地传输一组粒子,以最小化KL散度,从而与目标分布相匹配。

文章目录

  • 一、AnoSVGD算法介绍
    • AnoSVGD算法的数学原理
    • AnoSVGD算法在处理高维数据时的计算复杂度降低策略
  • 二、AnoSVGD算法的优势与不足
    • AnoSVGD算法的优势
    • AnoSVGD算法的不足
    • 与其他异常检测方法的比较
  • 二、AnoSVGD算法的应用
    • AnoSVGD应用步骤
    • AnoSVGD算法在异常检测中阈值的确定
    • AnoSVGD算法与其他异常检测方法相比
    • AnoSVGD算法模型搭建

一、AnoSVGD算法介绍

AnoSVGD是一种用于异常检测的非参数贝叶斯方法。它通过映射变换,使用已知数据的概率密度函数(PDF),多次迭代估计未知数据的概率密度函数(PDF)。在每次迭代中,基于前一次的结果,加上一个小的步长和下降方向,通过梯度下降找到最快的下降方向,从而进行迭代。这样,模型能够快速地找到未知数据的分布,并在达到目标后停止迭代。

AnoSVGD算法的数学原理

AnoSVGD(Anomaly Detection using Stein Variational Gradient Descent)是一种基于Stein变分梯度下降的非参数贝叶斯方法,用于异常检测。这种方法通过Stein变分梯度下降来近似数据生成分布,进而识别出那些与正常数据分布不一致的异常点。
AnoSVGD的基本数学原理和公式过程如下:

  1. Stein变分梯度下降(SVGD):
    SVGD是一种用于生成似然分布样本的优化方法。它通过迭代更新一组粒子,使得这些粒子逐渐逼近目标分布。对于给定的目标分布 p ( x ) p(x) p(x),SVGD更新粒子的方式是:
    x t + 1 ← x t + ϵ ϕ ( x t ) x_{t+1} \leftarrow x_t + \epsilon \phi(x_t) xt+1xt+ϵϕ(xt)
    其中, ϕ ( x t ) \phi(x_t) ϕ(xt)是Stein算子, ϵ \epsilon ϵ是学习率。
  2. Stein算子:
    Stein算子用于度量两个分布之间的差异。对于两个分布 p ( x ) p(x) p(x) q ( x ) q(x) q(x),Stein算子定义为:
    f ( x ) = δ q ( x ) δ x + q ( x ) ∇ x log ⁡ p ( x ) f(x) = \frac{\delta q(x)}{\delta x} + q(x) \nabla_x \log p(x) f(x)=δxδq(x)+q(x)xlogp(x)
    在AnoSVGD中, q ( x ) q(x) q(x)通常是一个简单的先验分布,如高斯分布,而 p ( x ) p(x) p(x)是数据生成分布。
  3. 异常检测:
    在异常检测的上下文中,AnoSVGD首先使用SVGD来近似数据生成分布 p ( x ) p(x) p(x)。然后,它计算每个数据点的Stein差异,将那些具有高Stein差异的点标记为异常。
  4. Stein差异:
    对于一个数据点 x x x,其Stein差异可以通过计算Stein算子 f ( x ) f(x) f(x)的范数来估计:
    S ( x ) = ∥ f ( x ) ∥ 2 S(x) = \lVert f(x) \rVert^2 S(x)=f(x)2
    大的Stein差异意味着数据点 x x x与近似的数据生成分布差异较大,因此可能是异常点。

AnoSVGD通过Stein变分梯度下降来近似数据生成分布,并使用Stein差异来识别异常点。这种方法特别适用于高维数据和复杂的数据分布。

在这里插入图片描述

AnoSVGD算法在处理高维数据时的计算复杂度降低策略

AnoSVGD它通过适应性地调整步长和方向来优化目标函数。在处理高维数据时,AnoSVGD面临的主要挑战是计算成本的显著增加,因为高维数据的梯度计算和Hessian矩阵的逆计算都非常耗时。为了解决这一问题,AnoSVGD采用了以下几种策略来减少计算复杂度:

  1. 子采样策略:AnoSVGD通过从整个数据集中随机选择一小部分样本(迷你批次)来估计梯度,这样可以大大减少每次迭代所需的计算量。

  2. 自适应学习率:AnoSVGD采用自适应学习率策略,根据当前的优化状态动态调整步长,避免在高维空间中过度搜索,从而减少不必要的计算。

  3. 近似方法:在计算梯度和Hessian矩阵时,AnoSVGD可能会采用近似方法,如随机近似高斯积分,以进一步减少计算负担。

  4. 稀疏化技术:对于具有大量零元素或接近零元素的高维数据,AnoSVGD可以利用稀疏矩阵的特性来减少计算和存储开销。

  5. 分布式计算:在处理大规模高维数据集时,AnoSVGD可以利用分布式计算资源,将数据和计算任务分配到多个处理器或服务器上进行,从而加速优化过程。

AnoSVGD能够有效地处理高维数据,同时保持较高的计算效率,这对于现代机器学习和深度学习中的大规模数据分析尤为重要。

二、AnoSVGD算法的优势与不足

AnoSVGD算法的优势

AnoSVGD算法是一种基于变分推断的异常检测方法,它通过映射变换,用已知数据的概率密度函数(PDF),多次迭代估计未知数据的概率密度函数(PDF)。这种方法的优势在于能够快速地找到未知数据的分布,并在达到目标后停止迭代,从而实现高效的异常检测。

AnoSVGD算法的不足

尽管AnoSVGD算法在某些方面表现出色,但它也可能存在一些不足。例如,它可能对数据的分布假设较为严格,对于高维数据或噪声数据可能不够鲁棒。此外,AnoSVGD算法的性能可能受到数据集特性的影响,例如数据的多样性和复杂性。

与其他异常检测方法的比较

与其他异常检测方法相比,AnoSVGD算法在处理复杂数据集时可能具有一定的优势,因为它能够通过迭代估计来捕捉数据的概率密度函数。然而,对于简单数据集或噪声较少的数据集,其他方法如基于统计的方法或基于距离的方法可能更为适用。在实际应用中,选择哪种异常检测方法取决于具体的数据特性和应用场景。

二、AnoSVGD算法的应用

AnoSVGD应用步骤

  1. 数据准备:首先,收集正常数据集,并对其进行预处理,包括数据清洗、规范化和特征提取。

  2. 模型初始化:选择一个合适的概率模型作为异常检测模型的起点,例如高斯混合模型(Gaussian Mixture Model, GMM)。

  3. 变分推断:使用变分推断来近似后验概率分布,这通常涉及到最大化一个下界(ELBO)。

  4. 梯度下降:利用梯度下降来优化模型参数,使ELBO最大化。在这个过程中,可以使用蒙特卡洛方法来近似梯度。

  5. 异常检测:使用优化后的模型来计算新数据的异常得分,得分高于某个阈值的数据被标记为异常。

  6. 模型更新:根据新数据的反馈,更新模型参数,以更好地适应正常数据的分布。

  7. 迭代优化:重复步骤3至6,直到模型收敛或达到预设的迭代次数。

  8. 结果评估:使用测试集评估模型的异常检测性能,包括准确率、召回率和F1分数等指标。

AnoSVGD算法在异常检测中阈值的确定

在异常检测中,确定阈值是一个关键步骤,因为它决定了什么水平的数据被认为是异常的。对于AnoSVGD(Anomaly Detection via Stochastic Variational Gradient Descent)算法,阈值的确定通常涉及到以下几个方面:

  1. 模型训练和验证:在训练阶段,AnoSVGD算法会学习数据的概率密度函数。在验证阶段,模型会对验证集进行预测,并根据预测结果来确定阈值。

  2. 异常分数的计算:AnoSVGD算法会计算每个数据点的异常分数,这个分数反映了数据点相对于正常数据分布的异常程度。

  3. 阈值的选择:阈值的确定可以基于多种策略,例如:

    • 固定阈值:选择一个固定的阈值,所有高于这个阈值的数据点都被认为是异常的。
    • 动态阈值:根据数据的历史行为或当前行为动态调整的阈值,这种方法相较于固定阈值更为灵活,能够更好地适应数据的动态变化。
    • 统计方法:例如,可以计算数据的平均值和标准差,然后设定一个阈值范围,将超出这个范围的点视为异常。或者,可以使用中位数和IQR(四分位距)来设定阈值范围。
  4. 实验和调优:在实际应用中,可能需要通过实验来调整阈值,以达到最佳的检测效果。这可能涉及到尝试不同的阈值设置,并评估其对检测性能的影响。

AnoSVGD算法在异常检测中确定阈值的方法可能包括模型训练和验证、异常分数的计算、阈值的选择以及实验和调优等步骤。具体的阈值确定方法可能会根据数据的特性和业务需求有所不同。

AnoSVGD算法与其他异常检测方法相比

与其他异常检测方法相比,AnoSVGD算法在处理复杂数据分布和实时检测方面具有优势。例如,与基于统计的方法相比,AnoSVGD不受数据分布假设的限制,能够更好地捕捉数据的内在结构。与基于机器学习的方法相比,AnoSVGD作为一种非参数方法,不需要大量标注数据,适用于数据标签稀缺的场景。然而,与基于深度学习的方法相比,AnoSVGD可能在处理高度非线性数据时略显不足,因为深度学习模型能够学习数据的高级特征。
AnoSVGD算法在异常检测领域具有独特的优势,但也面临一些挑战。在选择使用AnoSVGD算法时,需要根据具体的应用场景和数据特性进行权衡。

AnoSVGD算法模型搭建

import numpy as np
from scipy.spatial.distance import pdist, squareform

class SVGD():

    def __init__(self):
        pass
    
    def svgd_kernel(self, theta, h = -1):
        sq_dist = pdist(theta)
        pairwise_dists = squareform(sq_dist)**2
        if h < 0: # if h < 0, using median trick
            h = np.median(pairwise_dists)  
            h = np.sqrt(0.5 * h / np.log(theta.shape[0]+1))

        # compute the rbf kernel
        Kxy = np.exp( -pairwise_dists / h**2 / 2)

        dxkxy = -np.matmul(Kxy, theta)
        sumkxy = np.sum(Kxy, axis=1)
        for i in range(theta.shape[1]):
            dxkxy[:, i] = dxkxy[:,i] + np.multiply(theta[:,i],sumkxy)
        dxkxy = dxkxy / (h**2)
        return (Kxy, dxkxy)
    
 
    def update(self, x0, lnprob, n_iter = 1000, stepsize = 1e-3, bandwidth = -1, alpha = 0.9, debug = False):
        # Check input
        if x0 is None or lnprob is None:
            raise ValueError('x0 or lnprob cannot be None!')
        
        theta = np.copy(x0) 
        
        # adagrad with momentum
        fudge_factor = 1e-6
        historical_grad = 0
        for iter in range(n_iter):
            if debug and (iter+1) % 1000 == 0:
                print('iter ' + str(iter+1) )
            
            lnpgrad = lnprob(theta)
            # calculating the kernel matrix
            kxy, dxkxy = self.svgd_kernel(theta, h = -1)  
            grad_theta = (np.matmul(kxy, lnpgrad) + dxkxy) / x0.shape[0]  
            
            # adagrad 
            if iter == 0:
                historical_grad = historical_grad + grad_theta ** 2
            else:
                historical_grad = alpha * historical_grad + (1 - alpha) * (grad_theta ** 2)
            adj_grad = np.divide(grad_theta, fudge_factor+np.sqrt(historical_grad))
            theta = theta + stepsize * adj_grad 
            
        return theta

AnoSVGD算法在工业领域的应用案例中,一个值得关注的例子是蚂蚁集团在异常检测和归因诊断方面的实践。在蚂蚁集团,AnoSVGD算法被用于构建一个能够实时处理大量指标数据的系统,该系统支持全生命周期的监控,并能够毫秒级地处理,满足业务性能要求。AnoSVGD算法通过映射变换,使用已知数据的概率密度函数(PDF),多次迭代估计未知数据的概率密度函数(PDF),从而有效地表征未知数据的分布,并在达到目标后停止迭代。

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

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

相关文章

用C#的MediaDevices程序集打开MTP设备(用usb线连接的手机)的文件夹

一、任务描述 1、可以访问MTP设备的桌面程序。 MTP设备&#xff1a;支持媒体传输协议(MTP)的设备&#xff0c;MTP简单来说就是一种PC与其他设备相连的一种协议&#xff0c;智能手机、平板电脑、数码相机等可以通过 USB 连接到电脑&#xff0c;并通过 MTP 协议传输媒体文件。点…

【开发环境】MacBook M2安装git并拉取gitlab项目,解决gitlab出现Access Token使用无效的方法

文章目录 安装Homebrew安装git打开IDEA配置git打开IDEA拉取项目 安装Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"在iTerm等命令行工具打开后&#xff0c;输入上面的命令 之后根据中文提示完成Homebrew的下载…

奇葩公司又发微博了,网友表示“乐”

多益网络 近日&#xff0c;多益网络官方微博发帖&#xff0c;公然表示对法院仲裁结果不服&#xff0c;认为劳动法有极多问题。 大家不要看微博内容似乎振振有词&#xff0c;极有可能只是多益网络单方面的选择性表达&#xff0c;毕竟多益网络的臭名早就家喻户晓。 况且对前员工直…

mybatis、mybatis-plus插件开发,实现数据脱敏功能

首先说一下mybatis中四大组件的作用&#xff0c;下面开发的插件拦截器会使用 四大组件Executor、StatementHandler、ParameterHandler、ResultSetHandler Executor&#xff1a; Executor 是 MyBatis 中的执行器&#xff0c;负责 SQL 语句的执行工作。它通过调度 StatementHan…

蓝桥杯算法双周赛

四、赛后真题解析 比赛赛后将提供免费直播讲解&#xff0c;主讲人&#xff1a;待定。时间&#xff1a;07 月 13 日&#xff08;比赛当日&#xff09;晚 21 时。观看直播地址&#xff1a;第3场蓝桥算法季度赛赛后题解直播 - 蓝桥云课 - 哔哩哔哩直播&#xff0c;二次元弹幕直播…

为什么电量传感器在储能BMS应用中如此重要?

在储能系统中电池的充放电状态和使用寿命是保障系统健康稳定持久运行的关键因素&#xff0c;因此建立稳定可靠准确的电量检测方案至关重要。电流传感器在估算和延长电池使用寿命方面发挥着至关重要的作用&#xff0c;是储能电池检测系统中重要的一环。 关键词&#xff1a;电量…

vue选择上下周,拖拽列表,随机背景色

安装拖拽插件 npm install vuedraggable <template><!--排产计划--><div class"app-container"><div class"mainbox"><div class"table-container table-fullscreen"><div class"title-name">…

向openHarmony设备添加gdb调试工具

1. 下载gdb源码 国内从官网下载源码比较慢&#xff0c;可以从清华的镜像网站&#xff08;清华大学开源软件镜像站 | Tsinghua Open Source Mirror&#xff09;上下载。下载地址&#xff1a; Index of /gnu/gdb/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 选择…

喜讯|华院计算认知智能引擎算法平台荣登BPAA大赛创新组TOP50

6月25日&#xff0c;备受瞩目的BPAA第四届全球应用算法模型典范大赛&#xff08;以下简称“BPAA大赛”&#xff09;正式揭晓了《第四届全球应用算法模型典范大赛创业组TOP50榜单》和《第四届全球应用算法模型典范大赛创新组TOP50榜单》。其中&#xff0c;华院计算技术&#xff…

Python课程设计:python制作俄罗斯方块小游戏

基于python的俄罗斯方块小游戏 目录 基于python的俄罗斯方块小游戏 1.概述 1.1 摘要 1.2 开发背景 1.3 开发环境 1.4 实现功能 2.代码描述 2.1 模块导入 2.2 初始化变量 2.3 播放音乐 2.4 创建方块类 2.5 绘制游戏地图 2.6 游戏初始化 2.7 绘制有边框矩形 2.8 …

go使用grpc编辑器 windows

先看最后效果&#xff1a; 当我执行 protoc --go_out. proto.proto 会生成proto.pb.go文件&#xff0c;主要存储的是封装好的结构体 执行 protoc --go-grpc_out. proto.proto 会生成对应的方法 那么现在提供解决方案&#xff1a; https://github.com/protocolbuffers…

kafka的架构

一、架构图 Broker&#xff1a;一台 kafka 服务器就是一个 broker。一个kakfa集群由多个 broker 组成。一个 broker 可以容纳多个 topic。 Producer&#xff1a;消息生产者&#xff0c;就是向 kafka broker 发消息的客户端 Consumer&#xff1a;消息消费者&#xff0c;向 kafk…

软考中级系统集成项目管理工程师备考笔记

目录 一&#xff0c;通用内容 &#xff08;一&#xff09;信息与信息化 1.1&#xff0c;信息 信息基本概念 信息的传输模型 信息的质量属性 1.2&#xff0c;信息系统 信息系统的基本概念 信息系统定义 信息系统集成 1.3&#xff0c;信息化 信息化层次 信息化的核心…

Prometheus在金融行业信息系统运维管理中的应用:实践与案例分析

Prometheus在金融行业信息系统运维管理中的应用&#xff1a;实践与案例分析 Prometheus是一款开源的监控系统和时序数据库&#xff0c;被广泛应用于各种行业的运维管理中&#xff0c;特别是在金融行业。它具有强大的数据采集和分析能力&#xff0c;能够实时监控系统的性能和状…

华为eNSP模拟器安装详细步骤

安装准备 安装eNSP需要先安装三个依赖软件才能运行&#xff0c;分别是VirtualBox、WinPcap、Wireshark 下载地址如下 eNSP&#xff1a;http://cloud.rsecc.cn/softlink/eNSP%20V100R003C00SPC100%20Setup.exe VirtualBox&#xff1a;http://cloud.rsecc.cn/softlink/Virtua…

Steam页面打不开?steam显示当前游戏不可用是怎么回事

Steam是全球最大的游戏综合发行平台&#xff0c;每年为无数玩家呈现了多款精彩游戏&#xff0c;不过由于网络问题或其他异常因素影响&#xff0c;有很多玩家会在访问steam或steam的游戏商品页时&#xff0c;遇到Steam提示当前游戏在您平台不可用、打不开游戏页面的情况&#xf…

自动化测试报告pytest-html样式美化

最近我将 pytest-html 样式优化了 一版 先看优化前&#xff1a; 优化后&#xff1a; 优化内容包括&#xff1a; 删除部分多余字段新增echart图表部分字体大小、行间距、颜色做了美化调整运行环境信息移至报告最后部分字段做了汉化处理&#xff08;没全部翻译是因为&#xf…

七天速通javaSE:第七天 面向对象:封装继承与多态

文章目录 前言一、封装1. 属性私有2. get&#xff0c;set3. 修饰符的可访问性4. 特点总结 二、继承1. 子承父业&#xff1a;extends2. 区分父子&#xff1a;super2.1 属性2.2 方法重写 三、多态&#xff08;不同类继承同一个类&#xff09; 前言 一、封装 概念&#xff1a;封装…

等保测评应该选择什么样的SSL证书

选择适合等保测评的SSL证书&#xff0c;需考虑证书的加密强度、认证机制以及是否满足国家相关的密码技术要求 1、证书类型&#xff1a;应选择符合国家或行业标准的SSL证书&#xff0c;这些证书通常采用RSA、DSA或ECC等国际认可的加密算法。同时&#xff0c;考虑到国内特定的合规…

IP地址修改方法攻略:类型、步骤与注意事项

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识符&#xff0c;其重要性不言而喻。然而&#xff0c;在某些特定场景下&#xff0c;如保护个人隐私、绕过网络限制或实现特定网络访问需求&#xff0c;修改IP地址就显得尤为关键。本文将详细介绍IP地址修改方法有哪几种类型…