2021年大数据挑战赛A题智能运维中的异常检测与趋势预测求解全过程论文及程序

news2025/1/19 23:24:10

2021年大数据挑战赛

A题 智能运维中的异常检测与趋势预测

原题再现:

  异常检测(异常诊断/发现)、异常预测、趋势预测,是智能运维中首当其冲需要解决的问题。这类问题是通过业务、系统、产品直接关联的 KPI 业务指标进行分析诊断,指标主要包括用户感知类(如页面打开延时)、服务性能(如用户点击量)、服务器硬件健康状况(如 CPU 利用率、内存使用率)等关键性能指标。
  不同场景的运维,分析的指标种类差异较大,但都具备时序性特点,不同场景的 KPI 指标,以毫秒、秒、分钟、小时、天为时间间隔的数据序列都会出现,有些复杂场景的业务,往往会混合多个时间间隔的数据,但均为随时间变化而变化的时序数据。
  本次赛题以运营商基站 KPI 的性能指标为研究数据,数据是从 2021 年 8 月28 日 0 时至 9 月 25 日 23 时共 29 天 5 个基站覆盖的 58 个小区对应的 67 个 KPI指标。其中,选取三个核心指标进行分析。
  第一个指标:小区内的平均用户数,表示某基站覆盖的小区一定时间内通过手机在线的平均用户人数;
  第二个指标:小区 PDCP 流量,通过小区 PDCP 层所发送的下行数据的总吞吐量(比特)与 小区PDCP层所接收到的上行数据的总吞吐量(比特)两个指标求和得到,表示某基站覆盖的小区在一定时间内的上下行流量总和;
  第三个指标:平均激活用户数,表示某基站覆盖的小区在一定时间内曾经注册过无线网络的平均人数。
  针对上面三个指标,完成如下 3 个问题:
  问题 1 异常检测:利用附件的指标数据,对所有小区在上述三个关键指标上检测出这 29 天内共有多少个异常数值,其中异常数值包含以下两种情况:异常孤立点、异常周期。
在这里插入图片描述
在这里插入图片描述
  问题 2 异常预测:针对问题 1 检测出的异常数值,通过该异常数值前的数据建立预测模型,预测未来是否会发生异常数值。异常预测模型除了考虑模型准确率以外,还需要考虑两点:1)模型输入的时间跨度,输入数据的时间跨度越长,即输入数据量越多,模型越复杂,会增加计算成本和模型鲁棒性,降低泛化能力;2)模型输出时间跨度,即预测的时长,如果只能精准预测下一个时刻是否发生异常,在时效性上则只能提前一个小时,时效性上较弱。
  问题 3 趋势预测:利用 2021 年 8 月 28 日 0 时至 9 月 25 日 23 时已有的数据,预测未来三天(即 9 月 26 日 0 时-9 月 28 日 23 时)上述三个指标的取值。并完整填写附件 2 中的预测值表格,单独上传到竞赛平台。
  说明:
  (1)异常孤立点,在一段时间内仅有 1 个异常值;异常周期,在一段时间内有多个异常值。(时间范围、异常值范围需要参赛者自行设定并说明理由)。
  (2)在异常预测和趋势预测时,可借用其他指标作为辅助输入特征建模,如预测第 i 个指标第 t 时刻的数值或是否异常,可使用第 j 个指标 t 时刻前的数值作为输入,但不能以第 j 个指标第 t 时刻及之后的数值作为输入。
  (3)异常预测和趋势预测建模时,需考虑每个小区、基站之间的差异。可以针对每个小区、基站单独建模,也可以统一建模,最终以模型评价指标来评估。
  (4)第一题和第二题以 F1 值(2精确率召回率/(精确率+召回率))来评估模型优劣,第三题以 MAPE(平均绝对百分比误差)作为模型评估指标。

整体求解过程概述(摘要)

  在智能运维中,通过与业务、系统、产品关联的KPI业务指标时间序列数据进行分析可以进行异常检测、异常预测和趋势预测。本文研究了运营商基站KPI业务从2021年8月28日0时至9月25日23时共29天5个基站覆盖的58个小区对应的三个核心性能指标,通过DBSCAN密度聚类算法、LOF算法和Prophet模型对三个核心关键指标进行了异常值检测、异常值预测、趋势预测。
  在问题一中,题目要求对异常点检测,我们利用寻找异常点的模型进行求解,在众多模型中,我们选取LOF,Isolation Forest(孤立森林),DBSCAN(密度聚类)三个模型分别对指标进行异常检测,通过比较三个模型的检测效果,发现针对不同的小区,不同指标的数值三个模型的效果各有所优势。考虑到现实的情况,我们不把深夜时间段的数值低谷期当做异常点,而认为这是业务正常现象,在三个模型中综合考虑,认为使DBSCAN密度聚类算法较为合适,但是在对某些小区进行异常点预测时存在误差,需要对异常值检测结果进行修正。而对时间周期的标准定义,我们也是根据实际业务情况,发现指标的时间序列数据有一定的日周期性,为此我们把时间序列数值进行分解求出周期性,而求出的周期的时间跨度来作为异常周期的时间跨度,从而来计算异常周期的个数。
  在问题二中,题目要求预测未来的异常点,我们把题目一所找出的异常点进行0-1标记,0代表该时间点的指标数值不是异常,1则表示异常。我们建立神经网络模型进行求解,题目要求模型即要输入时间跨度少,又要在时效性上高,因此为了能确定模型的最佳输入时间跨度和最佳输出时间跨度,我们采用交叉验证法与网格搜索法,通过比较不同的时间跨度的模型算法的F1值来选择最佳时间跨度,最终确定最佳方案是输入时间跨度为10小时,输出时间跨度为5小时,即神经网络的输出是前10个小时的数值,输出是后5个小时的异常点标记。
  在问题三中,使用prophet算法,把第一问中检测出的异常数据点和正常数据点作为数据输入,分析数据中的日季节性、假期性和整体趋势性,并建立预测模型,对未来三天三个核心指标的数据进行预测。为了验证模型的预测效果,使用交叉验证方法对模型的预测效果进行评估,计算出预测值的MSE值和MAPE值,其数值均较小,说明模型预测效果较好

模型假设:

  (1)本题中所有小区之间仅存在物理性能上的 KPI 差异,不存在人为的外来影响因素和节假日活动、政策的影响。
  (2)本题中服务器本身的运作是稳定的,不存在异常的流量访问导致的异常。
  (3)本题中 58个小区之间的区别仅仅在于 KPI的性能和小区人员的日常使用习惯和人数问题,不存在其他的影响因素

问题分析:

  问题一的分析
  题目要求我们对关于时间序列的三个关键指标进行异常点的检测,对此我们想到异常点检验算法的类别,其中常见的三个分别为:1.基于统计学的方法,根据已知数据来构建一个概率分布模型,把具有低概率的数据视为异常点。2.基于聚类的方法,把偏离聚类的离散点作为异常点。3.基于专门的异常点检测算法,其代表是 One Class SVM和孤立森林(Isolation Forest)。我们分别用 LOF,孤立森林(Isolation Forest),DBSCAN 三个模型在对所有小区的三个指标进行异常预测,比较三个模型之间的对异常点检测的效果,由于每个小区、基站之间存在差异,所以对每个小区、基站使用以上三种方法分别单独建立三个异常检测模型,根据实际业务情况从三个模型中选择最适合每个小区的模型。再次考虑到实际业务的因素,三个关键指标有一定的日周期性,我们根据异常点的分布来选取最佳的时间周期,来确定异常点的周期个数。

  问题二的分析
  对于问题二,在问题一的基础上对已检测的异常点进行标记,这里我们将异常点标记为1,非异常点标记为0,这样就有一组数据{0,1}关于时间序列变化。首先对于预测异常来说,输入项是前一段时间的指标的具体数值,输出项是未来时间点可能出现的异常点。模型的选取上既要考虑输入数据的时间跨度,即为了减少模型的复杂度和计算成本应减少输入指标数据量尽可能地少,又要考虑到输出数据的时间跨度(时效性)和数据的准确度,即在保证准确度的情况下,对未来预测的时间跨度应尽可能地长。为此我们选取神经网络进行预测,输入层为数据时间跨度的具体值,输出层为未来预测的异常点标签0或1。

  问题三的分析
  第三题需要根据29天的历史数据建立模型,预测未来三天的数据,题目以运营商基站KPI的性能指标为研究数据,并且选择其中三个核心指标进行分析,因此使用prophet算法对三个核心指标分别建立数据预测模型进行预测。对三个指标数据的时间序列图进行观察分析发现,指标数据的变化趋势分为日季节性和整体趋势性,因此使用时间序列的分解方法将指标的时间序列数据分为日季节项𝑆𝑡代表周期性变化,趋势项𝑇𝑡用于拟合时间序列里的非周期项,剩余项𝑅𝑡代表了所有未被模型考虑到的误差元素,并将历史数据作为输入,求出以上几项并进行求和得到预测模型并输出预测结果。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

部分程序如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import copy
import sklearn.datasets as ds
import matplotlib.colors
from sklearn.cluster import KMeans,DBSCAN,AgglomerativeClustering
import scipy.cluster.hierarchy as sch
# v测量,轮廓系数
from sklearn.metrics import v_measure_score, silhouette_score

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = 'False'

def Dbscan():
    X1, y1 = ds.make_circles(n_samples=5000, factor=.6, noise=.05)
    X2, y2 = ds.make_blobs(n_samples=1000, n_features=2, centers=[[1.2, 1.2]],
                                 cluster_std=[[.1]], random_state=9)
    X = np.concatenate((X1, X2))
    plt.scatter(X[:, 0], X[:, 1], marker='o')
    plt.title('原始数据样本点分布')
    plt.show()

    y_pred = KMeans(n_clusters=3, random_state=9).fit_predict(X)
    plt.scatter(X[:, 0], X[:, 1], c=y_pred)
    plt.title('K-means算法进行聚类处理')
    plt.show()

    y_pred = DBSCAN().fit_predict(X)
    plt.scatter(X[:, 0], X[:, 1], c=y_pred)
    plt.title('默认参数密度聚类')
    plt.show()

    y_pred = DBSCAN(eps=0.08, min_samples=3).fit_predict(X)  # eps = 0.08 半径, min_samples=3样本数量
    plt.scatter(X[:, 0], X[:, 1], c=y_pred)
    plt.title('设置参数的密度聚类')
    plt.show()
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

【Linux】生产者消费者

生产者消费者 生产者消费者问题概述 生产者/消费者问题,也被称作有限缓冲问题。可以描述为:两个或者更多的线程共享同一个缓冲 区,其中一个或多个线程作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个线程作为“消费者”…

优先级队列--堆的应用(堆排序与TopK问题)

堆排序:比较方式为小于建大堆 priority_queue(Iterator first, Iterator last): _con(first, last) // 1、使用vector的区间构造函数来初始化_con{// 2、建堆:从完全二叉树的最后一个非叶子结点来进行向下调整for (int i (size() - 2) / 2; i > 0; i…

2023真无线蓝牙耳机怎么选?值得入手的蓝牙耳机推荐

蓝牙耳机作为近几年备受人们欢迎的数码产品,很多人都想买到一款适合自己的蓝牙耳机。但,随着蓝牙耳机的快速发展,蓝牙耳机市场充斥着各种机型,它们有着不同的性能、价格、外观等。所以,不少人都有一个疑惑,…

玩转 MySQL Shell 沙盒实例

什么是沙盒实例? 沙盒实例仅适用于出于测试目的在本地计算机上部署和运行,可以与 InnoDB Cluster 、 InnoDB ClusterSet 和 InnoDB ReplicaSet 一起工作。 如何使用部署沙盒的 API 函数? 语法dba.deploySandboxInstance(port[, options])解…

Mybatis学习笔记(一)

什么是框架? 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率 三层架构 表现层:用于展示数…

慕尼黑工业大学开源含四季的数据集:用于自动驾驶的视觉长期定位

以下内容来自[从零开始机器人SLAM知识星球] 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# #开源数据集# 4Seasons: Benchmarking Visual SLAM and Long-Term Localization for Autonomous Driving in Challenging Conditions 地址:https:/…

LeetCode[295]数据流的中位数

难度:困难题目:中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。描述:实现 MedianFinder 类:…

工信部及多地政府联合阿里健康在全国展开防疫保供专项行动

为了切实服务好百姓的购药需求,在工信部和各地政府的指导下,12月疫情政策调整以来,阿里健康已先后在全国20多个省市及地区配合药品物资精准投放工作,为各地居民重点供退热药、N95口罩等紧缺药品和物资,尽全力打好药品保…

Android系统定制开发过程快速查找定位分析代码的方法

推荐阅读 ​Android系统开发过程快速查找定位代码的方法 Android10以上系统定制Root权限(隐藏Root权限) 商务合作 2023年招聘 2023年逆向分析资料汇总 Android系统开发过程,经常需要进行文件查找、代码查找,常用find和grep查找命令 1.find命令 根据文…

短短六年时间冲到二奢品类第一,妃鱼如何做到的?

随着消费需求不断增长,二手奢侈品市场近五年来快速向规模化、平台化发展,妃鱼、红布林、胖虎等二奢电商品牌迅速崛起,成为风头劲胜的网红。国泰君安研究报告显示,中国闲置高端消费品零售市场规模已从2016年162亿元增长至2020年的5…

Vue js混淆加密 webpack-obfuscator

公司要求加密混淆js 之前 是用的glifyjs-webpack-plugin ,感觉不行。 然后使用了webpack-obfuscator 非常nice~,除了打包出来体积会有点大,浏览的网页会变慢,选择最低是就还好, 有多个条件属性可以选择, 可以选择高度混…

networkx学习(三) 随机网络

networkx学习(三) 随机网络 1.规则网络 2.随机网络的生成算法 第一种:G(N,L) import random import itertoolsdef GNL(N, L):G = nx.Graph()G.

硬盘数据如何恢复?电脑硬盘资料恢复,方法就是这么简单!

硬盘作为重要的存储设备,里面保存的数据是很重要的。日常生活和工作中,硬盘发生数据丢失也是很常见的事情,比如:误删重要文件并清空了回收站、文件打不开提示格式化、分区变成RAW格式、电脑重新分区等。各种数据丢失原因数不胜数。…

卷积神经网络-cnn和lstm

文章目录1. 卷积神经网络1.1 卷积神经网络的基础1.2 卷积神经网络和传统的网络的区别1.3 卷积的作用1.3.1 图像颜色通道1.3.2 卷积的次数1.4 卷积层涉及的参数1.4.1 滑动窗口的步长1.4.2 卷积核的大小1.4.3 边缘填充1.4.4 卷积核的个数1.4.5 卷积参数共享1.5 池化层1.6 整体网络…

如何在Microsoft Word设置导航窗格以重新排列页面

本文包括使用导航窗格和复制粘贴在Microsoft Word 2019、2016和Office 365中移动页面的说明。 Microsoft Word不会将文档视为单独页面的集合,而是将其视为一个长页面。因此,重新排列Word文档可能会很复杂。在Word中移动页面的一种更简单的方法是使用导航窗格。 注意:要在导…

Vue 3 桌面应用开发(文末附视频)

在正式开始之前,我想先直接“输出”一些背景信息,既能阐明我的观点,也希望可以坚定你学习本小册的决心。 首先,桌面应用开发在未来一定会大放异彩,桌面应用相对于移动应用来说优势非常明显(交互区域更大、…

TCP/IP网络编程(3)——地址族与数据序列

文章目录第 3 章 地址族与数据序列3.1 分配给套接字的 IP 地址与端口号3.1.1 网络地址(Internet Address)3.1.2 网络地址分类与主机地址边界3.1.3 用于区分套接字的端口号3.2 地址信息的表示3.2.1 表示 IPV4 地址的结构体3.2.2 结构体 sockaddr_in 的成员…

王道操作系统笔记(二)———— 进程与线程

文章目录一、进程的概念和特征1.1 进程的概念1.2 进程的组成1.3 进程的特征1.4 进程的状态与转换1.5 进程控制1.6 进程的通信1.6.1 共享存储1.6.2 消息传递1.6.3 管道通信1.7 父进程与子进程二、线程概念和多线程模型2.1 线程的概念2.2 线程的属性2.3 线程的实现方式2.4 多线程…

C#【必备技能篇】DatagridView添加行时,设置行标题单元格的值为行数

文章目录1、DatagridView添加行的代码2、方法一:【每次添加行都重新刷新了全部的行数,不推荐】3、方法二:【只有一个DatagridView时,推荐此方法】4、方法三:【通用方法,多个DatagridView都有这个需求时&…

利用 Burp Suite 进行密码爆破

利用 Burp Suite 进行密码爆破1.Intruder 功能介绍2.攻击类型3.实战4.验证码爆破1.Intruder 功能介绍 使用 BP 工具的 Intruder 模块高度可配置,可以对目标网站进行密码爆破,一般被用于网站的安全渗透测试场景 BP 工具的 Intruder 模块包含几个功能标签…