你看这景,美不美?
山脉郁郁葱葱,湖面宛如绿松石。
此情此景让人忍不住吟唱:真是一种勃勃生机,万物竞发的境界(奉化口音)。
然而这宝石蓝湖面,其实质则是水体富营养化导致的蓝藻爆发。
凑近看,湖面可能是这样的:
漂浮死鱼的画面就不放了,怕你看见犯恶心。
所谓水体富营养化,简单说就是水中氮、磷等物质含量过多引起的水污染现象。藻类及其它浮游生物疯狂生长,使水中溶解氧下降,植物和鱼类被“憋死”。
藻类勃勃生机,其它动植物万籁俱寂。
既然污染的原因明确,如何防治就也清楚了——防治营养物质过多流入湖泊、河流。
国家《城镇污水处理厂污染物排放标准》就对城市污水处理厂出水的氮磷含量做了严格要求。
为保证排放达标,就需要及时知道处理厂出水中各物质浓度信息。
目前常用的检测方法是化学法,例如对于总氮含量,一般用“碱性过硫酸钾-消解紫外分光光度法”。先采集样品,再消解水中有机氮,然后过滤分离,最后测总氮含量。
结果虽然精准,但费时费力,时效性差。等实验室检测出结果,有可能超标水已经排放好一阵了。
但基于机器学习的智能检测方法,就可大大弥补化学法的短板,做到实时监测,实时预警。
下面基于数据建模软件DTEmpower以及北京某污水处理厂的2万多条数据,展示如何零编码实现智能检测。
我们想摆脱时效性差的化学检测法,利用数据法快速预测“出水总氮”的值。首先就要分析哪些因素可能会影响出水总氮。注意,是“可能会”。
出水总氮的影响因素可分为两大类,一类是进水数据,另一类是污水处理过程数据。两类加一起包含的可能影响因素有18个。
即对于下面这个函数,自变量共有18个。
但18个变量如何影响出水总氮,哪个变量影响更大,不知道。
数据建模的最终目的,就是生成这个函数。你输入自变量,快速给出因变量,即出水总氮。
数据建模通常包括三大步:数据预处理、变量分析、模型训练。
数据预处理的目的有两个:处理缺失值和异常值。
生产一线采集的数据往往不能直接用,容易存在空值或者明显不正常的值。
比如一组数据正常应该有18个变量,但某个传感器走神,最后只输出了16个,就出现了缺失值。
再比如城市污水的PH值正常范围应在0~14之间,但某个传感器抽风,最后输出个24,就出现了异常值。
对缺失值,DTEmpower的空值处理工具可按需对空值进行删除或补全。
对异常值,DTEmpower的小提琴图等可视化图表工具,可直观展示数据分布特征,辅助异常值清理。
数据清洗模块AIOD还可调试风险阈值,自动筛除异常值。
变量分析的主要目的是数据降维,提高最终的建模精度。
前面我们说了,“出水总氮”的可能影响因素有18个。但真正的自变量很可能少于18个,经过数据降维就能剔除那些“假自变量”。
利用DTEmpower的重要性分析模块,可对变量重要性进行排名,协助剔除不重要的变量。
在数据降维的基础上,建模时可能还会用到“特征生成”功能——将已有的几个自变量结合,生成新的变量。
至于用哪几个变量结合,如何结合,就要结合行业经验了。在数据建模过程中,前人总结的宝贵行业经验也要尽量利用,别浪费。
对于该案例,“进水负荷(load)”就是行业经验,它和进水流量等三个参数有关。
DTEmpower的自定义脚本功能可输入的表达式,生成新的变量“进水负荷”。
同时根据行业经验,在不同的“进水负荷”区间,污水处理系统会对应不同的工况。因此在数据建模时,也考虑根据load的取值范围,分段训练模型。
数据预处理和变量分析后,来到正式的模型训练环节。
对“进水负荷”load的不同取值范围,分别用MLP、AIAgent和GBDT三种算法做模型训练,然后做模型对比。
下图为DTEmpower的工程界面,零编码拖拽式建模,相当人性化。
在模型对比时,通常看R2、MAPE和MSE这几个参数。其中R2最常用,反映模型的拟合程度。取值范围0~1,越接近1表示精度越高。
对比结果显示,在中负荷工况下,MLP算法训练出的模型精度最高。在高和低负荷下,则是AIAgent算法训练出的模型精度更高。
至此,我们就得到了一个分段函数。根据进水负荷的取值范围,采用不同的模型来预测出水总氮,实时输出结果实时预警。一旦发现出水总氮超标,第一时间拉闸停水,水安全大大提升。
不止水处理,很多行业都有大量来自生产一线的数据。这些数据不加以利用,属实可惜,不妨用建模工具DTEmpower一试。
欢迎前往天洑官网尝试无门槛无成本,但很可能带给你意想不到的惊喜