当前位置: 首页 > article >正文

【Gaussian Model】高斯分布模型

目录

  • 高斯分布模型用于异常检测(Gaussian Model for Anomaly Detection)
  • 1. 高斯分布简介
  • 2. 高斯分布模型用于异常检测
    • (1) 训练阶段:估计数据分布
    • (2) 检测阶段:计算概率判断异常点
  • 3. 示例代码
  • 4. 高斯分布异常检测的优缺点
    • 优点
    • 缺点
  • 5. 适用场景
  • 6. 结论

高斯分布模型用于异常检测(Gaussian Model for Anomaly Detection)

在数据分析和机器学习任务中,异常检测(Anomaly Detection) 是一个重要的应用领域,例如欺诈检测、设备故障预测、网络安全等。高斯分布模型(Gaussian Model)是一种基于统计学的经典无监督学习方法,适用于异常检测任务。本文将介绍高斯分布模型的基本原理、如何用于异常检测,以及其优势和局限性。


1. 高斯分布简介

高斯分布(又称正态分布)是最常见的概率分布之一,具有对称性钟形曲线的特点。对于一维数据 x x x,其概率密度函数(PDF)定义如下:

p ( x ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) p(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2} \right) p(x)=2πσ2 1exp(2σ2(xμ)2)

其中:

  • μ \mu μ 为均值,表示数据的中心位置。

  • σ 2 \sigma^2 σ2 为方差,表示数据的离散程度。

在多维情况下(特征维度为 n n n),数据服从多元正态分布,概率密度函数如下:

p ( x ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x) = \frac{1}{(2\pi)^{n/2} |\Sigma|^{1/2}} \exp\left(-\frac{1}{2} (x - \mu)^T \Sigma^{-1} (x - \mu) \right) p(x)=(2π)n/2Σ1/21exp(21(xμ)TΣ1(xμ))

其中:

  • x ∈ R n x \in \mathbb{R}^n xRn 是一个 n n n 维特征向量。

  • μ ∈ R n \mu \in \mathbb{R}^n μRn 是均值向量。

  • Σ \Sigma Σ n × n n \times n n×n 维协方差矩阵,描述各特征之间的相关性。


2. 高斯分布模型用于异常检测

(1) 训练阶段:估计数据分布

我们假设正常数据服从高斯分布,并通过最大似然估计(MLE, Maximum Likelihood Estimation) 来估计均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2(或协方差矩阵 Σ \Sigma Σ)。

给定一个训练数据集 X = { x 1 , x 2 , … , x m } X = \{x_1, x_2, \dots, x_m\} X={x1,x2,,xm},每个样本具有 n n n 个特征,均值和方差的估计公式如下:

  • 均值(对每个特征计算):

μ j = 1 m ∑ i = 1 m x i , j \mu_j = \frac{1}{m} \sum_{i=1}^{m} x_{i,j} μj=m1i=1mxi,j

  • 方差(对每个特征计算):

σ j 2 = 1 m ∑ i = 1 m ( x i , j − μ j ) 2 \sigma_j^2 = \frac{1}{m} \sum_{i=1}^{m} (x_{i,j} - \mu_j)^2 σj2=m1i=1m(xi,jμj)2

  • 协方差矩阵(用于多元正态分布):

Σ = 1 m ∑ i = 1 m ( x i − μ ) ( x i − μ ) T \Sigma = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu)(x_i - \mu)^T Σ=m1i=1m(xiμ)(xiμ)T


(2) 检测阶段:计算概率判断异常点

对于新样本 x new x_{\text{new}} xnew,计算其在估计出的高斯分布下的概率 p ( x new ) p(x_{\text{new}}) p(xnew),如果概率低于设定的阈值 ϵ \epsilon ϵ,则判断为异常点:

p ( x new ) < ϵ ⇒ x new  是异常点 p(x_{\text{new}}) < \epsilon \Rightarrow x_{\text{new}} \text{ 是异常点} p(xnew)<ϵxnew 是异常点

通常, ϵ \epsilon ϵ 可以通过 验证集(Validation Set)经验设定。


3. 示例代码

我们用 Python 实现一个简单的高斯分布异常检测模型:


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal

# 生成二维正态分布数据(正常样本)
np.random.seed(0)
X_train = np.random.multivariate_normal(mean=[5, 5], cov=[[1, 0.5], [0.5, 1]], size=200)

# 计算均值和协方差
mu = np.mean(X_train, axis=0)
sigma = np.cov(X_train.T)

# 计算新样本的概率
def anomaly_score(x, mu, sigma):
return multivariate_normal(mean=mu, cov=sigma).pdf(x)

# 生成新样本
X_test = np.array([[8, 8], [5, 5], [2, 2]])

# 计算概率并判断是否为异常
threshold = 0.01 # 设定阈值
for x in X_test:
p = anomaly_score(x, mu, sigma)
print(f"Sample {x} -> Probability: {p:.6f} {'(Anomaly)' if p < threshold else '(Normal)'}")

# 绘制数据分布
x, y = np.mgrid[2:8:.1, 2:8:.1]
pos = np.dstack((x, y))
rv = multivariate_normal(mu, sigma)
plt.contourf(x, y, rv.pdf(pos), levels=50, cmap='Blues')
plt.scatter(X_train[:, 0], X_train[:, 1], marker='o', label="Normal Data")
plt.scatter(X_test[:, 0], X_test[:, 1], marker='x', c='red', label="Test Samples")
plt.legend()
plt.title("Gaussian Model for Anomaly Detection")
plt.show()


4. 高斯分布异常检测的优缺点

优点

  • 易于实现:只需计算均值和方差,并使用概率密度函数(PDF)。

  • 适用于无监督任务:不需要标注异常数据。

  • 适用于低维数据:当数据维度较低时,模型可以很好地拟合数据分布。

缺点

  • 高维问题(维度灾难):在高维空间中,数据可能并不符合高斯分布,导致模型性能下降。

  • 无法处理复杂分布:如果数据不是高斯分布,模型可能无法很好地捕捉数据分布特性。

  • 对异常值敏感:如果训练数据中包含异常点,可能会影响均值和方差的估计。


5. 适用场景

  • 工业设备故障检测:设备运行数据通常服从某种分布,偏离该分布可能意味着故障。

  • 信用卡欺诈检测:正常交易数据可以建模成高斯分布,异常交易的概率较低。

  • 网络安全:分析流量数据,检测异常访问或攻击行为。


6. 结论

高斯分布模型是一种经典的无监督异常检测方法,适用于低维数据的异常检测任务。尽管它存在局限性,但由于其简单高效,仍然是许多实际应用中的基础方法之一。在更复杂的场景下,可以结合孤立森林(Isolation Forest)、PCA降维等方法进行改进。

希望这篇文章对你理解高斯分布模型的异常检测有所帮助!如果你有任何问题或想进一步优化模型,欢迎讨论!🚀


http://www.kler.cn/a/577624.html

相关文章:

  • 新手学习爬虫的案例
  • Centos8部署mongodb报错记录
  • Linux 基础---重定向命令(>、>>)、echo
  • 正版Windows10/11系统盘制作详细教程
  • Linux设备驱动开发之摄像头驱动移植(OV5640)
  • 尚硅谷爬虫note14
  • 【后端开发面试题】每日 3 题(九)
  • PDF 分割工具
  • 请谈谈 HTTP 中的重定向,如何处理 301 和 302 重定向?
  • 在Go语言中,判断变量是否为“空”(零值或未初始化状态)的方法总结
  • K8s 1.27.1 实战系列(六)Pod
  • 穿梭车与机器人协同作业:构建高效仓储物流系统的关键
  • 计算机网络:计算机网络的概念
  • 279.完全平方数
  • PHP的Workerman 和 Java 常驻内存的相似性
  • 中国视频生成 AI 开源潮:腾讯阿里掀技术普惠革命,重塑内容创作格局
  • UE5从入门到精通之如何创建自定义插件
  • 分布式锁—5.Redisson的读写锁二
  • 人工智能引领技术革命:ChatGPT与深度学习的突破性进展
  • 【瞎折腾/ragflow】构建docker镜像并部署使用ragflow