基于聚类分析的间歇过程时段划分的MPCA建模的故障分析.docx
《基于聚类分析的间歇过程时段划分的MPCA建模的故障分析.docx》由会员分享,可在线阅读,更多相关《基于聚类分析的间歇过程时段划分的MPCA建模的故障分析.docx(32页珍藏版)》请在冰豆网上搜索。
基于聚类分析的间歇过程时段划分的MPCA建模的故障分析
基于聚类分析的间歇过程时段划分的MPCA建模的故障分析
摘要
对于具有过渡特性、多阶段特性的间歇过程的故障检测是非常复杂的。
间歇过程最基本的特征就是多阶段,每个阶段操作条件、参数等特性都有一定的差异。
由于对于间歇过程的建模和故障诊断都要求对数据进行预处理才能得到有效的检验结果,所以需要找到合适的方法对间歇过程进行阶段划分,才能有效提高建模和故障诊断的准确性。
为了实现更加准确地对间歇过程进行阶段划分,最终实现更加精准、有效的故障检测及诊断,降低系统误报率。
本文采用一种基于马氏距离的K-means聚类算法,该方法依据基于协方差距离的方法实现对间歇过程的阶段划分,在MATLAB编程环境下,完成基于马氏距离的间歇过程时段划分算法程序的整体设计方案,编写马氏距离实现以及K-means聚类算法的相应程序,完成对间歇过程进行划分的实现;最后通过Pensim青霉素发酵仿真软件获取青霉素发酵过程的间歇过程仿真数据,设计基于多向主元分析(MPCA)模型的故障检测方法,并利用MPCA建模对基于马氏距离的K-means聚类划分的子时段进行故障检测。
实验结果表明,在K-means聚类算法对间歇过程进行分段模块,基于马氏距离的K-means聚类方法的分段效果较符合生产实际;在故障检测的效果方面,基于马氏距离的K-means聚类的故障检测准确,误报率低,达到了预期效果。
关键词:
间歇过程;聚类分析;K-均值;马氏距离
目录
前言1
第1章绪论2
第2章基于聚类分析的间歇过程时段划分算法原理3
第2.1节聚类分析算法原理3
2.1.1聚类分析算法概述3
2.1.2K-means聚类分析算法原理4
2.1.3马氏距离基本原理5
2.1.4马氏距离与欧氏距离的比较5
第2.2节基于MPCA的故障检测原理6
2.2.1基于批次展开的MPCA方法原理6
2.2.2主元分析方法原理7
第2.3节总体方案设计9
第3章基于聚类分析间歇过程时段划分算法程序的设计与实现10
第3.1节数据获取及预处理模块设计与实现10
第3.2节基于K-means的聚类分析算法模块设计与实现12
第3.3节基于MPCA的故障检测模块设计与实现15
第4章实验与分析18
第4.1节基于K-means的聚类分析算法模块的实验与分析18
4.1.1实验数据获取18
4.1.2基于马氏距离的K-means聚类分析算法的实验与分析19
4.1.4聚类结果分析19
第4.2节基于MPCA的故障检测模块的实验与分析20
4.2.1MPCA的数据预处理与建模20
4.2.2故障检测结果21
4.2.3故障溯源23
前言
复杂工业过程往往伴随着很多危险因素,一个环节控制不准确就可能会引起生产运行不稳定、产品质量不可靠等问题,甚至可能造成财产及人身安全的重大事故。
所以对生产过程的故障检测、预测、排除等技术的研究近年来一直受到国内外的广泛关注,也成为一个炙手可热的研究热点。
随着社会对工业产品高精度、高质量、多品种的需求,小批量的精细生产也成为一个重要的发展趋势。
工业化生产更加依赖间歇过程。
间歇过程具有多时段和过渡性的特点,导致这类系统通常是非线性、时变、滞后的,并且模型不确定,对这类系统很难建立一个精确的数学模型来对其进行控制和检测,这个问题一直是控制界一个非常具有挑战性的课题之一,因而对间歇过程系统控制问题的研究,具有一定的理论价值和实际应用价值。
传统聚类分析方法采用欧氏距离进行计算,即用两点之间的距离的平方和来比较实际操作数据与质心的距离。
这种方法虽然比较简单,而且比较实用,但是也存在着明显的缺陷。
欧氏距离将不同属性的变量等同对待,这一点有时并不能满足实际的要求。
而采用马氏距离不受量纲的影响,可以排除变量之间相关性的干扰,克服指标变量不同量纲不同权重所造成的误判。
本课题对传统的欧氏距离方法上进行改进,采用马氏距离方法进行聚类分析。
在MATLAB编程环境下实现基于马氏距离的间歇过程时段划分算法程序设计。
并使用Pensim青霉素发酵仿真软件对青霉素发酵过程的间歇过程数据进行实验测试。
第1章绪论
随着工业水平的不断发展和提高,间歇过程已经广泛应用于各个领域,如精细化工产业、生物产业、农产品深加工等。
同时为了适应市场对于产品多品种、多规格、高质量的要求,间歇生产越来越受到重视。
间歇过程中,受生产设备的物理结构,或其他经济和技术上因素的影响,使生产过程由一个或多个一定顺序执行的操作阶段组成。
在执行过程中,都会受其生产环境和动态特性的影响,使得生产的产品和工艺操作条件频繁发生变化。
与连续生产过程相比,间歇过程具有动态性,多样性,不确定性等特征。
如果分段不合理,就不能很好的反映过渡阶段特性的变化,从而造成相邻阶段的过渡过程特性变化对监控结果产生很大影响[1]。
多阶段是间歇过程的一个固有特征,过程的每个阶段都有不同的过程特征及过程主导变量,而且过程变量相关关系并非随着时间变化,而是跟随过程操作进程或过程机理特性变化呈现分阶段性[2-4]。
然而由于这些过程本身其动态特性,以及当在同一设备上要求运行不同的生产批次,所需要产生的各批次之间的操作条件的变化会带来产品质量不高或重复性差等问题,也会造成许多安全隐患[5]。
K-means聚类算法是一种经典的划分的聚类算法,具有算法简单,收敛速度快,适用于处理大数据集等优点,该算法在当聚类是密集的,且类与类之间区别明显时,效果较好,该算法本身具有优化迭代功能,可以在已经求得的聚类上再次进行迭代修正确定部分样本的聚类,对初始样本分类不合理的地方进行。
在处理大数据集时,K-means聚类算法是相对可伸缩和高效的,是一种简单快捷的方法。
因此针对间歇过程的动态特性,K-means聚类分析算法是一种可行性很强的方法,能行之有效地实现对间歇过程的故障检测。
1)
第2章基于聚类分析的间歇过程时段划分算法原理
第2.1节聚类分析算法原理
2.1.1聚类分析算法概述
聚类是一种将未知变量划分成类的方法,这也是聚类与分类的根本差别。
通过将不同数据划分成簇,一个簇内部的对象之间有很强的相似性,而不同的簇之间则有很大的区别。
这样一个搜索簇的无监督的学习过程不需要依赖事先定义好的类或者带有类标记实例,而是需要聚类学习算法自动地确定标记。
因此,聚类是一种观察式学习而非示例式学习。
聚类可以定义如下:
在数据空间
中,数据
由许多个数据点(或对象)组成,数据点
的每个属性既可以是数值型的,也可以是非数值型的。
假设数据集X有N个对象,则X可以用一个
的矩阵表示。
聚类的最终目的是把数据集X划分为p个分割
,当然,也可能有些对象不属于任何一个分割,将这些对象归类为噪声
。
所有这些分割和噪声集的并集就是数据集X,并且这些分割之间的交集为空。
聚类分析是多元统计方法之一,按照隶属度的取值范围,则可以把聚类算法分成传统的硬聚类算法(如K-平均算法)和模糊聚类算法(如模糊C均值)等。
模糊聚类技术基于模糊集合论,被广泛应用于模式识别和数据挖掘等领域,成为一个研究的热点,不断涌现出一些聚类分析算法[16,17]。
但目前为止大多数算法都是以欧氏距离作为相似性度量的,只考虑了各类别样本均值这种一阶统计特征,得到的聚类结果是超球型的。
而实际大多数情况下因为每个变量的方差并不是相同的,尤其在间歇过程中,各阶段变量变化特征不同,每一类的域应该是超椭圆而不是超球面,这样,传统的聚类方法会导致数据不正确的分类。
基于欧氏距离的聚类算法倾向于发现具有相近尺度和密度的球状簇,即在不同的方向上相似性的尺度都一样,然而,簇可能是任意形状的,因此提出能发现任意形状簇的算法是很重要的。
聚类分析算法旨在将相似的失误进行归类,是依据事物本身的特征来研究个体。
这种方法具有同一类的个体相似度较高,不同类的个体差异度很大的原则。
聚类分析算法的三个特征分别为:
(1)对没有先验知识的分类适用。
即便没有先验知识或其他的国际标准、国内标准以及行业标准,聚类分析算法可以通过设定一些边角完善的分类变量,来实现较为合理、科学的分段。
(2)能处理由多个变量决定的分类。
例如根据一个学生每月的开支分类比较容易。
但是在进行数据挖掘的过程中,要求根据该生的家庭收入、家庭支出、平均每天消费金额等多个指标完成分类比较困难的,不过聚类分析解决这一类问题。
(3)聚类分析算法属于一种探索性的分析方法,可以利用聚类分析探索一些事物的内在的规律和特点。
然后按照相似性原则对研究对象进行分组。
现有的主要聚类算法大致可以分为以下几种:
划分聚类算法、层次聚类算法、基于密度的聚类算法、基于网格的聚类算法以及基于模型的聚类算法等。
本文采用的K-means聚类分析算法属于划分聚类算法,划分聚类算法是指对于一个给定的N个数据对象的数据集,采用目标函数最小化策略,通常把数据分成k个组,每个组为一个类(或簇)。
可以看出,这种聚类方法同时满足以下两个条件:
(1)每个类至少包含一个数据对象;
(2)每个数据对象必须属于且只属于一个类。
当然,在有些情况,如模糊聚类、可能性聚类等,条件
(2)可以放宽要求。
最著名与最常用的划分聚类算法是K-均值算法和K-中心点算法,其他划分算法大都是这些算法的变种。
2.1.2K-means聚类分析算法原理
K-means算法是一种经典的基于划分的聚类方法。
它的基本思想是先随机产生K个初始点作为K个簇的中心点,将靠近它们的相似的点分到不同的簇,然后按照一定的方法计算各个簇的质心,从而确定新的质心,不断进行迭代,直到质心的移动范围满足给定的要求。
这种算法比较简单快捷,但是它的关键在K值的选择和距离公式是否准确。
K-means算法实现的具体步骤可以概括为以下5步:
(1)从m个数据中任意选取K个对象作为初始的聚类中心;
(2)分别计算每个数据对象到每个聚类中心的距离,距离最近的一个中心所在的聚类就是该点所在的聚类;
(3)聚类完成后运用一定方法重新计算该聚类中距离每一个点的最近的中心点;
(4)如果与上一次计算出的聚类中心相同则说明聚类结果成立,转(5);如果不同,则转
(2)重新进行计算;
(5)输出聚类结果。
基于欧氏距离的K-means算法非常简单而且便于解决实际问题,该算法应用比较广泛,但是有一定的缺点。
首先,欧氏距离适用于超球形聚类,在不同的方向上相似的尺度一样,倾向于发现具有相近尺度和密度的球状簇。
同时,由于基于欧氏距离的K-means算法对野值点和噪声敏感。
即使对于一个远离聚类中心的目标,算法也强行将其划入一个类中,从而扭曲了聚类形状。
本文采用一种基于马氏距离的K-means算法进行聚类。
马氏距离定义了空间中样本之间的协方差距离。
考虑了指标变量的协方差矩阵结构及相关性对分类的影响,可以减弱由变量属性之间的相互影响而使聚类产生的误差。
2.1.3马氏距离基本原理
马氏距离表示数据的协方差距离。
设总体G为m维总体(考虑m个指标),均值向量为
,协方差矩阵为
,则样品
与总体G的马氏距离定义为:
(2·1)
其中,
,当
时,
(2·2)
利用马氏距离进行计算在聚类上具有显著的优势,它可以使分类过程中的相似的数据点距离较近。
这样可以减弱各属性数据间的相关性影响,降低误差。
在具体间歇过程应用中,既能考虑到稳定阶段下的监控,也能兼顾不同阶段间的监控和故障检测。
2.1.4马氏距离与欧氏距离的比较
欧氏距离是在m维空间中两个点之间的真实距离。
设m维空间中两点
,和
,它们之间的欧氏距离为:
(2·3)
可以看出,欧氏距离算法虽然简单,但是在分析处理多元数据时会体现出一些缺点。
例如,欧氏距离没考虑到总体的变异对于距离远近的影响,并且欧氏距离会受到变量的量纲影响。
而经过协方差矩阵逆矩阵处理的马氏距离则可以排除测量单位的影响。
但是两者之间也有这一定的联系,由(2·1),(2·3)两式可以看出,当协方差矩阵为单位矩阵时,马氏距离就简化为欧氏距离。
说明马氏距离算法对于欧式距离是一种补充和改进。
前文提到,K-means算法实现过程非常重要的一个部分就是各点到聚类中心距离的计算。
传统研究通常采用欧氏距离进行计算,即距离的平方和。
而马氏距离表示的是数据之间的协方差距离,可以更加有效地计算数据样本集的相似度。
运用马氏距离计算聚类中各点到中心的距离可以排除变量之间的干扰。
同时也无需考虑原始数据的测量单位的影响。
第2.2节基于MPCA的故障检测原理
2.2.1基于批次展开的MPCA方法原理
多向主元分析(MPCA)方法建立统计模型,模型数据矩阵结构和表达方式相较于PCA方法都发生了变化。
间歇过程的反应数据通常是以三维数据矩阵
的形式来表示,其中,
代表间歇过程的个数,
代表过程变量的个数,
代表每一次间歇过程的采样时刻的个数。
PCA方法要求每一个子数学模型具备独立的子数据空间,MPCA模型就是由这一系列子数据空间构成。
MPCA方法的原理是,首先将三维矩阵的操作数据进行二维展开,得到一个二维矩阵,不同间歇过程具有不同的特性,其在建模方面的需求不同,所采用的展开方式也有所不同。
对间歇过程的数据进行二维展开后,先要对展开处理后的二维数据矩阵进行标准化处理,经过标准化的二维数据可以通过PCA方法进行建模。
MPCA方法建模实质是将一个大型复杂的数据空间,沿这一个轨迹分割成一系列子数据空间,在每一个子数据空间上分别建立子统计模型,多个子模型构成了非线性多元统计数学模型。
2.2.2主元分析方法原理
给定一个在正常状态下工作的历史数据,设该数据集有
个过程变量,
个观测值,将该数据集变为矩阵(
)的形式,其中,每一列代表一个测量变量,每一行代表一个样本。
矩阵
如式2·4所示。
(2·4)
对PCA模型的数据预处理即对矩阵
的标准化通常是将X的每一列减去相应的变量均值且除以相应的变量标准差。
利用PCA对样本数据进行建模。
定义标准化的样本
协方差矩阵为:
(2·5)
对其进行特征值分解,并且按章特征值得大小降序排列。
PCA模型对X进行如下分解:
(2·6)
(2·7)
其中
为负载矩阵,由S的前A个特征向量构成。
为得分矩阵,T的各列被称为主元变量,A表示主元的个数,也是得分矩阵的列数。
得分矩阵的各列是相互正交的,说明这些主元是统计线性无关的。
主元的协方差矩阵可以由
来得到,其中
表示是S的前A个较大的特征值。
基于PCA方法的过程监控通过监视两个多元统计量,Hotelling’s
和残差子空间的
,来实现对间歇生产过程是否正常运行的实时监控的。
其中,
统计量的控制限可采用
分布来计算,公式如式2·8。
(2·8)
其中,
为主元个数,
为建模批次数,
为显著性水平。
统计量,是指预测误差平方和指标(Squaredpredictionerror,SPE),表示测量量偏离主元模型的距离值。
SPE统计量的控制限可由下式计算:
(2·9)
(2·10)
(2·11)
其中,
为建模数据集中所有批次测量数据在第
个时刻SPE统计量的均值,
为其对应的方差。
完成建模后,根据标准轨迹分段情况对在线数据进行阶段划分,使用基于马氏距离的K-means算法对每个阶段进行分段建模,然后再根据公式(2·12)、(2·13)、(2·14)、(2·15)就得各点
和SPE值。
(2·12)
(2·13)
(2·14)
(2·15)
检查各点是否超过控制限,若超过
和SPE控制限,则发现故障,则说明该点出现故障;若没有超过控制限,则该批次数据正常。
对于使用MPCA对在线数据建模检测,使用SPE和
控制限检验系统是否出现故障,可能会有4种不同的结果:
(1)故障使用SPE和
同时超过控制限;
(2)故障使用SPE超过控制限,而
没有超过控制限;
(3)故障使用
超过控制限,而SPE没有超过控制限;
(4)两者均没有超过控制限。
尽管两者总是同时用于检测故障,但这两者具有不同的物理意义,而且重要性也并不相同。
对于PCA模型,如果建模合理,那么它便描述了变量之间因为各种物理约束形成的相关性,如质量守恒、能量守恒,以及各种操作约束。
SPE可以检测打破了各种约束的过程异常。
根据上面的分析,SPE可以区分并检测故障情形
(1)、
(2)、(4)。
在SPE的基础上,
指标只是补充了没有破坏变量关系,但是无法被SPE监测的故障。
第2.3节总体方案设计
本课题的目标是在MATLAB环境下设计一个利用基于马氏距离的K-means算法对间歇过程时段进行划分的算法程序。
主要实现对间歇过程的阶段划分,以期达到更准确地进行系统的故障检测,降低系统误报率。
图2·1是本文提出的基于聚类分析间歇过程时段划分算法程序的设计的整体设计方案。
图2·1总体设计流程图
该方案主要由数据的预处理,间歇过程阶段划分,基于MPCA的故障检测,故障溯源四个模块组成。
本程序首先从一个间歇过程工业模型获得仿真数据;对数据进行预处理,包括标准化等等;然后通过基于MATLAB环境下编写的分段算法分别对间歇过程进行基于欧氏距离的K-means聚类和基于马氏距离的K-means聚类,实现对间歇过程的阶段划分,其中基于马氏距离的K-means聚类是本文设计的方法,基于欧氏距离的K-means聚类算法作为对照实验;实现分段后,为检验本文方法的优劣,分别对该两种方法进行MPCA建模,对其进行故障检测;最后通过故障溯源来找到出现故障的变量。
第3章基于聚类分析间歇过程时段划分算法程序的设计与实现
第3.1节数据获取及预处理模块设计与实现
数据获取模块:
对典型的间歇过程工业模型进行建模和故障检测,产生故障1(斜坡故障)数据和故障2(阶跃故障)数据,作为故障检测样本。
数据处理模块:
在实际操作过程中,由于不同变量具有不同的量纲,对检测结果会有所影响。
为了消除这种由量纲的差异而引起的不合理的影响,所以要对测量数据进行标准化处理。
通常的方法是将X的每一列减去相应的变量均值且除以相应的变量标准差。
数据获取及预处理模块的流程如图3·1所示。
图3·1数据获取及预处理模块流程图
关键部分代码如下:
%%读入数据选取有用变量
filepath='C:
\Users\Qiu\Desktop\故障检测作业\大作业\仿真数据\data\';
data_n=20;
j=1;
batch_data=cell(1,data_n);
fori=1:
data_n
temp=strcat(filepath,num2str(i),'.txt');
data_temp=load(temp);
VR(:
j)=data_temp(:
2);%Ventilation_rate
MP(:
j)=data_temp(:
3);%MixingPower
FR(:
j)=data_temp(:
4);%Feedrate
SC(:
j)=data_temp(:
6);%Substrateconcentration
DO(:
j)=data_temp(:
7);%Dissolvedoxygenconcentration
CC(:
j)=data_temp(:
8);%Cellconcentration
PC(:
j)=data_temp(:
9);%Penicillinconcentration
BVC(:
j)=data_temp(:
10);%Brothvolumechange
COCD(:
j)=data_temp(:
11);%Concentrationofcarbondioxide
HO(:
j)=data_temp(:
14);%Heatoutput
batch_data{i}=[VR(:
j)MP(:
j)FR(:
j)SC(:
j)DO(:
j)CC(:
j)PC(:
j)BVC(:
j)COCD(:
j)HO(:
j)];
end
data1=[batch_data{1}batch_data{2}batch_data{3}batch_data{4}batch_data{5}batch_data{6}batch_data{7}batch_data{8}batch_data{9}batch_data{10}batch_data{11}batch_data{12}batch_data{13}batch_data{14}batch_data{15}batch_data{16}batch_data{17}batch_data{18}batch_data{19}batch_data{20}];
%%数据标准化
data=zscore(data1);
第3.2节基于K-means的聚类分析算法模块设计与实现
该模块主要内容是关于基于K-means的聚类分析算法的设计,结合本文具体思路和方案,设计出基于马氏距离的K-means聚类分析算法,并实现对间歇过程的阶段划分。
K-means算法的流程如图3·2所示。
图3·2K-means算法流程图
无论基于欧氏距离还是马氏距离,K-means算法整体流程大致相同。
但是在第四步、第六步中需要分别按照不同的距离公式进行计算。
欧氏距离的计算公式为两点之间距离的平方和。
如式3·1。
(3·1)
而马氏距离的的计算公式为两个数据点之间的协方差距离。
如式(3·2)。
(3·2)
如果协方差矩阵
是奇异的,将导致马氏距离无法直接被求得。
根据矩阵理论,任一秩为
的实对称半正定矩阵,都可按下述方式进行分解。
为实对称半正定矩阵,假设
的秩为
,那么
就可以分解为
,其中
为
的对角阵,
是由
的非0特征值向量构成的非奇异矩阵,
为
矩阵,由
中的特征值所对应的特征向量构成。
通过这种方式,便可以根据
来求
的伪逆
(3·3)
另外,除了通过协方差矩阵的非零特征值集其相应的特征向量来求
的伪逆,也可以通过样本的内积求得
。
关键部分代码如下:
%%基于马氏距离的K均值阶段划分
%%对K个中心点进行初始化
m1=100;
m2=300;
m3=500;
m4=700;
%%循环迭代求取马氏距离
count=1;
co=cov(data);
[U,S,V]=svd(co);
c=inv(S);
mx1=data(m1,:
);
mx2=data(m2,:
);
mx3=data(m3,:
);
mx4=data(m4,:
);
while(count<50)
k1=0;
k2=0;
k3=0;
k4=0;
clearnew1
clearnew2
clearnew3
clearnew4
fori=1:
800
t1=(data(i,:
)-mx1)*c*(data(i,:
)-mx1)';
t2=(data(i,:
)-mx2)*c*(data(i,:
)-mx2)';
t3=(data(i,:
)-mx3)*c*(data(i,:
)-mx3)';
t4=(data(i,:
)-mx4)*c*(data(i,:
)-mx4)';
%%将数据点划分到最近的聚类中心
[values,number]=min([t1,t2,