干货 | 基于在线监控数据的非现场监管问题识别模型研究
以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。
我们汇报的题目是基于在线监控数据的非现场监管问题识别模型研究,我们的汇报将从五个部分展开。首先是项目背景说明,该项目是为了遏制企业逃避监管行为的发生,快速识别企业可能存在的数据篡改和数据造假的行为,提高识别企业这些行为的效率和准确度。
我们的项目从两个方向进行展开。第一个方向是语义识别,上图展现了我们的整体进度和实施情况,目前已经按照项目前期计划全部完成。首先,我们根据老师给的文本内容划分了水污染、大气污染和其他三种类型,确定了其中弄虚造假的行为,对所有的案例都进行了人工标注和分类并且从这些案例文本中提取了特征作为关键词。
为了提高准确率,我们采用了两种方法,第一种是基于词典匹配的文本分类模型,建立了阴性词典和阳性词典进行全局的精确匹配。建立词典后,我们发现假阴性和假阳性比例较高,因此对词库进行了优化,对数值类和短句类案例文本进行了处理,最后达到了80%的准确率。方法二使用了大语言模型,我们通过调研现有开源的对话类模型可能存在数据泄露及API无法调用的问题,所以我们最后采用了基于RoBERTa的文本分类模型,在我们标注的案例上进行了训练和微调。
接下来是违规行为监控模型。上图是我们模型流程的整体设计,首先对数据进行预处理,通过数理统计模型对整合后污染物排放数据与用电数据进行异常时段分析,并得出异常企业清单进行展示,降低后续的人工筛选负担。机器学习模型主要是对单企业数据异常筛选起到辅助作用,对部分企业的数据异常识别效果良好。
以下是数据预处理部分。这部分问题在于按照原有构想,项目实现的方案为建立污染物排口、排放量及用电数据的一一对应关系,通过识别二者相关性来识别企业是否有弄虚作假现象。但到实际情况中,是无法获得污染物排口到具体用电设备的映射关系的,因此需要对数据进行进一步处理。
我们对数据进行聚合提取,包括对一些污染物排口及用电设备不同类型进行求和处理然后提取出相应的表格。为了便于后续数据统计分析和机器学习,我们对数据进行整合,最终提取出如下的表,每一行是一个样本数据,包括日期、用电量以及各个污染物的数据。
之后首先进行了可视化分析,对单个企业一年内对应的用电与污染数据进行了综合时序分析。结合先验知识,对时序图的部分时段进行了异常特征提取,作为后续判断异常时段的准则。
对于异常判断的算法,我们使用了一种基于滑动窗口的无监督学习方法,判断企业用电数据与污染物排放数据是否出现异常状态。该算法的优点在于其采用无监督的方法对企业数据进行判断,可以不依赖于历史异常规则数据库,从而根据企业需求的特定异常状态进行针对性分析判断,提高准确性。该方法将污染物判断与用电数据多维时间序列全局点异常检测放缩到一个窗口的局部异常检测,并高度利用弄虚作假场景下的相关实际需求完成知识驱动,从而达成目标。
具体的准则就是用电数据正常但污染物排放数据出现连续多日降低,具体的算法是,数据要满足产污端用电数据近d2天数据都大于等于前d1天数据平均值,关键污染物数据中超过m种数据近d2天数据都小于前d1一天数据平均值,此时可以认为用电数据保持正常波动但污染物数据连续多日骤降,认为出现异常。
对于空气污染排放数据中的十余种排放种类,选取了“二氧化硫”、“废气流量”、“氮氧化物”,“非甲烷总烃”四种污染物排放数据作为关键污染物数据进行分析,从企业提供的测试用例中五十余家企业的21234段时间窗口中,最终筛选分析得到了16段时间的异常数据。
之后是机器学习的算法,主要有以下几点问题,不同企业得到的模型泛化性非常差,不同企业污染物种类差异很大,用电量和污染物之间的关系也有很大不同;虽然数据整体量很大,但这是基于多家企业的,实际上单企业一年半的时间跨度只有500条数据;由于第一部分提供的数据量较小,对于同一家公司来说,第一部分提供的标签数据量不足以识别出第二部分的所有异常;实际测试下来还有一部分预测效果并不佳。
我们讨论得出了一些解决方案。首先,在数据预处理和整合阶段,区别于数理统计分析可以针对所有企业,机器学习模型只针对某一家公司构建。第二点,我们经过讨论认定当天用电量基本只与当天污染物排放有关,因此没有采用常见的时序建模,而是采用了常规机器学习模型。我们选定预测用电量这种方法进行异常识别。选取“治污设备总费率”作为标签,使用其他污染物数据以及“产污设备总费率”去预测,当测试集实际偏差大于验证集RMSE时,认为测试集当天数据出现异常;另一方面,我们没有根据精确调参,而是在初步调参的基础上搭建机器学习训练的框架,方便企业后续得到更多优质数据集后训练优质模型。最后,我们使用一个默认的随机森林模型对各个公司数据进行一个初步判断,当初步训练验证集RMSE值较小时认为该企业数据适合机器学习模型。由于不同企业用电量数值波动范围不同,当我们用Ta=RMSE/Xmax这个参数来对比各企业的效果,最终结合具体数据的图像,设定Ta<0.1为企业可考虑使用上述机器学习方法进行异常初步判断的标准,该值越小,识别精确度越高。
上图展示了某公司的部分模型预测数据。从上图可以发现,产污设备总费率以及污染物之间有很明显的一一对应的相关关系,这种数据用机器学习训练的模型Ta值等于0.05,是比较小的,当Ta等于0.2时,该方法效果变得比较差,污染物与产污设备总费率之间也难以看出一一对应的相关关系。
对于效果好的公司数据,我们选择三种机器学习模型进行建模,分别是随机森林、XGboost和MLP,对三种模型分别采用网格搜索法进行初步调参。考虑到目前企业单家公司收集的数据集较少,且无法经过人为筛选,第一部分提供的标签异常量不足,所以我们并未针对现有数据进行进一步调参,而是搭建了用于调参的框架,方便企业后续得到优质数据集后再训练模型。如下图所示,Ta等于0.05公司带异常的测试数据,可以看到2月23号有一个反常的治污用电量增量,通过模型就可以直接识别出来。
最后是项目总结部分。下图分别展示了我们在语义识别和违规监控方向上的成果及未来改进方向。
以上是本次汇报的全部内容。
编辑:文婧
校对:林亦霖
相关文章:

干货 | 基于在线监控数据的非现场监管问题识别模型研究
以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 我们汇报的题目是基于在线监控数据的非现场监管问题识别模型研究,我们的汇报将从五个部分展开。首先是项目背景说明,该项目是为了遏制企业逃避监管行为的发生…...

Spring Cloud Alibaba Gateway 简单使用
文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…...

两种fifo实现方式的差异
减少数据通路翻转来降低功耗: 以FIFO (当容量较小而使用寄存器作为存储部分)设计为例,虽然理论上可以使用比较简单的数据表项逐次移位的方式,实现FIFO 的先入先出功能,但是却应该使用维护读写指针的方式(数据表项寄存器则不用移位)实现先入先出的功能。因为数据表项逐次…...

孜然单授权系统V1.0[免费使用]
您还在为授权系统用哪家而发愁?孜然单授权系统为您解决苦恼,本系统永久免费。 是的,还是那个孜然,消失了一年不是跑路了是没有空,但是这些都是无关紧要的,为大家带来的孜然单授权系统至上我最高的诚意&…...

kubernetes问题(一)-异常事件
1 pod状态处于Evicted 0/1 现象: 1)kubectl get events发现“failed to garbage collect required amount of images”。 2)同时磁盘空间不足的节点有大量pod处于Evicted 0/1状态,但并未进行重新调度。 原因描述: …...

Android Jetpack组件架构 :LiveData的使用和原理
Android Jetpack组件架构: LiveDate的使用和原理 导言 继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件,所谓LiveDate字面意思上就是有声明的数据,当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者,这样…...

【学习笔记】Prufer序列
Prufer序列 起源于对 C a y l e y Cayley Cayley定理的证明,但是其功能远不止于此 现在考虑将一棵n个节点的树与一个长度为n-2的prufer序列构造对应关系 T r e e − > P r u f e r : Tree->Prufer: Tree−>Prufer: ①从树上选择编号最小的叶子节点&#x…...

由于找不到msvcr110.dll的5种解决方法
在使用电脑的过程中,我们可能会遇到一些问题,比如打开软件时提示找不到 msvcr110.dll 文件丢失。这通常意味着该文件已被删除或损坏,导致程序无法正常运行。本文将介绍几种解决方案,帮助您解决这个问题。 首先,我们需…...

最长连续递增子序列
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。 输入格式: 输入第1行给出正整数n(≤105);第2行给出n个整数,…...

Java学习星球,十月集训,五大赛道(文末送书)
目录 什么是知识星球?我的知识星球能为你提供什么?专属专栏《Java基础教程系列》内容概览:《Java高并发编程实战》、《MySQL 基础教程系列》内容概览:《微服务》、《Redis中间件》、《Dubbo高手之路》、《华为OD机试》内容概览&am…...

前端VUE---JS实现数据的模糊搜索
实现背景 因为后端实现人员列表返回,每次返回的数据量在100以内,要求前端自己进行模糊搜索 页面实现 因为是实时更新数据的,就不需要搜索和重置按钮了 代码 HTML <el-dialogtitle"团队人员详情":visible.sync"centerDi…...

Android Studio 的android.jar文件在哪儿
一般在:C:\Users\admin\AppData\Local\Android\Sdk\platforms\android-33下(不一定是33,这个得看你Android Studio->app->builde.gradle的targetSdk是多少) 怎么找: 1.打开Android Studio 粘贴地址后࿰…...

Elasticsearch 部署学习
文章目录 Elasticsearch 部署学习1. 单节点部署 elasticsearch1.1 部署 jdk1.2 下载 elasticsearch1.3 上传文件并修改配置文件1.4 启动1.5 问题总结1.6 浏览器验证 2. 集群部署 elasticsearch3. 常用命令4. Elasticsearch kibana安装:one: 参考部署文档:two: 下载对应版本的安…...

nodejs 如何在npm发布自己的包 <记录>
一、包结构 必要结构: 一个包对应一个文件夹(文件夹名不是包名,但最好与包名保持一致,包名以package.json中的name为主)包的入口文件index.js包的配置文件package.json包的说明文档README.md 二、需要说明的文件 1.配…...

移植RTOS的大体思路
最首先当然是去官网看看是不是已经支持目标芯片啦,没有的话,就需要自己手动移植了 获取源码 一般可以从rtos官网或者GitHub上获取源码 确认源码结构 这种有官方文档说明,需要修改的一般都是BSP和libcpu相关文件夹中的内容 CPU架构移植 …...

FPGA到底是什么?
首先只是凭自己浅略的了解,FPGA好像也是涉及到了开发板,单片机之类的东西,和嵌入式十分相似,但是比嵌入式更高级的东西。 肯定有很多小伙伴如我一样,只是听说过FPGA,听别人说的传呼其神,那么它到…...

算法-单词搜索 II
算法-单词搜索 II 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 DFS 2.1 解题思路 每个格子往上下左右四个方向DFS,拼接后的单词如果在答案集中&…...

怒刷LeetCode的第15天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:哈希表双向链表 方法二:TreeMap 方法三:双哈希表 第二题 题目来源 题目内容 解决方法 方法一:二分查找 方法二:线性搜索 方法三:Arrays类的b…...

Android开发MVP架构记录
Android开发MVP架构记录 安卓的MVP(Model-View-Presenter)架构是一种常见的软件设计模式,用于帮助开发者组织和分离应用程序的不同组成部分。MVP架构的目标是将应用程序的业务逻辑(Presenter)、用户界面(V…...

day2作业
1,输入两个数,完成两个数的加减乘除 #输入两个数,完成两个数的加减乘除 num1int(input("请输入第一个数:")) num2int(input("请输入第二个数:")) print(str(num1)str(num2)str(num1num2)) print(str(num1)-str(num2)str…...

Python办公自动化之Word
Python操作Word 1、Python操作Word概述2、写入Word2.1、标题2.2、章节与段落2.3、字体与引用2.4、项目列表2.5、分页2.6、表格2.7、图片3、读取Word3.1、读取文档3.2、读取表格4、将Word表格保存到Excel5、格式转换5.1、Doc转Docx5.2、Word转PDF1、Python操作Word概述 python-d…...

力扣26:删除有序数组中的重复项
26. 删除有序数组中的重复项 - 力扣(LeetCode) 题目: 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 …...
基于C#的AE二次开发之IQueryFilter接口、ISpatialFilter接口、IQueryDef 接口的查询接口的介绍
一、开发环境 开发环境为ArcGIS Engine 10.2与Visual studio2010。在使用ArcEngine查询进行查询的时候主要使用三种查询接口IQueryFilter(属性查询) 、ISpatialFilter(空间查询) 、IQueryDef (多表查询) 那…...

Oracle 11g RAC部署笔记
搭了三次才搭好,要记录一下。 1. Oracle 11g RAC部署的相关步骤以及需要的包,可以参考这里。 Oracle 11g RAC部署_12006142的技术博客_51CTO博客Oracle 11g RAC部署,Oracle11gRAC部署操作环境:CentOS7.4Oracle11.2.0.4一、主机网…...

Redis 字符串操作实战(全)
目录 SET 存入键值对 SETNX SETEX SETBIT SETRANGE MSET 批量存入键值对 MSETNX PSETEX BITCOUNT 计算值中1的数量 BITOP 与或非异或操作 DECR 减1 DECRBY APPEND 追加 INCR 自增 INCRBY INCRBYFLOAT GET 取值 GETBIT GETRANGE GETSET 取旧值赋新值 MGET …...

python LeetCode 88 刷题记录
题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并…...

基于 Socket 网络编程
基于 Socket 网络编程 前言一、基于Socket的网络通信传输(传输层)二、UDP 的数据报套接字编程1、UDP 套接字编程 API2、使用 UDP Socket 实现简单通信 三、TCP 流套接字编程1、TCP 流套接字编程 API2、使用 TCP Socket 实现简单通信3、使用 Tcp 协议进行…...

关于C#.Net网页跳转的7种方法
一、目前在ASP.NET中页面传值共有这么几种方式:1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。 跳转向新的页面,原窗口被代…...

使用acme.sh申请免费ssl证书(Cloudflare方式API自动验证增加DNS Record到期证书到期自动重新申请)
下载acme.sh curl https://get.acme.sh | sh -s emailmyexample.comcd ~/.acme.sh/获取Cloudflare密钥 Preferences | Cloudflare 登录选择账户详情选择API Token选择创建令牌选择区域DNS模板,并设置编辑写入权限生成并复制令牌备用回到首页概览界面下部获取账号…...

【C语言】进阶——结构体+枚举+联合
①前言: 在之前【C语言】初阶——结构体 ,简单介绍了结构体。而C语言中结构体的内容还有更深层次的内容。 一.结构体 结构体(struct)是由一系列具有相同类型或不同类型的数据项构成的数据集合,这些数据项称为结构体的成员。 1.结构体的声明 …...