DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

您所在的位置:网站首页 实时数据处理方案 DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

2023-03-11 06:11| 来源: 网络整理| 查看: 265

数据异常率预警在工业安全生产中是一项重要工作,对于监控生产过程的稳定性,保障生产数据的有效性,维护生产设备的可靠性具有重要意义。随着大数据技术在生产领域的深入应用,基于机器学习的智能预警已经成为各大生产企业进行生产数据异常率预警的一种有效解决方案。

1. 概要

本教程基于一个典型的物联网企业生产场景,利用 DolphinDB 内置的机器学习框架中的 KNN(K-Nearest Neighbor,最经典和最简单的有监督学习方法之一)算法构建回归模型,对实时数据异常率预警过程进行模拟。

2. 机器学习在物联网中的应用场景2.1 工业物联网智能运维

随着整个物联网系统数据规模的急剧膨胀,以及服务类型的日趋多样化、复杂化,基于人为指定规则的手工运维和在此基础上加入自动化脚本实现的自动化运维已无法满足大规模的运维需求。

为解决人为指定规则带来的弊端,随着智能时代的到来,智能运维的概念逐渐浮出水面。与人为指定规则不同的是,智能运维强调利用机器学习的算法从海量运维数据中总结规则,打破了人为指定规则的局限性。

简而言之,智能运维在自动化运维的基础上加入了机器学习分析数据的环节,监测系统采集运维日志数据,机器学习根据日志数据做出分析并生成决策,最后指挥自动化脚本去执行决策,从而达到运维系统的整体目标。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_机器学习

2.2 工业设备使用寿命预测

工业设备的损耗和故障在长期运作过程中是难以避免的,如果不能有效监控设备损耗情况的数据变化和应对可能发生的故障,将造成生产中断、经济损失,甚至危害公众安全,造成人员伤亡。如果能对设备故障进行预警并提前制定应对方案,将保障设备可靠性和安全性,提高生产效率,实现利益最大化。

设备剩余使用寿命预测旨在根据设备的运行状态数据,结合设备的退化机理,利用人工智能技术对设备未来的故障发生时段进行预测。若能提前预测出设备的剩余使用寿命,在设备故障发生前进行预警,就能帮助维护人员及早制定出最优应对方案。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_DolphinDB_02

2.3 工业生产异常数据预警

异常数据预警在工业生产中是一个相当重要的环节,已有越来越多的企业将其纳入生产安全保障过程中的一个必要环节。其对于监控设备的生产环境,维护生产数据的价值性,提高生产效率具有重要意义。

异常数据预警具体实现:通过采集历史数据,利用自定算法或机器学习算法分析历史数据特征并预测未来数据,最后根据特定的预警规则对未来数据进行预警判断。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_KNN_03

3.KNN3.1 KNN 介绍

KNN ( K-NearestNeighbor ) 算法又叫 K 邻近算法,是一种比较简单的机器学习算法。该算法是一种监督学习算法,即可以用于分类任务,也可以用于回归任务。

监督学习算法:算法的输入数据带有标签。分类任务:算法的结果为一个决策面,输出数据为离散数据。回归任务:算法的结果为一条拟合线,输出数据为连续数据。

KNN 分类算法思路:设置近邻个数 K,如果一个样本在特征空间中的 K 个邻近样本中的大多数属于某一个类别,则该样本也属于这个类别。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_物联网_04

KNN 回归算法思路:设置近邻个数 K,计算一个样本在特征空间中的 K 个近邻样本的平均值,作为该样本的预测值。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_KNN_05

3.2 KNN 优势模型简单,无需过多调参就可以得到一个不错的性能。精度高。对异常值不敏感。无数据输入假定。3.3 K 值3.3.1 评估指标

对于回归任务,这里选择一个常用的回归评估指标:根均方误差(Root Mean Square Error, RMSE)。

RMSE 指标可以评价数据的变化程度,RMSE 越小,说明模型的拟合实验数据能力越强。

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_时序数据库_06

3.3.2 K 值的选择

K 值选择过小,容易造成模型过拟合;K值选择过大,容易造成模型欠拟合。

RMSE 越小,模型的拟合效果越好。本场景经过多次实验,最终实验的 K 值选择为200。

K 值

平均 RMSE

1

1.34

5

1.16

10

1.12

50

1.18

100

1.07

200

1.00

300

1.32

500

1.56

1000

1.62

4. 解决方案

DolphinDB 是由浙江智臾科技有限公司研发的一款高性能分布式时序数据库,集成了功能强大的编程语言和高容量高速度的流数据分析系统。针对用户对工业生产中异常数据预警的需求,本文提供了一个完整的解决方案,帮助用户掌握如何使用 DolphinDB 预警异常数据,以便更好地保障工业生产安全。

4.1 场景描述

生产场景为一个大型风电厂的发电量监控场景,风机监控人员需要实时监控发电量的平稳性,当检测到风机发电量出现异常时,监控人员需要远程实时调整风机参数以维持发电量的平稳。

为提前感知发电异常及时调整风机参数,风机工厂现决定利用影响风机发电的主要因素的监测数据,对未来一段时间的风机发电量进行预测,并将未来发电量与当前发电量进行异常比对。当异常率超过一定阈值时向风机监控人员远程报警。为了便于理解 DolphinDB 如何实现机器学习,本章简化了复杂的真实场景,只使用5个指标:风速、湿度、气压、温度和设备使用寿命,来进行指代。同时,由于生产数据的敏感性,进行了 DolphinDB 数据仿真操作,使用模拟数据代替真实记录集。

设备数目:100台时间单位:毫秒级 (1 ms = 0.001 s)单台设备采集数据传输量:1条/ms总采集数据传输量:10万条/s

数据形式:

列名

列类型

实例

说明

time

TIMESTAMP

2023.01.08 21:21:56.744

时间

deviceCode

INT

5

设备号

wind

DOUBLE

25.0

风速

humidity

DOUBLE

55.0

湿度

air_pressure

DOUBLE

1.01325

气压

temperature

DOUBLE

75.0

温度

life

INT

3

设备使用寿命

propertyValue

INT

65

监测值

4.2 架构方案

由于真实生产场景的私密性和真实生产数据的敏感性,以及为了方便理解,除实验设置的数据生产场景有所简化外,其余场景都将与真实生产场景保持一致。

当生产任务开启后,模型预测任务与预警计算任务将同步开启。运维人员可登录Grafana,实时监控异常情况,并根据预警结果实时调整风机设备参数。

4.2.1 模型预测场景

模型预测场景流程设计如下:

每10秒钟用前10秒采集到的100万条数据,训练出一个 KNN 回归模型。用前10秒的100万条数据,进行聚合计算,将10秒产生的100万条数据聚合成1秒产生的10万条数据。用 KNN 模型 对聚合数据(10万条)进行预测,预测未来第10s的数据(10万条)。将未来第10s的数据(10万条)与10s聚合的数据(10万条)输入预警模块进行预警计算。

4.2.2 预警计算场景

预警计算场景流程设计如下:

未来第10s的数据(10万条)与10s聚合的数据(10万条)进行比对,值差异大于20% (即 ABS(预测值-真实值)/真实值大于0.2 )列为异常数据。统计异常率(异常数据的比例):异常数据数目/比对总数(10w) 。设定阈值0.215,当异常率超过阈值0.215时,进行报警。

5.实时异常率预警5.1 处理流程

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警_物联网_07

5.2 实现细节5.2.1 实时数据模拟

用户可以利用下方代码完成实时生产数据的模拟。可以通过调整变量 hour ,自定义生产多少小时数据。

由于数据为模拟数据,为了保证模型能够完成数据拟合,这里提前设定监测值与 5 个影响因素的关系为线性关系,以确保回归模型拟合的关系能够收敛。

另外,为了模拟模型生成的预测值与真实值存在一定差异,方便进行异常比对,因此在代码中,对线性参数进行了随机化,以降低模型的准确率。用户真实场景中可自行调整参数方差大小,以控制模型准确率。简言之,方差越小,模型拟合越高,模型精度越高。

orgColNames= `time`deviceCode`wind`humidity`air_pressure`temperature`life`propertyValueorgColTypes = [TIMESTAMP,INT,DOUBLE,DOUBLE,DOUBLE,DOUBLE,INT,INT]enableTableShareAndPersistence(table = streamTable(10000:0, orgColNames,orgColTypes), tableName=`dataTable, cacheSize = 6000000)

def send_data(begintime,endtime,hour,devices_number,rate,mutable dest){

btime=timestamp(begintime) do{ seconds = int(60*60*hour) //定义需要压入的批次,每秒钟1批

n = devices_number * rate* 1 // 每秒钟生产10万条数据 time =sort(take(btime+(0..(1000-1)),n)) // deviceCode = take(1..devices_number,n) x1 = randNormal(25,2,n) x2 = randNormal(55,5,n) x3 = randNormal(1.01325,0.00001,n) x4 = randNormal(75,5,n) x5 = int(randNormal(10,3,n)) b1 = randNormal(0.4,0.05,n) //方差0.05 降低模型准确率 b2 = randNormal(0.3,0.05,n) b3 = randNormal(0.2,0.05,n) b4 = randNormal(0.09,0.05,n) b5 = randNormal(0.01,0.001,n) bias = randNormal(5,1,n) propertyValue = int(b1*x1*10 + b2*x2*2 + b3*x3*1000 + b4*x4 + b5*x5 +bias)

table_ps = table(time,deviceCode,x1,x2,x3,x4,x5,propertyValue) dest.append!(table_ps)

btime=btime+1000 etime=timestamp(now()) timediff=btime-etime if(timediff>0){sleep(timediff)} }while(btime



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3