日志异常检测准确率低?一文掌握日志指标序列分类

news2025/8/7 11:10:26

背景

目前,日志异常检测算法采用基于时间序列的方法检测异常,具体为:日志结构化->日志模式识别->时间序列转换->异常检测。异常检测算法根据日志指标时序数据的周期性检测出历史新增、时段新增、时段突增、时段突降等多种异常。

然而,在实际中,日志指标时序数据并不都具有周期性,或具有其他分布特征,因此仅根据周期性进行异常检测会导致误报率高、准确率低等问题。因此如果在日志异常检测之前,首先对日志指标时序数据进行分类,不同类型数据采用不同方法检测异常,可以有效提高准确率,并降低误报率。

日志指标序列的类型

日志指标序列分为时序数据与日志指标数据两大类:

  • 时序数据: 包含平稳型、周期型、趋势型、阶跃型。

在这里插入图片描述

  • 日志指标数据: 包含周期型、非周期型。

在这里插入图片描述

时间序列分类算法

时间序列分类是一项在多个领域均有应用的通用任务,目标是利用标记好的训练数据,确定一个时间序列属于预先定义的哪一个类别。 时间序列分类不同于常规分类问题,因为时序数据是具有顺序属性的序列。

时间序列分为传统时间序列分类算法与基于深度学习的时间序列分类算法。传统方法又根据算法采用的用于分类的特征类型不同,分为全局特征、局部特征、基于模型以及组合方法4大类。基于深度学习的时间序列算法分为生成式模型与判别式模型两大类。本文主要对传统时间序列分类算法进行介绍。

在这里插入图片描述

传统时间序列分类算法

基于全局特征的分类算法

全局特征分类是将完整时间序列作为特征,计算时间序列间的相似性来进行分类。分类方法有通过计算不同序列之间距离的远近来表达时间序列的相似性以及不同距离度量方法 + 1-NN(1-近邻)。主要研究序列相似性的度量方法。

  1. 时间域距离

问题场景描述:

如下图所示,问题场景是一个语音识别任务。该任务用数字表示音调高低,例如某个单词发音的音调为1-3-2-4。两个人说同一单词时,因为音节的发音拖长,会形成不同的发音序列

前半部分拖长,发音:1-1-3-3-2-4

后半部分拖长,发音:1-3-2-2-4-4

在采用传统欧式距离,即点对点的方式计算发音序列距离时,距离之和如下: 欧式距离 = |A(1)-B(1)| + |A(2)-B(2)| + |A(3)-B(3)| + |A(4)-B(4)| + |A(5)-B(5)| + |A(6)-B(6)| =6_x0001_

在这里插入图片描述

算法原理:

如果我们允许序列的点与另一序列的多个连续的点相对应(即,将这个点所代表的音调的发音时间延长),然后再计算对应点之间的距离之和,这就是dtw算法。dtw算法允许序列某个时刻的点与另一序列多个连续时刻的点相对应,称为时间规整(Time Warping)。如下图所示,语音识别任务的dtw距离如下:

dtw距离= |1-1| + |1-1| + |3-3| + |3-3| + |2-2| + |2-2| + |4-4| + |4-4| = 0

dtw计算出的距离为0,由此代表两个单词发音一致,与实际情况相符。

在这里插入图片描述

算法实现:

dtw算法实现包括计算两个序列各点之间距离构成矩阵以及寻找一条从矩阵左上角到右下角的路径,使得路径上的元素和最小两个主要步骤。距离矩阵如下图所示,矩阵中每个元素的值为两个序列对应点之间的距离。DTW算法将计算两个序列之间的距离,转化为寻找一条从距离矩阵。左上角到右下角的路径,使得路径上的元素和最小。实现要点如下:

  • 转化为动态规划的问题(DP);

  • 由于寻找所有路径太耗时,需要添加路径数量限制条件(可以等效为寻找矩阵横纵坐标的差的允许范围,即warping window)。

在这里插入图片描述

  1. 差分距离法

差分距离法是计算原始时间序列的一阶微分,然后度量两个时间序列的微分序列的距离,即微分距离。差分法将微分距离作为原始序列距离的补充,是最终距离计算函数的重要组成部分。

对于一个时间序列t=(t1, t2, …,tm),其一阶微分计算公式如(2-1)所示,二阶微分计算公式如(2-2)所示,更高阶的微分计算方式依次类推。 差分距离法将位于时间域的原时间序列和位于差分域的一阶差分序列相结合,提升分类效果。研究方向主要是如何将原序列和差分序列合理结合。

在这里插入图片描述

基于局部特征的分类算法

将单条时间序列中的一部分子序列作为特征,用于时间序列分类。主要有以下特点:

  • 关键在于寻找能够区分不同类的局部特征;

  • 由于子序列更短,因此构建的分类器速度更快;

  • 但由于需要寻找局部特征,需要一定的训练时间。

在这里插入图片描述

  1. 基于间隔(interval)的分类算法

基于间隔(interval)的分类算法分类方法是将时间序列划分为几个间隔,从每个间隔中提取特征。过程中需考虑以下关键问题:

  • 需要找到最具有区分度特征的区间;

  • 区间划分方法很多,如果处理大量的候选区间;

  • 如何在每个区间上合理提取特征。

关键问题解决方法如下(TSF-Time Series Forest):

  • 采用随机森林的方法解决序列区间数量大的问题,采用统计值作为特征;

  • 长度为m的序列,提取sqrt(m)个区间,每个区间上提取均值、标准差和斜率三个特征,共3*sqrt(m)个特征用于训练;

  • 分类结果由集成的所有树的多数投票决定;

在这里插入图片描述

  1. 基于shapelets的分类算法

shapelet分类算法通过在序列中查找最具辨别性的子序列用于分类,其中shapelet指一个与位置无关的最佳匹配子序列。该类算法适用于可以通过序列中的一种模式定义一个类,但是与模式的位置无关的分类问题。主要有以下两个研究方向:

  • shapelet寻找:枚举所有可能的shapelet,挑选最好的;

  • shapelet用法:将shapelet用于决策树的结点分裂准则。

在这里插入图片描述
在这里插入图片描述

shapelet分类算法通过在序列中查找最具辨别性的子序列用于分类,其中shapelet指一个与位置无关。
在这里插入图片描述

  1. 基于词典的分类算法

由于shapelet分类算法需要花费大量时间搜索子序列,因此更适用于短序列。对于长序列,更适用于在高级结构上衡量相似度。 此外,shapelet只使用一个最佳匹配进行分类,无法解决区别在模式重复数量上的分类问题。因此,对于长序列中一种模式反复出现的时间序列,更适用于一种叫做dict词典类的分类算法。

基于词典的分类算法原理是以序列中的子序列的重复频率作为特征进行分类。首先对序列进行降维和符号化表示,形成单词序列,然后根据单词序列中的单词分布情况进行分类。特点是通过给每个序列传入一个长度为w的滑动窗构建单词,每一个窗产生l个近似值,将每个值离散化,对应到一个字母表中的符号。

BOP - Bag of Patterns 采用了类似“bag of words”的思路,将时间序列表示成一系列模式的向量。存在问题如下:

  • 需要构建“模式词汇表 -> SAX

  • 时间序列没有明显分隔符进行分割。- 滑动窗口

操作步骤如下:

  • BOP算法采用滑动窗口在原始序列上取子序列;

  • 再利用SAX方法将子序列转化为单词,并记录每个单词数量,所有的单词汇总为词汇表;

  • 最后构建“单词-句子”向量矩阵,行是词汇表,列是每个时间序列,点的值是词汇在序列中的出现频率。

_x0008_SAX(Symbolic Aggregate Approximation) 对序列进行正则化,在横轴方向,将时间序列等长划分为w段,计算每一段的均值,并将w个系数聚集在一起,这个过程称为分段聚集近似(Piecewise Aggregate Approximation,PAA)。

研究表明正则化的时间序列的子序列服从高斯分布,在纵轴方向,将均值从高斯分布等概率划分为三块区域,位于每个区域的系数分别用a,b,c表示,此时序列已转化为字符串。
在这里插入图片描述

开源项目推荐

云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。

如果喜欢我们的项目,请不要忘记点击下方代码仓库地址,在 GitHub / Gitee 仓库上点个 Star,我们需要您的鼓励与支持。此外,即刻参与 FlyFish 项目贡献成为 FlyFish Contributor 的同时更有万元现金等你来拿。

GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee 地址: https://gitee.com/CloudWise/fly-fish

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

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

相关文章

那么多优秀的自动化测试工具,而你只知道Selenium?

如今,作为一名软件测试工程师,几乎所有人都需要具备自动化测试相关的知识,并且懂得如何去利用工具,来为企业减少时间成本和错误成本。这是为什么呢? 在以前,测试人员一般都只需要扮演终端用户,…

【云原生 | Kubernetes 系列】--Gitops持续交付 ArgoCD 部署与概念

1. Pull Pipeline 使用Pull Pipeline可以不在集群以外的地方保存凭据,避免凭据泄露的风险 工作模式: 两个Git仓库. 程序代码 程序员维护 分支策略 Hotfix Feature Develop Release Master 部署配置 基于OAM管理 Updater CI流水线交付了新的Image Operator Spec 期望状态 …

UE5笔记【一】安装、第一个关卡:光线、原点、平面;光线、天空、云朵;内容抽屉;运动控制;

第一步:安装UE5 下载Epic Games客户端。 下载EpicGames客户端,完成注册账户。 然后选择【库】、选择【引擎版本】后面的加号【】、然后点击【下拉箭头】选择你要安装的版本。点击【安装】。 特别提醒:请找一块特别大的硬盘存储空间&#xf…

prometheus+alertmanager 企业微信告警

一、应用安装启动 1、软件准备 alertmanager-0.24.0.linux-amd64.tar.gz blackbox_exporter-0.22.0.linux-amd64.tar.gz node_exporter-1.4.0.linux-amd64.tar.gz prometheus-2.40.0-rc.0.linux-amd64.tar.gz 2、配置文件 cat /data/prometheus/prometheus.yml #根据自己情况…

liunx集成jmeter进行压测实践

首先liunx环境需要部署jdk 1,获取jmeter免安装包:点击我获取免安装包 2,获取jmeter-manger工具,用于生成报告,日志等 点击我获取工具 3,在服务器上新建一个文件夹存放jmeter,推荐在/usr/local/下面,我这里由于权限问…

微服务真的过时了吗?Twitter员工因为微服务被马斯克解雇了

马斯克吐槽微服务 最近Twitter因为马斯克收购而大幅裁员的消息闹得可谓是沸沸扬扬,但是最近马斯克吐槽Twitter内部服务200个RPC的新闻更是闹得不可开交,并且和员工在twitter上的争论更是因为了程序猿界的广泛转发和评论 微服务真的是一个糟糕的设计吗&a…

如何处理海量数据文件以及大文件数据查找

目录 一.处理海量整数文件 ①问:假定有40亿个无符号整数,判断某数据是否在其中? ②问:假定有40亿个无符号整数,找到只出现一次的数据,两次,三次...? ③问:两个文件各…

[ Linux ] 动静态库 手把手教你写一个自己的库

目录 静态库与动态库 生成 发布动静态库 形成发布静态库 形成发布动态库 一个makefile同时生成动静态库 如何使用动静态库 使用静态库 正确做法: 使用动态库 运行动态库 为什么动态库运行时有找库的步骤 静态库与动态库 静态库(.a&#xff0…

聊一聊作为高并发系统基石之一的缓存,会用很简单,用好才是技术活

大家好,又见面了。 在服务端开发中,缓存常常被当做系统性能扛压的不二之选。在实施方案上,缓存使用策略虽有一定普适性,却也并非完全绝对,需要结合实际的项目诉求与场景进行综合权衡与考量,进而得出符合自…

Spring Security认证之用户定义

本文内容来自王松老师的《深入浅出Spring Security》,自己在学习的时候为了加深理解顺手抄录的,有时候还会写一些自己的想法。 在前面的案例中,我们登陆的用户信息是基于配置文件来配置的,其本质上是基于内存来实现的。但是在实际…

(5)多机器人集群编队策略

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多机器人集群编队策略1、多机器人协同作业冲突问题(1)介绍(2)多机器人系统…

学会Spring Cloud微服务架构绝活,渣本也能进大厂

微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有…

C++程序设计--第三章内容

提前声明: 本文内容为华北水利水电大学研究生C课程,如有 侵权请告知,作者会予以删除 1.函数 函数作用 —— 任务划分;代码重用定义形式 类型 函数名 ( 形式参数表){语句序列}调用形式 函数名&#x…

数据结构:树

文章目录一.树的概念二.树的相关概念三.树的表示一.树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下…

『Java』数组中值得说的那些事

文章目录前言一、数组的创建及初始化🌳1、数组的创建🌳2、数组的初始化🍑(1)动态初始化🍑(2)静态初始化二、数组的使用🌳1、数组中元素访问🌳2、遍历数组&…

python3 爬虫(初试牛刀)

此文章仅供学习交流使用 在学习爬虫之前,把最近对于 VMware 的网络学习做个总结 接下来,步入正题! 分析 Robots 协议 禁止所有爬虫访问任何目录的代码: User-agent: * Disallow:/允许所有爬虫访问任何目录的代码: …

2022年新版Pycharm通过project interpreter国内镜像源设置

2022年新版Pycharm通过project interpreter国内镜像源设置解决方案速览一、国内镜像源列表二、pycharm访问project interpreter解决方案速览 File->Settings->project interpreter-> -> Available Packages将options打勾,并输入-i https://pypi.tuna.…

Gvim显示行号、最大化、字号、主题等常用配置修改

Gvim的设置分两种:1. 临时设置,2. 永久设置,本文只关注永久设置的情况。 配置Gvim只需修改Gvim配置文件即可,Linux中,配置文件的地址是~/.vimrc,若没有该文件则创建即可,我们可以直接输入gvim …

平面设计师怎么找素材?

平面设计素材网站,免费下载,建议收藏! 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx菜鸟图库是一个素材量非常丰富的网站,网站聚合了平面、UI、淘宝电商、高清背景图、图片、插画等高质量素材,平面模板非常多&am…

数据结构绪论、顺序表课后练习题

文章目录第1章 绪论一 填空题二 选择题三 判断题✅❎第2章 线性表一 判断正误二 单项选择题三 简答题第1章 绪论 一 填空题 数据结构被形式地定义为(D, R),其中D是数据元素的有限集合,R是D上的关系有限集合。数据结构按逻辑结构…