设备的故障诊断方法可以按照诊断依据分为三种:基于机理模型的方法,基于数据驱动的方法,基于知识工程的方法。本文将采用基于数据驱动的方法中的基于分类的方法进行故障模型的构建。详细设计见md文件。
完整代码:https://download.csdn.net/download/pythonyanyan/87430582
1 绪论
1.1 选题背景和意义
在计算机行业还未能发展到如今这般规模的时候,人们只能选择抽样的数据、局部的数据和片面的数据,纯粹靠经验、理论、假设和价值观去发现、理解未知领域的规律。而这样做的结果,就是对真实现象的抽象归纳与演绎推理,这就不可避免的包含了各种主观上的因素。同时由于样本的局部性,很多推理归纳出来的结果与实际现象具有极大的偏差。
而如今的所谓大数据,通常都指数据量在“太字节(TB)”即 2 的 40 次方以上,一般情况下难以收集、存储、管理以及分析的数据。而且随着科技进步,大数据对于“大”的含义还在不断地刷新。但是大数据不仅仅只关乎于数据量的大小,而且还与其他的因素有着千丝万缕的关系。
大数据其真正的意义在于:我们可以通过各式各样的传感器,实现与真实世界更加紧密、准确的连接。在得到实时数据后进行整合、挖掘、云计算,去逐步的逼近真实世界,挖掘出那些未曾被我们发现的隐藏规律,建立更加符合真实的数学模型,这是大数据的魅力所在。而在大数据的庞大篇幅中,工业大数据占据着相当重要的地位。工业大数据是智能制造的关键技术,它是联通物理世界与信息世界的桥梁,是推动生产型制造向服务型制造转型的动力之一[2]。
而在工业领域,工业大数据的一大发展方向就是故障诊断,数据的产生和记录贯穿于一台设备从投入生产到损耗的全过程,而通过一定数量的智能传感器,我们可以监控某些生产设备的所有信息,使设备在生产线的实时状态远程监控成为可能,这一方面改善了工作人员的工作环境,另一个更为重要的方面就是提高了设备发生故障或者异常时候的反应速度以及排除故障的效率。
伴随着工业生产水平发展的突飞猛进,工业设备精度越来越高,结构越来越复杂,所以在车间内很多设备的故障都未能得到及时的发现和解决,这一点很容易对工厂造成巨大的损失.由于设备愈加复杂所导致的设备故障信息数据呈现指数型增长,而运行时所产生的海量数据,采用传统基于机理模型的方式已经很难负载如此巨量规模的数据分析,进行故障诊断了。
此外,工业设备结构极其复杂,不同模块之间可能会产生故障的交集,人工分析或者是传统的先验知识故障检测手段已经无法准确、迅速的完成故障的诊断。因此,结合工业大数据对工业设备所产生的海量数据进行数据挖掘分析建立故障诊断模型,对于提高设备维护效率、迅速有效解决故障、降低维修费用有巨大意义。
1.2 国内外研究现况及发展趋势
1.2.1 国内研究现状
金风科技公司对大量风场的历史故障、异常运行信息进行大数据挖掘与分析,对SCADA(Supervisory Control and Data Acquisition,监控和数据采集系统)数据的提取、清洗、分析,从而得到了关于电机与桨叶的一系列特征曲线与模态数据,建立了多角度的断裂预警模型,成功实现了提前90h的预测性维护,消除了潜在的重大故障隐患,保障了工作人员与设备的安全[3]。南京航空航天大学的张鹏在原有的线性模型基础上进行了大量改进,提出了将卡尔曼滤波器和基于非线性模型相结合的方法,并且将其理论在航空发动机上进行了验证[4]。西安电子科技大学的钟福磊等人在盾构机上建立了基于先验知识与基于数据驱动两种方式的混合模型,并且利用仿真数据进行了验证。南京航空航天大学鲁峰等人对发动机进行了仿真建模并且获得了影响系数矩阵,成功实现了对发动机中的气路故障进行诊断[5]。
1.2.2 国外研究现状
国际权威专家 Frank 将故障诊断的方法总结为三种:基于机理模型的方法、基于数据驱动的方法、基于知识工程的方法[6]。葡萄牙科英布拉大学的 Marco S. Reis 教授和 Geert Gins 在《Industrial Process Monitoring in the Big Data/Industry 4.0 Era: From Detection, to Diagnosis, to Prognosis》一文中提到,过去的重点都是检测,也就是基于机理模型的一种对比当前数据的检测办法,实现高水平的检测速度和强度是过去 IPM 研究的主要重点。在处理新流程时,这是一个必要的步骤,但是随着时间推进,越来越多的因素阻碍了更先进的监控手段的发展[7]。因此为了解决这些障碍与挑战,我们需要找到一种方法可以找到故障根源,也就是我们当今时代的主流过程监测手段:故障诊断。未来的发展方向更是令人心驰神往,故障预检测,能够根据当前的运行数据获取未来一段时间内的设备运行状态预测。
瑞典吕勒奥理工大学的 Lianwei Zhang 开发除了一套专用于大数据检测以及维护的系统以及一种基于自适应核密度的异常检测(Adaptive-KD)方法,在工业场景中具有极大的使用价值。
1.3 主要研究内容
(1) 研究数据挖掘算法,采集数据进行模型构建,并且可以根据新的数据进行模型改进、重构;
(2) 研究关联度计算算法,对故障数据进行适当处理,提高最后得到的故障模型的精度;
(3) 研究机器设备的属性之间的联系,有效的剔除一些对模型精度无益的内容,提高运行效率;
(4) 研究模型的改进方案,如决策树中的“剪枝”方法、连续之离散化算法,对模型进行精简,减少模型构建所消耗的资源。
2 故障诊断的总体设计方案
2.1 故障模型的要求
故障模型应该是基于历史数据构建的,由于我们的模型是基于数据驱动,所以对于机械设备方面的先验知识需求量远小于基于机理模型和基于知识工程的构建方式。另外,我们的模型要能接受新的运行数据,对于数据进行测试,从而进行故障诊断的最终目的。
在精度上,模型的精度应该随着数据的不断完善而改进,构建模型所使用的数据越多,那么我们的模型的泛化程度就越高,对于各种实际情况的解读能力就会进一步提升。另外故障模型的基础是基于工业大数据,对于工业大数据的各个环节都会在具体实现环节中一一对应。
图 1 工业大数据技术架构
2.2 决策树建立故障树模型
2.2.1 信息熵
假设当前样本集 D 中有 N 个样本,而整个样本有 k 个分类,每个分类对应的样本数量为
那么对于每个分类,他们各自占据的信息量(也可以理解为样本分类的频率)为:
结合每一个分类的信息量,则此样本总体的信息熵为:
2.2.2 信息增益
假设当前样本集 D 中有 N 个样本,每个样本都有一些属性,假设我们目前取属性 A 作为我们计算信息增益的属性。
根据属性 A,我们可以用属性 A 的不同取值(假设有 v 种),将整个样本集 D 分为 v 个子样本集
,每个样本子集的样本数为 N,那么每一个样本子集的频率为:
那么该样本集的 A 属性的信息增益即为:
2.2.3 ID3 算法
ID3 是一种以自顶向下递归的方法构造决策树的贪心算法。其决策树的基本生成策略如下:
(1)树以整体样本作为单个节点开始;
(2)如果当前节点中,所有的样本都属于同一类,则该节点成为叶节点,并标记为当前样本的类;
(3)否则,使用前面提到的信息增益作为判断信息,选择信息增益最大的一个属性作,该各个属性值将成为该节点往下进行分支的依据。在这里,我们假设所有的属性都是可分的,即所有的属性都可以在一个离散值集合内取到,如果该属性为连续值,则该属性必须离散化处理[8];
(4) 基于测试属性的每一个属性值创建一个分支,并将该属性值相同的样本划分到该分支对应的样本子集;
(5)使用类似的方法,递归地形成每个分支延伸对应的样本决策树。一旦一个属性出现在一个节点上,就不必在该节点的后代上考虑这个属性。
ID3 算法虽然简单易用,但是也有很多缺陷:
(1) ID3 算法缺乏对于连续值的处理手段,而在现实生活中,很多的应用环境都是采集到的连续值;
(2)计算信息增益的时候对于样本频率 P(xi)有极大的依赖性,有时候会对模型造成很大的偏差;
(3)对噪声较为敏感,所谓噪声也就是一些在生成模型的时候就给定的错误数据;
(4)采用递归的方式形成模型,而且整个决策树的生成过程对于数据多次读取存写,所以算法较为低效,而且无法应用于大数据量的场合下。
下面是利用这些概念获得故障树的过程:
图 2 ID3 算法生成决策树流程图
为了提高决策树的模型精度,去除掉模型创建时一些错误数据的干扰,有两种剪枝方法可以用于提高决策树的正确分类能力:
(1)预剪枝方法(prepruning),该方法通过提前停止树的向下延伸而对树剪枝。在各个节点向下分支之前,判断通往该分支的样本子集中的判断正确率进行对比,如果在当前节点的正确率高于分支后的子节点,那么就停止生长,这就是预剪枝的主要思想。该方法很多的分支都未曾“展开”,降低了过拟合的风险,而且还显著减少了决策树的训练时间和花销;但是另外一方面,一些分支虽然不能提升整体的泛化性能,但是由其再次展开的分支却有可能导致性能显著提高,而且预剪枝的“贪心”本质给这种方法带来了欠拟合的风险。
(2)后剪枝方法(postpruning),顾名思义,该方法是预先生成一颗完整的决策树,然后从每一个叶节点往上查看父节点,计算如果该父节点进行剪枝成为叶节点后是否会提高判定精度来决定是否剪枝。这种方式直到无法提高决策树性能为止。对比预剪枝方法,后剪枝方法保留了更多的分支。一般情况下,后剪枝方法的欠拟合风险比较小,泛化性能优于预剪枝方法生成的决策树。但是由于后剪枝方法是在决策树生成后在进行的,所以在训练时间和花销上会比预剪枝方法高得多。
2.3 支持向量机二分类原理
2.3.1 SVM 原理
支持向量机(Support Vector Machine,SVM)是一种经典的二分类模型算法,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。
对于二分类的支持向量机学习器,假设数据是线性可分的,这时分类学习的目标就是找到一个合适的超平面来将所有样本分割成两个类别,将不同类别的样本分割到两个区域内。
下图中的点集是低维数据样本表示,而这些数据对应的超平面就是中间那根线。对于点来说,线毫无疑问是处于高维的超平面了。随着维数增加,超平面总是比数据的维数多一维。
图 3 二维超平面
但是这样的超平面可能存在多个,我们应该寻找的最优超平面该如何获取呢?
图 4 存在多个划分超平面将两类训练样本分开
直观上看的话,我们应该寻找位于两类训练样本“正中间”的超平面作为我们的最优超平面,因为这个超平面对于整个训练样本局部扰动的“容忍”性能最好。换言之,这个超平面所产生的分类结果是最鲁棒的,对于未知的数据的分类能里最强。
在样本空间中,超平面可以通过如下线性方程表示:
其中*w* = (w1;w2;w3;...;wd)是当前数据产生的超平面的法向量,它决定了超平面在高维空间内的方向。b 为超平面的位移,决定了超平面与其所在空间的原点之间的距离。既然有了可以用数学方式表达的超平面,那么样本空间中任意一点到超平面的距离也就可以表示为:
假设超平面能够正确分类,即对于
,则有:
经过计算,我们可以筛选距离超平面最近的几个训练样本,使得上式中的等号成立,这几个样本就称之为支持向量,两个异类(在超平面两侧)支持向量到超平面的距离之和为:
这个距离就被称作“间隔”(margin):
图 5 支持向量与间隔
显而易见的,我们的最终目标,就是找到具有最大间隔的超平面作为最优超平面。那么此超平面需要符合下列特点:
由此可知,为了得到具有最大间隔的最优超平面,只需要最小化
即可。于是,上式可以改写为:
这就是“支持向量机”(Support Vector Machine,SVM)这一方法的基本型。
2.3.2 对偶问题
由支持向量机方法的基本型,我们可以知道这是一个带约束的凸二次规划问题,解决这个问题的较高效的办法是:转化为对偶问题(dual problem)。
具体的解决方式为给每条约束添加拉格朗日乘子
则上述问题的朗格朗日函数可写为:
其中
,由拉格朗日乘数法的思想,令
对
的偏导为 0 可以的得到:
利用两个式子代入到
中可以消去
,就得到了关于基本型的对偶问题:
通过求解出的
,我们可以计算得出
,从而得到最终具体的模型:
在上述的解答过程中,因为基本型有着不等式的约束条件,所以需要满足 KKT(Karush-Kuhn-Tucker)条件:
于是对于任何的训练样本,都要有
= 0 或者
的限制条件。且必须是满足
的样本才会出现在最大间隔边界上,说明这一个样本是支持向量。这一点也就代表着,训练完成后大部分的训练样本都不需要进行保留,只需要留下支持向量的那些样本即可。因为非支持向量的
都等于 0,去除之后不会对模型产生什么影响。
模型建立完毕之后,在对新的数据点进行分类时,实际上就是将这个新的数据点
代入到分类函数
中,若 f(x)得出来的结果大于 0,则为正类,否则为负类。