智能化运维近些年来开始被人们所熟知,我们专做IT研发与运维,正好逛到这个问题,就来回答一波,希望能够帮到大家。
一、智能运维(Alops)概念:
Gartner在2016年时便提出了AIOps的概念,AIOps即人工智能与运维的结合,并预测到2020年,AIOps 的采用率将会达到 50%。
简单来说,AIOps 就是基于已有的运维数据(日志、监控信息、应用信息等)并通过机器学习的方式来进一步解决自动化运维没办法解决的问题。
软件的一些“算法逻辑”不代表真正的AIOps,判断是否是真正AIOps的关键点在于:是否能自动从数据学习中总结规律,并利用规律对当前的环境给予决策建议。

总结一下就是:
1. 智能运维是以大数据平台和机器学习(算法平台)为核心。
2. 智能运维需要与监控、服务台、自动化系统联动,智能运维需要从各个监控系统中抽取数据、面向用户提供服务、并有执行智能运维产生决策模型的自动化系统。
二、AIOps的应用:
通过对运维数据的计算和分析支持智能监控、智能的故障分析和处理,智能IT知识图谱等。
三、AIOps的价值:
传统运维面对海量的运维数据,要快速止损和进行决策,人工专家的分析判断往往需要花费数小时或更大。
而AIOps在于通过机器学习来进行运维数据的挖掘,能帮助人甚至代替人进行更有效和快速的决策。
智能运维在企业的落地,能够提升业务系统的SLA,提升用户的体验,减小故障处理的时间等,带来业务的价值;并最终实现真正意义上的无人值守运维。
四、AIOps应用领域:
目前各大传统客户围绕AIOps的探讨和建设主要是如下内容:
发现问题:基于机器学习的异常检测;
例如,目前监控数据的异常阈值往往是静态的,无法有效规避变更时间、特殊节假日、业务正常的高低峰等,简单阈值、同环比算法的覆盖面有限,很容易漏警和误警。
基于历史数据或进行样本标记的KPI异常检测,能第一时间发现问题,检测模型能覆盖大多数曲线类型,能较好适应业务生命周期中的变化。
根因分析:基于机器学习的故障树挖掘,定位故障发生的根源以及其原因;例如,首先实现故障精准定位,在多指标情况下的业务异常(多指标检测的异常),出现异常的原因具体是哪个指标导致的;然后根据故障树挖掘和知识图谱,实现故障的精准根因分析与定位。
预测未来:基于机器学习模型的指标预测;例如,基于多种回归和统计方法,实现对不同级别粒度的业务数据的预测,包括业务指标预测、容量预测等,如双11业务对组件容量和资源容量的容量预测等。
IT辅助决策支持:深入运营场景,实现业务运营的IT辅助决策应用;如营收预测、舆情分析与预测等场景。
算法层面则可以跟学术界进行合作或在社区中获取,在早期训练数据集和反馈数据量比较少的情况下,采用无监督学习,具体实现是用模式识别(pattern recognition)的技术来判断指标是否关联。关联性是通过时间序列曲线相似度(similarity distance)来衡量的。
机器学习算法库提供计算时间序列曲线相似度的各种算法,比如:欧几里德距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、明科斯基距离(Minkowski Distance)等。
在有足够数据集以后,算法演化成有:监督学习、随机森林(Random Forrest)、GBDT(Gradient Boosted Decision Tree) 、神经网络(Neutal Network)等。
以上,是笔者参考和研究一些资料后,以及结合企业经验的一些个人感受和理解,欢迎留言探讨。
后续笔者还会近些更多干货分享,若觉得对你有帮助,点赞收藏安排上吧。
云智能/AIOps(简称“AIOps”)旨在通过创新的人工智能(AI)或机器学习(ML)技术,帮助人们有效且高效地设计、构建和运营大规模的复杂云平台及服务。在过去15年间,软件行业最重要的范式转变是向云计算的迁移,这一转变给企业、社会和人们的生活都创造了前所未有的数字化转型机遇,并带来了巨大的利益。如今,云计算已经成为全球基础设施的一部分,因此,云计算的服务质量,包括可用性、可靠性、性能、效率、安全性和可持续性等也变得愈发重要。但云计算平台的分布式特性以及超大规模和高度复杂性的特点,贯穿于存储、网络、计算和其他各个方面,给系统的设计、构建和运维带来了巨大挑战。面对这些挑战,云智能/AIOps技术给出了从被动运营到主动运营的方案。
“建立一个可供数百万人每天使用,但只需一名兼职人员管理和维护的系统。”这是吉姆·格雷(Jim Gray)在1999年获得图灵奖时对无故障服务器系统的畅想。他设想了一个自管理的“空中服务器”,可以存储大量数据,并可按需刷新或下载数据。如今,随着人工智能(AI)、机器学习(ML)、云计算的出现和快速发展,以及微软对云智能/AIOps(智能运维)的开发,我们比以往任何时候都更接近这一愿景,并有望超越这一愿景。
AIOps 有三大支柱,每个支柱都有其各自的目标:
- AI for System:让智能内置于云系统,实现更少的人工干预,并同时保障系统的高可靠、高效率、自控制和自适应。
- AI for Customer:利用 AI/ML 创造无与伦比的服务体验,实现非凡的用户满意度。
- AI for DevOps:将 AI/ML 注入软件开发的全生命周期,以提高开发的质量和效率。
微软杰出首席科学家、微软亚洲研究院常务副院长张冬梅介绍云智能/AIOps研究的主题演讲
AIOps研究始于软件分析
全球咨询分析机构 Gartner 在2017年首次创造了 AIOps(人工智能IT运维)一词。Gartner 称,AIOps 是将机器学习和数据科学应用于 IT 运维问题上。Gartner 的 AIOps 概念仅聚焦开发运维(DevOps),而微软的云智能/AIOps的研究范围更为宽泛,还包含 AI for System 和 AI for Customer 两个方面。
微软在云智能/AIOps方面的研究可追溯到2009年微软亚洲研究院提出的“软件分析(Software Analytics)”研究,这项研究旨在让软件从业者能够通过探索和分析软件相关数据,获取深入且具有指导性的洞见,并应用于与软件和服务相关的数据驱动任务。2014年,微软的研究员们开始将软件分析的研究重点放在云计算上,并将新的研究主题命名为云智能(Cloud Intelligence)。回看过去,软件分析主要是关于软件行业自身的数字化转型研究,例如让从业者利用数据驱动的方法和技术来开发软件、运维软件系统以及提升用户体验。而当下在进行云智能研究时,也同样以数字化转型的观念来看待云计算平台的发展,就是将最先进的 AI 技术内嵌于云计算平台,以服务于云系统、开发运维人员、以及云客户,从而更好地推动云计算平台的智能化发展。

AIOps 中的主要研究领域:检测、诊断、预测和优化
在 AIOps 的三大支柱中,每一个都有许多场景。例如,在 AI for System 方面,包括为高效和可持续服务进行前瞻性预测、监测服务的健康状况和及时发现系统健康问题;在 AI for DevOps 方面,确保代码质量并防止有缺陷的软件被部署到线上;在 AI for Customer 方面,如何有效提升客户体验等。
在所有这些场景中,有四个主要的问题类别,它们一起构成了 AIOps 的主要研究领域:检测、诊断、预测和优化。具体而言,“检测”的目的是及时地识别异常的系统行为或状态。“诊断”的目标是找出服务系统问题的原因并定位其根源所在。“预测”则旨在对系统行为、用户工作负载或 DevOps 活动等进行预判。最后,“优化”是找出最佳策略或决策,以全面优化与系统质量、客户体验和 DevOps 生产力相关的特定性能。

从图2中可以看到,每类问题都面临着各自不同的挑战。以“检测”为例:为了确保服务运行时状况良好,工程师必须不断监控各种指标并及时检测异常情况;在开发过程中,为了确保持续集成/持续发布(CI/CD)等业务实践的质量,工程师需要创建一些机制识别有缺陷的软件版本,并防止它们被部署到生产环境中。这两种情况都需要及时检测,在应用 AI/ML 方法时也存在着共同的挑战。例如,时间序列数据和日志数据是最常见的数据输入形式,然而它们通常是多维度的,数据中可能存在噪声,这都会对可靠的检测构成重大挑战。
微软研究院AIOps的愿景:更自主、更前瞻、更全面、更易管理
微软正在针对 AIOps 的每一类问题进行持续研究,目标是让整个云系统的每一层都变得更自主、更前瞻,更全面、更易于管理。
让云系统更自主
AIOps 致力于让云系统变得更加自动并更有自主性,最大限度地减少人工操作,降低维护成本,结合全局信息做出更合理的决策,从而避免系统问题对用户的影响。为此,要尽可能地实现 DevOps 自动化和自主化,包括开发、部署、监控和问题诊断。例如,安全部署的目的是及早发现有缺陷的软件版本,防止其部署到线上对用户造成重大影响。对于工程师而言,人工识别有缺陷的软件版本是非常耗时耗力的,因为异常行为有多种模式,随着时间的推移这些模式还会发生变化,而且并不是所有的异常行为都是由新版本引起的,这就可能会导致误报。
微软研究院的研究员们借助迁移学习和主动学习技术,开发了一套安全部署解决方案来克服上述挑战。这套解决方案已经运行在微软 Azure 云计算平台中,它在帮助识别缺陷版本方面非常有效,在18个月内,实现了90%以上的准确率和几乎100%的召回率。
相关论文:
- An Intelligent, End-To-End Analytics Service for Safe Deployment in Large-Scale Cloud Infrastructure
AIOps 自动自主化的另一种方法是自动根因分析。为了缩短处理时间,工程师必须快速确定云系统故障发生的根源所在。然而,由于云系统结构的复杂性,故障告警通常只包含部分信息,并且一个故障可能同时触发多个服务和组件,因此工程师在采取有效措施之前,不得不花费大量的时间来诊断问题的根本原因。通过先进的对比挖掘算法(contrast-mining algorithms),微软研发了包括多层次故障定位(Hierarchy-aware Fault Localization)和故障影响范围评估(Outage-impact Scope)在内的故障自主诊断系统,在缩短响应时间的同时,提升了故障诊断任务的准确性。这些系统现已集成至微软 Azure 云计算平台和 Microsoft 365(M365)中,提高了工程师在云系统中快速准确处理故障的能力。
相关论文:
- Fast Outage Analysis of Large-scale Production Clouds with Service Correlation Mining
- HALO: Hierarchy-aware Fault Localization for Cloud Systems
- Onion: Identifying Incident-indicating Logs for Cloud Systems
让云系统更具前瞻性
AIOps 通过引入“前瞻性设计”的概念,让云系统变得更具前瞻性。前瞻性系统设计是在传统系统中添加了基于机器学习的预测组件。预测系统通过对大量历史数据的学习获得预测模型,并结合当前的系统状态,以预测系统的未来状态。例如,预测某个服务器集群下一周的资源容量状态,磁盘是否会在未来几天内出现故障,或者未来一小时内需要创建的特定类型虚拟机的数量。
了解了未来的状态,就能够主动避免对用户的负面影响。例如,工程师可以把未来将会出故障的计算节点上的服务实时迁移到健康的计算节点上,以减少虚拟机的停机时间,或者在未来一小时预配置特定类型和数量的虚拟机,以减少配置虚拟机所需的等待时间。此外,AI/ML 技术还可以使系统随着时间的推移不断学习来调整以达到适应当前系统的最优决策。
作为前瞻性设计的范例之一,微软研究院的研究员们构建了一个名为 Narya 的系统,它能够主动处理潜在的硬件故障,以减少服务中断并把对用户的影响降至最低。运行在微软 Azure 云计算平台中的 Narya,可以对硬件故障进行预测,并使用增强学习算法来决定采取何种最优化的处理措施。
相关论文:
- Correlation-Aware Heuristic Search for Intelligent Virtual Machine Provisioning in Cloud Systems
https://www.microsoft.com/en-us/research/uploads/prod/2020/12/AAAI21_Provisioning.pdf
- Intelligent Virtual Machine Provisioning in Cloud Computing
https://www.microsoft.com/en-us/research/uploads/prod/2020/04/UAHS_IJCAI_2020_updated.pdf
- Predictive and Adaptive Failure Mitigation to Avert Production Cloud VM Interruptions
让AIOps在云堆栈中的应用更全面
AIOps 还可以扩展到整个云堆栈,从底层的基础设施层(如网络和存储)到服务层(如调度器和数据库)再到应用层,从而让 AIOps 变得更全面。广泛应用 AIOps 的好处在于可显著提高整体诊断、优化和管理能力。
构建在 Azure 之上的微软服务被称为第一方(1P)服务。微软 1P 服务的范例包括 Office 365 等大规模的成熟服务、Teams 等相对较新但规模较大的服务,以及 Windows 365 Cloud PC 等即将推出的服务。1P 服务中的单个实体可以看到并控制云堆栈的各个层,通常会占用大量的资源,比如广域网(WAN)流量和计算资源等,是应用更全面的 AIOps 方法的重要场景。
作为将更加全面的 AIOps 方法应用于 1P 设置的示例,由 Azure、M365 和微软研究院联合开发的 OneCOGS 项目考虑了三类广泛的优化机会:
1. 使用跨层信号对用户及其工作负载进行建模,例如使用用户的消息活动与固定工作时间的对比来预测 Cloud PC 用户何时将处于活动状态,从而提高准确性,实现系统资源的合理分配。
2. 通过应用程序和基础架构的联合优化,实现成本节约等好处。
3. 控制数据和配置的复杂性,实现 AIOps 的通用化。
用于云计算平台和 1P 服务的 AIOps 方法、技术及实践,同样适用于云堆栈上的第三方(3P)服务。若要实现这一目标,就需要进一步的研究和开发,让 AIOps 方法和技术变得更通用和更易适配。例如,在运行云服务时,检测多维数据中的异常以及随后的故障定位,就是常见的监控和诊断问题的方法。
基于 Azure 云和 M365 的实际需求,微软的研究员们提出了 AiDice 技术和 HALO 技术,前者可以自动检测多维时间序列中的异常,后者是一种层次感知方法,使用从云系统中收集的运行数据对故障组合进行自动定位。除了在 Azure 和 M365 中部署 AiDice 和 HALO 之外,研究员们还与产品团队合作,正在开发可供第三方服务使用的 AiDice 与 HALO AIOps 服务。
相关链接:
- OneCOGS 项目:
https://www.microsoft.com/en-us/research/project/onecogs/
- Efficient incident identification from multi-dimensional issue reports via meta-heuristic search
让云系统更易管理
通过引入分层自治的概念,AIOps 让云系统变得更易于管理。层级包括了从自动日常操作的顶层,到需要深厚的专业知识来应对罕见和复杂问题的底层。由于系统的复杂性,AI 驱动的自动系统管理通常无法处理所有不同类型的问题,因此,研究员们通过构建针对每一层的 AIOps 解决方案,让云平台可以更简便地管理复杂系统中不可避免的长尾罕见问题。此外,分层的设计也确保了自主系统从开发阶段起,就能够评估确定性和风险,并在自动化故障或平台面临前所未有的情况时具有安全回滚的保障,例如2020年由新冠疫情导致的意外的需求增加。
分层自治的范例之一是微软的研究员们构建的安全的节点在线学习(Safe On-Node Learning,SOL),这是一个在顶层服务器节点上进行安全学习和驱动的框架。另一个范例是,研究员们正在探索如何预测运维人员在处理故障时应执行的命令,同时考虑在顶层自动化无法防止故障发生时,衡量与这些命令相关的确定性和风险。
相关论文:
- SOL: Safe On-Node Learning in Cloud Platforms
https://www.microsoft.com/en-us/research/publication/sol-safe-on-node-learning-in-cloud-platforms/
AIOps已在Azure和M365中大显身手
AIOps 是一种迅速兴起的技术趋势,也是结合系统、软件工程和 AI/ML 等领域的跨学科研究方向。通过多年的云智能研究,微软研究院在检测、诊断、预测和优化等方面积累了丰富的经验和成果。通过与 Azure 和 M365 团队的密切合作,相关研究成果也已经在云系统中进行部署,在改善 Azure 和 M365 的可靠性、性能和资源效率的同时,也提高了产品开发人员的生产力。此外,微软研究院正在与学术界和工业界的同行展开合作,推进 AIOps 的研究和应用实践。例如,在各方的共同努力下,以 AAAI 2020、ICSE 2021 和 MLSys 2022 等顶尖学术会议为依托,微软研究院的研究员们已经组织了三期 AIOps 研讨会。
展望未来,微软相信云智能/AIOps作为一个全新的创新维度,将发挥越来越重要的作用,使整个云系统变得更加自主、前瞻、全面和易于管理。云智能/AIOps 终将助力实现人们对于云计算的未来愿景。
本文作者:微软杰出首席科学家、微软亚洲研究院常务副院长张冬梅,首席研究员林庆维;微软印度研究院副院长 Venkat Padmanabhan,首席研究员 Ranjita Bhagwan;微软 Azure 杰出工程师 Ricardo Bianchini,高级研究工程师 Dan Crankshaw
AIOps(Artficial Intelligence for Operations)被称为智能运维,是一种将大数据、人工智能或机器学习技术赋能传统IT运维管理的平台(技术)。2016年由知名咨询公司Gartner正式提出,被喻为传统手工运维ITOM(IT Operations Management)和ITOA(IT Operations Analytics)之后新一代的运维模式。并预测到2022年,50%的大型企业将结合大数据和机器学习功能,支持和部分替代监测、服务台和自动化流程和任务。 由传统的手工运维ITOM,升级为智能运维AIOps将是运维行业的大势所趋。
传统运维的弊端
而且随着企业数字化转型的快速发展,IT系统数量快速增长,还有云原生架构的应用导致系统复杂度越来越高,传统运维方式已经无法满足企业的需求,因此,借助AI技术能力实现运维智能化,提高运维效率和运维质量,成为IT运维的必然趋势。其次,传统运维依赖于人的经验,这使得业务的稳定性、安全性难以得到保障,阻碍了数字化转型的进程。最后,传统运维不能从业务服务的视角去看待整个的数据变化,很难第一时间判定问题根因。所以必须改善传统运维的效能,才能满足数字化转型的要求。
最近几年,疫情对企业的数字化转型具有明显推动作用。不同行业都反映出一个事实:越早进行数字化转型越有利于在业务中领先。因此数字化转型是发展趋势,这对于智能运维来说,也带来了更多机会。
AIOps智能运维对企业的作用
AIOps智能运维是一种全新的数字化运维能力,可以配合企业的数字化转型,保障企业的业务应用能够安全稳定且高效的运行。智能运维相对于传统运维模式而言,能够在运维数据治理、业务数字化风险、运维人力成本和业务侧影响力四个方面有本质的效能提升。
- 运维数据治理。通过高性能实时处理的数据平台广泛采集、处理和分析数字化业务运行过程中的多样化运维数据,包括告警、指标、日志、配置以及运维工单等类别,不仅提升了运维大数据的治理能力,优化了数据质量,而且为进一步激活运维数据的价值打下了良好基础;
- 业务数字化风险。使运维人员不仅提升了历史运维数据的分析能力并且能够对实时数据进行异常检测和问题预判,有效降低数字化业务的运行风险,提升可用性、稳定性;
- 运维人力成本。使真正意义上的跨域根因定位成为可能,降低对专业运维人员经验技能的依赖,迅速缩短故障排查时间并有效降低人力成本;
- 业务侧影响力。以业务视角利用多元化数据提高运营分析和决策能力,比如端到端的分析业务交易状态,提供给业务、客服部门及时反馈和决策支持依据,充分增强业务影响力;
↓↓↓【点击下方】免费领取《2022擎创夏洛克AIOps智慧运营平台白皮书》,获取关于智能运维的最新资讯和先进的解决方案
2022擎创夏洛克AIOps智慧运营平台白皮书正式发布
擎创科技,Gartner连续推荐的AIOps领域标杆供应商。公司致力于协助企业客户提升对运维数据的洞见能力,优化运维效率,充分体现科技运维对业务运营的影响力。2016年成立至今,积累了大量案例,客户覆盖金融、制造、能源交通等行业的标杆企业。是行业龙头客户的共同选择。

点击进入擎创科技官网,了解更多案例,获得启发:
企业在各类复杂运维问题的面前,该如何做好智能运维的建设、实现数据的全面可观测性?
擎创科技将近几年的实践进行总结并形成白皮书向大家分享。
↓↓↓【点击下方】免费领取《2022擎创夏洛克AIOps智慧运营平台白皮书》,获取关于智能运维的最新资讯和先进的解决方案
AIOps智能运维交流机会
如果您有关于AIOps智能运维的其它困惑或心得,可以填写下面的表单告诉我们,我们的运维专家将尽快与您联系,提供先进的AIOps智能运维解决方案,解决您的企业在数字化转型中碰到的IT运维难题。
↓↓↓【点击下方】与AIOps智能运维专家预约交流机会,解决您的企业在数字化转型中碰到的IT运维难题。
导读
这篇文章发表在NIPS2021中,整体读下来感觉有几个收获先整理到这里:
- 文章中针对时间序列数据(单维度)的异常类型进行了梳理,大致分为Point类型和Pattern类型;又分别根据对应的特点,进行了更细粒度的划分;
a. 为何这点很有影响,因为异常本身无法精确定义出来且标准的标签数据集比较少;
b. 往往观测的异常指标是来自具体的业务系统,各种异常的主观性很强,往往【检测方】和【观测方】很难在异常的解释上达成一致
c. 如果能在某种认知上达成一致,在后续做检测和验证时能更容易一些
- 真实的异常数据往往缺少标签,也缺少开源的标准数据集合。很多论文中方法仅仅对特定的数据集适用,因此有相对来说通用的异常合成的方式,这样便于让各家算法在统一的数据环境中进行评估,本文恰好较为清晰的定义了一些异常的心态,且在后续的实验中分别针对单一异常类型数据集和混合异常类型数据集进行了实验评估,因此结果相对其它文章更具说服力;
- 作者不仅做了详细的对比实验,同时还开源了实验的代码库。在后续基于该实验基础的前提下,能更好进一步验证和完善。同时,在实验中,也发现了在异常检测领域传统的机器学习方法比深度学习方法表现更加突出;
基于上述原因,特写此文,介绍这项工作,下面稍微整理一些文中总结类、观点类的内容,并附上本人复现该实验的步骤。
文章主体
这里我们罗列出本篇文章的核心贡献:
- 我们为时间序列异常值提出了一种行为驱动的分类法,如图 2b 所示。 它通过经验观察和光谱分析来查看时间序列数据,并根据明确的上下文定义将异常值相应地分类为点和模式异常值。
- 按照行为驱动的分类法,我们提出了一个基于新定义的通用综合标准。 我们还生成了 35 个用于基准测试的合成数据集。
- 除了合成数据集之外,我们还确定了四个多元真实世界数据集,它们涵盖了来自不同应用领域的点和模式异常值。(这里说明下,CIC-IDS-2007这个数据集有问题)
- 我们对合成数据集和真实数据集进行了大量实验,以对 9 种算法进行基准测试,包括基于预测的模型、多数建模方法和不一致分析方法。 我们惊讶地观察到,对于所有类型的异常值,一些经典算法可以胜过许多最近的深度学习方法。 我们还有趣地观察到,一些算法能够检测某些类型的模式异常值,即使它们是为点异常值设计的。 希望这些见解能够激发未来的工作,我们开源了所有数据集、预处理和合成脚本以及 TOD 中的算法实现。

一、时序异常定义
- Point Outlier – 是指在时间序列中出现的某一个数值与其他特定数值之间的特定偏差范围,而这一数值又与其他数值不同。它可以出现在峰值,谷值,中间位置或者流量变化处。
- Contextual Outlier – 是指不同时间序列中,某类数据的某一项数值与其他项数值相比,显示出显著的不同的现象。它可以出现在不同的结构,形式,类别和模式之中,并且没有可比较的上下文环境或背景。
- Collective Outlier – 是一种特殊的异常现象,它指的是当一组成员拥有相似的异常值时,形成一个统一的群集,从而在异常检测时形成一个连续的异常。它们可以表现为偏离正常行为模式和正常统计学分布,可以检测到一组与正常行为和预期数据不同的样本。
在下图中,较为形象的简单的阐述了上述几种异常类型的形态化表达。

二、异常数据合成
将合成异常值引入无异常数据是评估检测算法的一种非常常见的策略。尽管这些研究介绍了各种合成策略,但它们仅关注其特定应用,不能作为基准测试的通用合成标准。 此外,他们都没有考虑趋势异常值。 在本小节中,我们引入了一个通用且统一的综合标准来对不同类型的异常值进行基准评估。
异常合成的几种策略:
- 其中一种合成策略是以加法方式注入零星异常值。 具体来说,通过将原始数据点与整个数据的均值和标准差相加来合成异常值,以确保其异常值。
- 另一种策略是用不和谐的模式替换现有的子序列,例如,用正弦波随机替换余弦波的子序列。
几种合成异常的数学形态,每种具体的异常合成的方式都相对来说简单很多,具体可以看下原文中的数学描述,这里我展示几张,通过程序人工合成的序列数据,供大家参考。
- Global Outlier
- Contextual Outlier
- Shapelet Outlier
- Seasonal Outlier
- Trend Outlier


我们可以看出,在人工合成的数据中,原始数据的规律性比较强,且单个观测数据的序列长度不大,异常注入的数量还是挺多的。从这里我们也可以初步的窥探下,为何使用传统的机器学习模型的检测效果会比深度模型会好了。
这其中的原始数据在如下目录中synthetic这个目录中,其中涉及到人工合成的数据的代码在也一并贴在下面,各位读者自行去查阅。
git checkout benchmark
cd /root/code_base/tods/benchmark
total 20
drwxr-xr-x 4 root root 4096 Jan 31 19:39 ./
drwxr-xr-x 11 root root 4096 Jan 31 19:38 ../
-rw-r--r-- 1 root root 305 Jan 31 19:38 README.md
drwxr-xr-x 6 root root 4096 Jan 31 19:38 realworld_data/
drwxr-xr-x 10 root root 4096 Jan 31 19:38 synthetic/
cd /root/code_base/tods/benchmark/synthetic/Generator
total 32
drwxr-xr-x 2 root root 4096 Jan 31 19:38 ./
drwxr-xr-x 10 root root 4096 Jan 31 19:38 ../
-rw-r--r-- 1 root root 10237 Jan 31 19:38 multivariate_generator.py
-rw-r--r-- 1 root root 9011 Jan 31 19:38 univariate_generator.py
三、实验Benchmark
针对上述真实数据和注入的合成的带有异常的序列,文中分别测试了不同算法的检测效果,下述罗列的是详细的各种场景中使用的相关算法,部分算法的超阐述作者已经整理到附录中了,具体的地址在文末。
- Prediction Deviation
- AR
- GBRT
- LSTM-RNN
- Majority Modeling
- One-Class SVM(OCSVM)
- IForest
- AutoEncoder(AE)
- Gernerative adversarial network(GAN)
- Discords Analysis
- Matrix Profile
- SubSequence Clustering with OCSVM and IForest
实验结果说明
真实场景数据的实验结果

在这里,整理下文本中关于实验结果说明
- 首先,经典算法通常优于深度学习方法。 令人惊讶的是,GAN 无法识别四个数据集中的任何异常值。 一个可能的解释是,现实世界数据集中的异常值非常复杂,具有非常不同的模式,这与合成异常数据的实验中多元综合基准的结果一致,即 GAN 可能无法从具有多种异常值的数据集中检测到异常值。
- 其次,子序列聚类算法与 OCSVM 结合使用时对真实世界的数据的实验结果不稳健。 如表所示,带模式聚类的OCSVM 在所有数据集中的表现最差。 这是因为 OCSVM 假设所有正常子序列都可以映射到超空间中的同一个簇中,这在现实世界的数据集中可能并非如此。 具体来说,我们观察到与普通 OCSVM 相比,具有子序列分割的 OCSVM 的训练时间是原来的十倍以上。 这表明找到一个超空间将所有正常子序列聚类到一个类中是非常具有挑战性的。
合成异常数据的实验结果

在这里,整理下文本中关于实验结果说明
- 首先,在所有合成数据集上,经典算法通常优于基于深度学习的方法。 具体来说,AR 在检测上下文和 shapelet 异常值方面优于所有其他算法(主要来自图e); OCSVM 和 IForest 在多变量设置的全局离群值和多个离群值方面优于其余的(主要来自图f); Discord Analysis算法在季节性和趋势异常值任务中表现最好(主要来自图b、c)。
- 其次,检测上下文异常值对大多数人来说都具有挑战性算法。 在所有算法中,只有 AR 能够取得良好的性能。 一个可能的原因是 AR 采用上下文点来执行自我回归并对上下文窗口中的常态进行建模,这有利于检测上下文异常值(这里还有另外一种可能性,就是合成数据的模式比较简单和稳定,大部分数据平稳序列,因此AR算法在Context类型的异常数据中表现的较好)。
- 第三,旨在检测逐点异常值的基于预测的算法也适用于某些模式异常值。
- 第四,当窗口大小设置不当时,MP采用的局部 Z 归一化可能会损害识别零中心序列上不同方向的趋势异常值的效果。
- 最后,RNN 和 GAN 等深度学习方法只能处理有限类型的异常值。
高质量的参考资料
相关文章
- Matrix Profile I: All Pairs Similarity Joins for Time Series: A Unifying View that Includes Motifs, Discords and Shapelets
- A review of subsequence time series clustering.
- 本文的实验部分的附录:https://openreview.net/forum?id=r8IvOsnHchr
相关数据集
- Calibrating probability with undersampling for unbalanced classification.
- Toward generating a new intrusion detection dataset and intrusion traffic characterization.
- Gecco industrial challenge 2018 dataset: A water quality dataset for the ’internet of things: Online anomaly detection for drinking water quality’ competition at the genetic and evolutionary computation conference 2018
- instrusion detection evaluation dataset (CIC-IDS2017) https://www.unb.ca/cic/datasets/ids-2017.html
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/309130.html