zoukankan      html  css  js  c++  java
  • 多角度分析,通讯时序数据的预测与异常检测挑战

    通讯作为一个堪比水电气甚至影响更大的一种社会基础服务,特别是5G建设以后,系统更加复杂。对通讯质量优化,能耗优化,运维优化等挑战更高。

    各种通讯系统中,大量的软硬件模块,出于业务、性能、故障等监控的目的,产生并采集了大量与时间相关的各种指标数据。基于这些数据,可以实现各种能力,如预测,异常检测等,并提供为有价值的服务:比如基于预测实现:流量预测、用户预测辅助容量规划,设备节能,客户流失管理;基于异常预测实现:故障预警、故障发现、故障关联过滤,辅助修复等,减少业务损失和人力投入。

    问题

    1.1)什么是时序(Time Series)

    时序数据,是被测量对象上按特定时间(一般固定周期)持续测量到的数值序列。

    数学形式可表示为:

    X = {X1, X2, ...}, also is X = {Xt : t∈T}

    1.2)什么是时序预测(Time Series Prediction)

    时序预测,是根据一定长度历史时序,预测将来一步到多步的时间点的时序数值。

    数学形式可表示为:

    Y = f (X),

    X = { …, Xt-m-2, Xt-m-1, …, Xt-2, Xt-1}

    Y = {Xt, Xt+1, ..., Xt+n, Xt+n+1}

    1.3)什么是时序异常检测(Time Series Anomaly Detection)

    时序异常检测,是从一条或多条时序中,独立或者关联,识别出显著不同于其他大多数的少数疑似点。

    数学形式可表示为:

    y = f (X),

    X = {X1, X2, ...}, also is X = {Xt : t∈T}

    y ∈ {0,1}

    乍看之下,时序数据的异常检测,输入数据形式简单,任务也很明确,一般情况输入的数量也很小,很容易设计各种算法来做异常检测,而且有不同类型的大量异常检测算法可以直接使用或者改进使用。

    事实上,要实现一个(套)综合能力强大,能很好的适合通讯领域的要求的时序数据异常检测算法,挑战非常大。

    挑战

    1)一般性的挑战:

    a) 普适:能适用不同类型的指标,不同采样间隔,不同物理/业务含义,不同的曲线波形,不同数据取值范围,是否有缺失值等。

    b) 鲁棒:能容忍时序中的一定程度的变化,持续高质量检测,比如数据分布的小变化如均值方差、周期频率与幅度,噪音大小等的小变动,比如是否有lag和lag的变动等。

    c) 检测能力强:指标从检测难度看,有相对容易检测指标,比如正常时均值不变或者仅有极小方差的,或者指标有一个或较少几个周期构成的周期性强且异常点明显的指标;也更有大量指标曲线非常复杂,经过特定的算法计算后,特别是在有样本标注监督信号的情况下,才能够分离出异常点,甚至难以分离出异常点。后者对算法检测能力的强大要求较高,但是,对高难度的指标的检测和普适甚至无标注下的普适检测算法会形成矛盾。

    d) 检测精度高:异常检测效果通常可以通过精度、召回、F1值等衡量。既要精度高,又要召回高,很难两全的;漏报太高则异常检测的目的无法达到,误报太高对后续处理特别运维人工参与时干扰太大。

    2)通讯领域中更多的挑战:

    a)针对不同局点、不同网络、不同业务类型,能够以较少人力开局和维护;否则对数千局点,每个局点、每套系统,数百数千种类型,数万数十万指标,需要数人天甚至数人月,且专业人员才能调试稳定,成本极高。

    b)在不同设备上,如何检测速度快,消耗资源少;通讯系统不同系统的运行环境差别较大;有无线网络中网络边缘基站的ARM小节点,也有核心网中数据中心的X86集群。有些指标采样时间间隔为小时甚至更长,但有些核心系统的指标,以5分钟,1分钟,甚至以秒计。

    c)设备上研发的系统,被部署到运营商的环境后,算法研究人员和系统研发人员,都没有办法再直接接触到系统,进行监测优化,基于较少数据实现普适的算法,零接触的运行与自检自我维护,提出挑战。

    d)基于时序预测和异常检测的算法,一般会有后续的动作被执行。这些动作不仅包含生成数据报表用于容量规划,基于异常检测发出的运维告警;还可能被用户在系统类执行某些其他直接影响业务的动作,诸如降级,关断,在线扩容等。严重错误的预测和异常检测结果可能引起不期望甚至不可接受的动作被执行。

    下面逐个详细分析挑战:

    2.1)从数据上看

    a) 给定一条时序数据序列,比如[…, 1.9, 2.0, 2.1, 1.9, 2.0,2.1, 99.9],如何理解并利用其中的信息?如果只是直接利用原始的数值,可能有些异常,即使有明确的标注也不能被学习和检测,甚至有明确的规则都不能被定位出来,比如:每天凌晨3点,如果指标超过30.0则是异常。显然,时序数据中,除了原始指标值本身,要考虑充分利用time,按日历calendar比如周等可用于周期对齐的信息,如果使用机器学习模型,会隐式或者做特定编码辅助显式的方式表达前后关系、时间信息,这样有助于异常检测。对于时间利用的理解,有些序列只需要理解和利用到相对规律性周期并表示即可,有些序列则需要理解和利用到日历时间,因为包含但不限于通讯系统,这些指标的产生的系统受人类社会的活动或强或若的影响。

    b) 如何理解时序数据的生成来源?一般的,可以理解为一条时序背后,是一到多个“作用力”的共同作用,产生出不同的变化和振荡。有些作用力,可能是极度偶发的,无论多强大多“完美”的算法,都难以去分析甚至发现规律。而有些指标中的作用力,更多的表现为统计意义上累加的结果,其可预测性更高,异常可检测性就更高。因此,在待检测指标较少,指标预测和异常检测业务价值较大的场合,通过对指标产生的作用力做业务分析,分析其波动的来源和大小,多个作用力是独立还是某种相关(正/反),是否具有直觉意义上的规律,就非常重要。

    c) 在通讯领域中,为了降低基于指标异常检测的重复报警,降低误报率等,通常会尝试补充除时序本身以外的信息,其主要包括:指标的静态配置信息(比如:是否是某种ratio还是原始物理值;是原始值还是通过某函数甚至综合多个指标计算出的派生值),多条指标的相关性信息(人工配置或者自动发现的相关性);指标产生的拓扑信息(其中拓扑可能是相对静态的底层物理层,也可能是动态变化的上层各逻辑层)。在这些信息中,各种信息的利用各有挑战:比如ratio中成功率,如果单纯的看6个9不一定算高,而3个9不一定算低,还需要结合其原始值(总数和成功数,甚至其他负载指标)来综合考虑。在拓扑信息的利用中,不仅仅是如何表示拓扑(比如做图嵌入等),更大的挑战在于,如果是逻辑层非常动态的拓扑,维护和准确利用有效拓扑快照非常有挑战性,从工程上还需要平衡拓扑利用的价值和成本。

    d) 在实际工程中,海量的不同层级的采集点上,指标数据如果需要检测,大部分需要就地检测,否则通过网络传输和存储后再计算,对网络、存储、计算、时效性上都不可接受。因此,在设备上的就地检测,系统不可能缓存太长的数据,也就是说:检测算法本身,无论是否学习,数据的可见范围都很小,这对算法要挖掘到长周期规律挑战极大。

    e) 检测系统介入业务系统的时刻,被检测指标所代表的业务系统,可能处在其不同的生命周期(新装期,上升期,成熟期,退出期,等),不同的生命周期体现在指标上,其数据分布特点(均值,方差,周期频率,周期振幅,周期延迟等)可能有较大差异;当物理系统在扩容,版本更换,配置调整等改变时,其数据分布特征可能也会发生较大差异;通讯系统所服务的用户,其人群的移动,周边的环境变化等,也同样会引起数据分布变化。算法是否具有对短期异常波动和长期模式变化的在线快速判定能力,有很大的挑战。

    f) 从指标特定的多样性上看,有的指标正常状态平直(稳定在一个常数,方差为0),有的指标虽有波动但很稳定(滑窗内均值变化极小,方差较小(相对于异常发生时的取值范围)),有的有明显的一个到多个周期(可能是简单的加性关系或者乘性关系,也可能是较为复杂的其他合成关系);有的指标则很难通过可视化或者简单的基于统计或者分解的方法过滤出潜在异常点。

    g) 从原始数据通过某种计算,过滤出能用于门限判定的潜在异常点,有的指标有可分解的趋势、周期和残差;有的则完全掩盖在幅度更大的“噪音”中难以分析。

    2.2)从任务上看

    a)从最终的异常确认上看:有的异常时基于点来判定,有的异常基于一个序列片段才能判定;有的序列出现方波可能就是异常(正常状态不可能出现陡升陡降),有的则相反;有的异常必须要基于同比环比做相对比较才能判定,而有的异常基于当前绝对值就可以判断。

    b) 从异常告警发出(确认发出)的时机看,有的异常在第一个疑似异常点发生后就必须报告,而有的异常在必须要在等待若干个周期后才适合上报(比如具有自愈或者可容忍的闪断),否则误报太多。

    c)仅从一个指标检测任务上看,任务的定义可能发生变化,包含但不限于:不同用户对同类网络相同指标的门限不同,同一用户对同一网络同一指标,不同的运维人员或者不同的时间点对异常的定义可能变化(比如门限的高低,越界的方向);对多种形式的潜在异常(方向,绝对值越限,均值变化,方差变化,波形变化,等)哪些算异常,这个判定标准可能发生变化。

    2.3)从算法上看

    a)有成百上千种主要的算法及其变体,(非严格的分类)包含但不限于:基于统计和规则的,基于度量比较的,基于成分分解的,基于机器学习的,基于机器学习-神经网络的,基于神经分解的,甚至基于类脑的各种算法(HTM,SNN…)。每种方法有算法复杂性、假设多少的差别,最终都有其适用性限制,很难(实际上没有)一种算法能够在可检测性、各检测质量指标,在各种场合都表现的很好,而且没有办法通过集成就一定稳定提高检测性能。

    b)从主流方法上看,基于统计的方法,基于分解定界的方法,基于机器学习(无论是discriminative还是generative)中直接分类还是先预测后判定,等等各种方法,从逻辑上最终都隐式或者显式的存在一个门限,这个门限的确定,即使在一个网络中,也没有办法一个值就适合所有。

    c)如果要每个KPI做特定优化,工程浩大;如果要尽力一套或者有限套算法覆盖尽可能多的KPI,如何确定这些算法,如何对不同KPI做选择,存在挑战。

    d)从数据输入,到检测结果输出,可以分为多步完成,以期可控的提升效果;也可以实现为端到端的算法,以方便实现无监督和有监督学习的切换。如果是非端到端的算法,当从无监督算法,试图利用用户的有限反馈,提升检测效果的时候,会存在挑战,首先要确定哪个KPI在什么时候,通过什么环节的什么算法计算的,这些环节如何利用监督信息,利用监督信息后对原来的计算流程还兼容与否;如何从无监督平滑过渡到有监督,也存在技术挑战。

    e)在用户提供标注的情况下,标注本身存在挑战:1)标注不多,2)标注不准,3)标注不全(比如多种异常只标注部分类型),4)标注不新(分布变化,样本老化)。且在运营商环境,很难大规模交叉验证,更不可能算法研究人员的人工介入交互分析。

    f) 当分布变化,需要在线学习(纯在线学习算法,或者简单的重训练),训练的资源限制(不能因为训练拖慢甚至中断检测),训练的早停和步长等关键的超参数的确定,当数据可见范围很小的时候如何保持中长期的规律,都非常困难。

    g) 当分布变化,模型检测质量劣化,如何:在线无监督的检测模型劣化(比如基于置信度校准等技术),发起重训练,或者降级为基于规则的方法,也是比较难以确定的问题。

    h) 由于通讯领域的业务的重要性,所有结果如何“尽力”保证质量底线,甚至具有良好的可解释性,挑战更大。

    到此为止,笔者在简单的描述问题后,尝试从多个角度,来分析通讯领域里的时序数据的预测和异常检测(重点是后者)。作为系列文章,后续将继续分享,业界的主要算法及其改进,特别是针对通讯领域的这些挑战,设计新的偏神经网络的算法,来实现:强普适性、高精度、支持分布变化的在线学习、避免或降低标注的无(自)监督算法,以及算法集成。

     

    点我,参与华为云微话题讨论

  • 相关阅读:
    常用公式 距离、波形、力
    代码字体
    关于flash缩放的详细解释
    色调
    工程项目1
    使用double无法得到数学上的精确结果的原因及为何不能用double来初始化BigDecimal
    第一次测验感受
    原码,补码,反码的概念及Java中使用那种存储方式
    static的含义
    第一次测试代码
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/13469630.html
Copyright © 2011-2022 走看看