网易首页 > 网易号 > 正文 申请入驻

时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现

0
分享至


在异常检测领域,尤其针对工业机械、核反应堆和网络安全等复杂系统,传统方法往往难以有效处理高维度且相互关联的数据流。多元状态估计技术(MSET)序贯概率比检验(SPRT)的组合方法在此类场景中展现出显著优势。

MSET-SPRT是一种结合机器学习状态估计与统计假设检验的混合技术框架,通过其高精度和稳健性,被广泛应用于关键任务系统的监控与分析。该方法能够实时识别系统行为的微小偏差,为预防性维护和异常事件预警提供可靠依据。

MSET-SPRT理论基础

多元状态估计技术(MSET)原理

MSET作为一种非参数非线性回归技术,通过历史观测数据构建系统正常状态模型。其核心工作机制包括:

建立包含历史正常系统状态的记忆矩阵,作为参考基准;利用学习到的历史状态间关系计算加权组合,从而估计当前系统的预期状态;通过对比观测值与估计值,计算系统行为偏差,为异常检测提供基础指标。

序贯概率比检验(SPRT)方法

SPRT是一种基于统计推断的序贯假设检验方法,专用于确定系统行为偏差是否具有统计显著性。其主要功能为:

持续评估残差误差(实际观测值与模型估计值之间的差异),并根据预设的统计模型进行假设检验;当检测到的偏差超过统计置信阈值时,系统能够及时发出预警信号,同时控制虚警率在可接受范围内。

MSET-SPRT框架通过上述两种技术的协同作用,为多元数据异常检测提供了准确且高效的解决方案,特别适用于高维度、高相关性的时间序列数据分析。

Python实现MSET-SPRT异常检测

下面通过一个精简的示例来演示MSET-SPRT方法在Python中的实现过程。

导入必要的库


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

生成模拟数据集

构建一个多元正态分布数据集,用于模拟正常运行状态下的系统行为:


# Simulating normal system behavior (3 correlated sensors)
np.random.seed(42)
mean = [50, 75, 100] # Mean values for three sensors
cov = [[10, 5, 2], [5, 15, 3], [2, 3, 20]] # Covariance matrix
# Generate 500 normal operation samples
normal_data = np.random.multivariate_normal(mean, cov, size=500)

实现MSET算法

采用基于加权最近邻的方法实现MSET算法,用于估计系统的预期行为:


class MSET:
def __init__(self, memory_matrix):
self.memory_matrix = memory_matrix # Store normal system states
def estimate(self, input_vector):
"""
Estimates the expected state based on historical data.
Uses nearest neighbors to compute weighted estimation.
"""
weights = np.exp(-np.linalg.norm(self.memory_matrix - input_vector, axis=1))
weights /= np.sum(weights)
return np.dot(weights, self.memory_matrix)

初始化MSET模型,将正常运行数据作为记忆矩阵:


# Initialize MSET with normal data as memory
mset_model = MSET(memory_matrix=normal_data)

计算残差

计算实际观测值与MSET估计值之间的残差,作为异常检测的基础:


# Simulated test data (normal + some anomalies)
test_data = np.vstack([
np.random.multivariate_normal(mean, cov, size=450), # Normal
np.random.multivariate_normal([70, 50, 130], cov, size=50) # Anomalies
])
# Compute estimated values
estimated_data = np.array([mset_model.estimate(x) for x in test_data])
# Compute residuals
residuals = np.linalg.norm(test_data - estimated_data, axis=1)

应用SPRT进行异常检测

基于似然比检验原理实现SPRT算法,用于判定残差是否表示异常状态:


# Define thresholds for SPRT
alpha = 0.05 # False positive rate
beta = 0.05 # False negative rate
mu_0, sigma_0 = np.mean(residuals[:450]), np.std(residuals[:450]) # Normal behavior
mu_1 = mu_0 + 3 * sigma_0 # Anomalous mean shift
# SPRT decision function
def sprt_test(residual):
""" Sequential Probability Ratio Test for anomaly detection """
likelihood_ratio = stats.norm(mu_1, sigma_0).pdf(residual) / stats.norm(mu_0, sigma_0).pdf(residual)
return likelihood_ratio > (1 - beta) / alpha
# Apply SPRT
anomalies = np.array([sprt_test(res) for res in residuals])
# Plot results
plt.figure(figsize=(12, 5))
plt.plot(residuals, label="Residuals", color="blue")
plt.axhline(mu_1, color="red", linestyle="dashed", label="Anomaly Threshold")
plt.scatter(np.where(anomalies)[0], residuals[anomalies], color="red", label="Detected Anomalies", zorder=2)
plt.xlabel("Time")
plt.ylabel("Residual Magnitude")
plt.legend()
plt.title("MSET-SPRT Anomaly Detection")
plt.show()

结果分析与解释

图中数据可视化结果展示了MSET-SPRT方法的异常检测效果:

蓝色曲线表示系统状态残差时间序列,反映了实际观测值与估计值之间的偏差大小;红色虚线标示出异常检测阈值,该阈值基于正常运行数据的统计特性计算得出;红色标记点则代表被SPRT算法判定为异常的时间点,这些点的残差值显著高于正常波动范围。

分析结果表明,MSET-SPRT方法能够有效区分正常系统波动与异常行为,提供了一种可靠的多元时间序列异常检测方案。该方法特别适用于需要高精度异常检测的工业监控、设备健康管理和网络安全等领域。

https://avoid.overfit.cn/post/dc95da86cabf4ebb88e711bfa2196abc

作者:Abish Pius

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
原来她们是聂卫平妻子,第一任棋手第二任王刚妹妹 第三任最特别

原来她们是聂卫平妻子,第一任棋手第二任王刚妹妹 第三任最特别

揽星河的笔记
2026-01-15 15:16:44
比黄岩岛更狠!驻守338天挤走对手,这块"长出来"的陆地到底多重要

比黄岩岛更狠!驻守338天挤走对手,这块"长出来"的陆地到底多重要

科普100克克
2025-12-08 14:21:29
财政部:同意中国福利彩票发行管理中心变更中国福利彩票双色球游戏规则

财政部:同意中国福利彩票发行管理中心变更中国福利彩票双色球游戏规则

界面新闻
2026-01-16 16:56:05
林彪主持会议时,轮到陈赓发言,他却笑着说道:我摸过林彪的脑壳

林彪主持会议时,轮到陈赓发言,他却笑着说道:我摸过林彪的脑壳

文史明鉴
2026-01-17 23:55:16
赢球就是硬道理!强调态度+执行力,安东尼奥把中国足球带回正轨

赢球就是硬道理!强调态度+执行力,安东尼奥把中国足球带回正轨

中国足球的那些事儿
2026-01-17 23:56:49
鲁迅去世后,许广平中断给朱安的钱,朱安被迫变卖遗物留著名怨言

鲁迅去世后,许广平中断给朱安的钱,朱安被迫变卖遗物留著名怨言

唠叨说历史
2025-12-30 11:09:53
第一个力挺丹麦的战友出现!只要美国敢出兵,立马使出2大绝招

第一个力挺丹麦的战友出现!只要美国敢出兵,立马使出2大绝招

策略述
2026-01-16 19:16:02
分手8年,胖到认不出的coco自曝私密事,89岁谢贤还要为风流买单

分手8年,胖到认不出的coco自曝私密事,89岁谢贤还要为风流买单

好贤观史记
2026-01-06 15:20:16
陕西亮亮高血压喝酒离世!年仅41岁,生前举杯照片曝光

陕西亮亮高血压喝酒离世!年仅41岁,生前举杯照片曝光

艳姐的搞笑视频
2026-01-17 11:08:44
原来他已经去世8年,45岁就英年早逝,王宝强张译在他葬礼上痛哭

原来他已经去世8年,45岁就英年早逝,王宝强张译在他葬礼上痛哭

华人星光
2026-01-17 11:25:19
哈佛发现:高血脂不用治,治好都是误诊?告诉您5个血脂真相!

哈佛发现:高血脂不用治,治好都是误诊?告诉您5个血脂真相!

岐黄传人孙大夫
2026-01-08 10:06:20
爆:中国电信重大技术性成果突破!

爆:中国电信重大技术性成果突破!

通信头条
2026-01-17 11:20:59
五常已做选择!高市送中国 4 个字,日网民:16 年前的噩梦重现

五常已做选择!高市送中国 4 个字,日网民:16 年前的噩梦重现

议纪史
2026-01-16 20:40:03
你闻过最难闻的味道是什么?网友:分手多年,依然忘不了她的味道

你闻过最难闻的味道是什么?网友:分手多年,依然忘不了她的味道

另子维爱读史
2026-01-03 21:33:36
美国人急眼了:我们垄断全球半个世纪,如今却被宁波一家小厂干翻

美国人急眼了:我们垄断全球半个世纪,如今却被宁波一家小厂干翻

三农老历
2026-01-16 12:48:21
从“大脚尼奥”到叹息之墙,U23四强奇迹的密码是李昊还是体系?

从“大脚尼奥”到叹息之墙,U23四强奇迹的密码是李昊还是体系?

曹老师评球
2026-01-17 22:50:05
1962年,侯波从中南海离职,临走前毛主席询问:你丈夫怎么样了?

1962年,侯波从中南海离职,临走前毛主席询问:你丈夫怎么样了?

文史季季红
2026-01-17 17:05:02
杭州师范大学名单造假,浙江公布调查结果

杭州师范大学名单造假,浙江公布调查结果

上观新闻
2026-01-18 06:40:12
我那兄弟娶了个洋媳妇,天天哀嚎:搂着俄罗斯老婆睡,堪比抱刺猬

我那兄弟娶了个洋媳妇,天天哀嚎:搂着俄罗斯老婆睡,堪比抱刺猬

前沿天地
2025-12-29 11:22:33
历经25年谈判,“唐罗主义”催化欧盟与南共市将签署自贸协定

历经25年谈判,“唐罗主义”催化欧盟与南共市将签署自贸协定

澎湃新闻
2026-01-17 07:30:26
2026-01-18 10:20:49
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1893文章数 1443关注度
往期回顾 全部

科技要闻

两枚火箭发射失利,具体原因正排查

头条要闻

牛弹琴:美欧直接开干 全世界看得目瞪口呆

头条要闻

牛弹琴:美欧直接开干 全世界看得目瞪口呆

体育要闻

三巨头走了俩,联盟笑柄却起飞了

娱乐要闻

马年春晚首次联排场外细节!

财经要闻

保不准,人民币会闪击6.8!

汽车要闻

林肯贾鸣镝:稳中求进,将精细化运营进行到底

态度原创

教育
健康
亲子
本地
公开课

教育要闻

努力打造一所有气质的学校

血常规3项异常,是身体警报!

亲子要闻

我要让快乐永远把你包围!

本地新闻

云游内蒙|黄沙与碧波撞色,乌海天生会“混搭”

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版