清华大数据“赛事经验分享”系列讲座旨在分享国内外大数据领域重要赛事获胜团队及个人的参赛历程及获胜经验,本期,我们邀请到PHM Data Challenge十年竞赛史上首个完全由中国本土数据精英组成的冠军团队——昆仑数据K2代表队的领队人昆仑数据首席数据科学家田春华博士及团队成员代表刘家扬,两位嘉宾分别与大家分享了工业大数据分析如何有机融合机理模型与统计学习模型,以及2017PHM Data Challenge赛题详解。
下一期活动预告:11月29日,我们邀请到在CIKM AnalytiCup2017复赛中凭借“基于雷达图像预测未来降水”模型,以绝对优势排名第一的清华大学Marmot团队(姚易辰,李中杰),他们将从比赛简介、算法架构、模型训练等方面与听众进行详实的分享和解读。了解活动详情及报名打开链接:。
以下是活动现场两位嘉宾演讲视频,后附图文实录:
昆仑数据首席数据科学家田春华博士演讲视频:
团队成员代表刘家扬演讲视频:
以下内容经数据派THU整理而成:
后台回复关键词“1114”,下载两位演讲嘉宾完整版PPT。
昆仑数据首席数据科学家田春华
一、工业大数据背景知识和赛题背景
田春华:竞赛是促进大家研究和交流的一种机制,而各个赛事侧重点不同。在KDD-CUP竞赛中,题目相对通用,对于参赛人员的门槛较低,因此会有大量的队伍参加,最后的前几名基本上是小数点后两位或三位的比拼。而PHM侧重于工业行业,一般会描述一个相对具体的问题,参与者需要对相应的行业机理有所了解。
从08年到现在,PHM的题目基本上集中于工业上的一些关键部件。如航空的涡轮发动机、齿轮箱、加工中心刀具、风电里面测风塔上的测风杯、轴承,包括一些车间的设备故障诊断,如去年题目中针对半导体产品生产过程的晶圆化学机械平坦化的异常分类,还包括今年题目里轨道车辆减震(悬挂)系统的故障诊断。
这个赛事重点强调行业,特别是设备故障诊断、高端装备制造。过去的参赛者基本上分成两派,一派是高校,包括马里兰大学、辛辛那提大学等,近几年表现比较突出的是首尔国立大学,今年也取得了第三名的好成绩。除此之外,还有很多军工企业,如洛克马丁、NASA等,也包括SAS等本身就潜心软件研发的企业。总体来看,PHM赛事的参与者基本上是半数来自高校,半数来自业界。
为什么我们关注这个赛事呢?这与国家工业制造2025的目标有关。在中国制造2025中,高端装备制造业的地位举足轻重。一个国家的制造业强不强,主要体现在高端装备制造产业上面,包括精密机床、海上装备、轨道交通用速度场系数简化风速测量方法,以及航天卫星、航空飞机等方方面面,包括昆仑等友商都时刻在关注和助力着这个产业的发展。
另外一个关注本竞赛的目的是想锻炼一下我们年轻的数据分析团队,让他们和大家在行业竞赛中进行一些切磋与交流。从经验来看,工业大数据分析主要能解决三大类问题。第一类来自高端装备及其制造业,可细分为以下几类问题,剩余寿命,机器还能撑多长时间,再过多长时间需要维修;故障预警,在没出故障之前,提前发现并预警,包括设备的异常检测;故障诊断,定位设备异常之处;运维优化,通过数据分析,如一些运筹优化的方式,在实际派工时提升运维的效率。
到了车间内部,我们希望提高生产效率和生产质量。正如在化工行业里面,我们怎么通过数据分析提高有效气体的产出率,怎么通过参数优化来提高整个系统的运作效率。
第三块为产业互联网,用政府的话来讲即互联网+。互联网包括产业互联网的概念更多地是一场商业模式的变革,包括经营流程的变革,而数据分析则在后边起到支撑作用。数据在这里不像是在故障诊断和运作优化里一样占主导作用,它主要起到了辅助的作用,辅助能源互联网中更好地预测新能源的产生和消纳,更好地进行调度优化等等。
以下为一些具体的案例:
第一个案例来自风电,是今年中国工业大数据竞赛的题目-齿轮带断裂预警。齿轮带连接着风机上的三个叶片,风大时,叶片不能完全对风,否则会超过发电机的额定功率,进而烧坏发电机或者线路,所以需要变浆。变浆过程是通过变电电机带动齿轮带再带动叶片完成的,如果齿轮带断裂,叶片自由运动,可能会导致烧塔,进而造成次生灾害。所以风机的整机制造商以及业主都很关心能不能在齿轮带断裂之前进行预警。
齿轮带损坏的根本原因是疲劳,或是橡胶的老化。我们可以认为这是一个剩余寿命问题,用机械学的疲劳原理来做,但是非常不幸的是,在一个风机制造商全国约两万台的风机中,一年内出现重大问题的风机可能只是个位数,同时每个风机不可能从头到尾都有数据,所以想要全生命周期的数据,现在还做不到。
另外一种考虑是能不能看症状,在齿轮带快要断裂之前,往往会有松垮的现象,我们可以根据此现象在某种程度上猜测它是否会有断裂的风险。但是这个过程中间存在着十分复杂的情况:风和控制逻辑是风机最重要的影响因素,而风是一种外生变量,在外生变量是最重要因素的情况下,怎么做判断?我们不能简单地说某指标偏大就是出现异常。指标偏大可能是风速大造成,也有可能是控制逻辑不好造成,所以我们必须把各种工况分开考虑,才能做一些预警。
在这个案例中,我们最终实现了能够提前三天进行预警。在呈现的曲线中,横轴是时间,纵轴是风险。理论上来讲,风险上升之后,应该是比较平稳的高风险趋势,而实际曲线中间还是会下降一部分,这是因为风小的时候,齿轮带几乎不工作的原因。虽然考虑了前后平滑的作用,但是我们仍然是判别不出来的,因为这种变化还包括一些其它因素的影响。实际做项目的时候,正负样本又有严重不均衡的问题。不均衡到什么程度?几万台风机,积累了三五年,能找到对应问题数据的只有10台以内。所以虽然在工业中我们看到的数据量非常大,但实际做数据挖掘时,并没有那么多好用的正样本。大量的正常数据,导致正负样本严重不均衡,里面甚至还包括虚假预警的存在。
第二个为石油领域的例子。我们要解决的问题是:一条输油管道埋在地下,如果这条管道中间发生了漏油,我们能不能及时检测到。如果是天然气管道,泄漏现象甚至会引起爆炸,这时我们能不能及时检测到并且定位到该位置。解决该问题的一种方式是应用负压波的原理,当然我们也可以使用光纤或者其它的方式。当时韩国的石油运营商不想再加装传感器,因为传感器已经布好,就不可能再挖沟铺光纤了,我们就只能用已有的压力传感器来做泄漏检测,用负压波的原理。
负压波原理就是,当发生泄漏时,会有瞬间的压力下降,这个压降产生的同时会形成一个负压波(一种横波),并以约1.2公里每秒的速度往两端传播。两个传感器之间间隔10多公里的话,十多秒钟就传到了。如果泄漏点不在两个传感器中间的话,两个传感器的测量值下降会有个相对固定的时间差,因为传播速度在同一种介质中间,比如在同一种航空煤油中间用速度场系数简化风速测量方法,是相对稳定的。所以,我们只要知道传感器之间压降响应的时间间隔就可以把泄漏点的位置计算出来了。
当然,这个问题也有两个难点。一个是定位精度,我们实际拿到的是一些原始的信号数据,拿到信号我们首先要进行滤波,如果滤得太狠,我们就失去了定位精度;滤的太轻,里面夹杂的虚假信息就比较多。滤波频率到底设多少合适?根据定位中的要求,倒退一个介质频率是0.4赫兹,我们就把滤波器设到0.8赫兹。后来发现,只要把这个点找对了,用线性滤波器效果就会很好,对比小波也相差不多。考虑到现场使用的情况,最后还是使用了线性滤波器。在工业中间,只要把主要矛盾抓住了,算法的精度就不会差。
第二个是更难处理的问题是虚假预警。使用负压波的一个缺点是会受输油压力的影响,输柴油、汽油、航空燃油,这些情况下本身的输油压力不一样,并且这些种类的油中间有些含有气泡,气泡一破裂,也会影响压力的浮动,而这个浮动本身是正常的。另外,有些时候会出现倒罐现象,当某一个罐子满了,换了一个空罐子之后会出现压力的瞬间下降,像这种的正常工况变化,造成的压力下降远远要比泄漏造成的压力下降明显,这就会造成非常让人困扰的一种情况——天天报警。如果这样的一个系统给现场人员用,绝对没人敢用。
我们这个项目花的最大的精力就在于怎么把虚假预警破解掉,一种方式是装更多的传感器,因为同时干扰光信号和压力信号的概率非常小,这样一下就解决了,但是这样的方式是客户接受不了的。那么通过数据分析我们还能做什么?其实不同原因造成的压力下降的信号形状会有略微差别,通过模式挖掘和匹配,可以在一定程度上降低虚假预警。在现实的数据分析中,如果想让模型真正可用,对我们苛刻的往往不是这些检测算法、预测算法、故障挖掘算法,而是如何过滤掉虚假预警,以及如果有些信号数据得不到,我们能否用变通的方式解决。
解决一个数据分析问题一般有两种思路,一种是纯数据驱动的方式,一种是数据和机理搭配的方式,而我们在工业界主要使用的是第二种思路。
通常如果样本足够多足够完整,我们可以先把数据丢给深度学习,从中得到一个精度作为我们的Baseline,然后再加工特征,进行进一步的探索。因为,如果问题数据样本量比较大,并且比较容易描述的话,深度学习的方式相对比较简单,带入模型就会得到结果,同时会比较快地得到一个结果。
举一个煤化工领域的例子。我们通过投入氧气和煤灰(或者煤浆),在高温下发动气化炉,可以生成一氧化碳和氢气,用以制造甲烷或其他工业有效气体。几乎所有以煤作为原材料(不是燃料)的化工工业都需要这样的气化过程作为前序过程。那么气化过程的工艺参数优化就成为了大家十分热衷的研究方向。
气化过程是有机理的,如热力学方程,包括一些化学反应的方程等等。但是为什么有机理反而实际用不上?因为这种机理一方面简化比较多,而且,即使简化之后,里面的一些系数在现实中也非常非常难得。所以从来没有企业愿意用机理的方式做化工控制。在这样的数据挖掘问题中,我们只能把工艺当做黑箱,但是我们会把重要的因素通过机理梳理出来,通过输入输出,通过深度学习,通过一些模式挖掘,归纳总结出来一些知识。后来证明,用这种方式大概能提高1.4%或者2%左右的有效气产率。那1.4%意味着什么?这几乎是是一个煤化工企业一年利润的10%甚至20%。
讲到生物领域就更为麻烦了,我们只知道这种菌会长成是丝状还是长成瓣状,现在却要研究在xx温度xx湿度的条件下进行厌氧还是有氧反应。我们做数据分析,最主要的还是把几种因素梳理好,哪些因素是可控的因素,哪些因素是外生变量(即这些变量会极大地影响反应,但是没法控制)。如果主要因素基本上可测,并且精度还可以,那这个问题也许可以去解。我们在接触一个行业的数据之前,很难说一定会有效果或者彻底没解,但是如果不做,永远不知道极限是什么。所以唯一能做的就是通过数据探索,通过理解机理,把主要变量抓住并梳理好。
现在传统的数据挖掘一般都集中在经营领域,比如销售分析,客户画像,或者一些确定性的问题。这边举一个关于备件需求预测的例子,这是一个工程机械制造商面临的问题。为了提高服务质量,制造商在各地都会有库存,而这时地区分公司往往会积极地压货,压的越多越好,反正卖不完还退给你。一个工程机械制造商经营总部就关心能不能精确地预测每个地区分公司下一个月,或者下一旬的销量大概是多少,留一个乘1.5的系数,再考虑上该地区分公司当年的库存,就可以给他一个最佳的货量,即使他申请的多,我也不一定批。
其实真正在研究一个工业问题的时候,重要的不是让模型在80%的情况下好用,而是要明白,我们的模型在什么情况下不能使用?在这个问题中,有很多影响因素,首先一个现实的问题就是节假日的影响,比如春节的因素怎么处理。而更难处理的是一些不知道的情况,比如压货。这些因素的影响我们不能全部滤掉,留着反而又会受影响。而如果把这种情况当做正常事件,下一次的预测中我们就会把预测量提高,这时候就要求我们的算法不能因为数值的轻微波动就变得不可控。
另外一个比较难的问题是如何提高预测的提前性,好多预测算法都是根据过去的趋势来做预测,但是有的时候在历史数据上是没有体现明显趋势的。当然,算法中一定也会有自适应的过程,但是问题也在于能不能稍微提前一点,不要过了两三个月才能对之前的时间点进行相对准确地自适应调整,这对预测的意义就不大了。
另外,好多问题并不是客户给你定义的,而是甲乙双方一起定义的,比如集装箱的到达预测,到底预测什么,预测到什么粒度,这些是双方可以商量的。如果我们能够预测到相继到达的每个轮次是多少货量,基本上可以进行堆场的排布优化(哪些船的货排在一起,怎么排)。这就有赖于轮次货量预测的精度,如果能够做到90%,就可以做堆场优化,如果能够做到80%,可以让人来指导进行堆场的排布,如果只能做到60%,那这种方式就不用考虑了,因为在实际操作中基本不可用。
现实中做业务分析,有的时候很简单,只要抓住主要矛盾,药到病除,有的时候很麻烦,既要针对业务场景,同时要针对目标粒度。现在的工业大数据正在从各个方面推进和发展,但是情况并不像大家想象的那么理想。好多时候大数据技术也被商业企业过分吹捧,让大家对它的期望过高,不切实际。
现在展示了我们的一个内部开发工具,通过这个工具,我们过去做的一些案例能够积累下来,大家在碰到类似的问题时可以快速地有一个相对较高的起点。包括研发的迭代怎么形成,怎么通过实际的观测数据来指导研发,研发的成果怎么在实际数据中进行验证,后期高端装备的运维、调度,未来的一些工业改进,包括产品质量方面等等等等。
做工业大数据,一方面要理解,第二方面是要把数据分析放在一个合适的位置,并不是所有的问题都适合数据分析,位置放太低,问题我们解不了,位置放太高,虽然精度很高,但是业务价值反而没有了。
二、PHM解题过程与思路
主讲人:昆仑数据K2团队成员代表刘家扬。
擅长:启发式数学建模,运筹优化,机器学习算法,R语言编程
目前在昆仑数据负责:工业大数据平台分析算法库及并行分析框架开发,(运筹)优化类分析项目。
赛题背景:
轨道车辆分为三层,第一层是四个轮对,第二层是两个转向架,第三层是车体。轨道车辆的悬挂系统分为两级,轮对和转向架之间的称为一级悬挂系统,由螺旋弹簧和阻尼组成,转向架和车体之间的称为二级悬挂系统,由空气弹簧和阻尼组成。整个系统在不同点位共安放了18个振动传感器。在后面的内容中,我们称一对弹簧阻尼所在的地方叫做一个位置,整个系统里面有12个位置;一个阻尼或者一个弹簧叫一个部件,整个系统一共有22个部件(注意:每个转向架上方只有一个空气弹簧)。
竞赛题目:
主办方依次给出三个数据集:traning、testing、validation。这里的数据集名称和我们平时做数据挖掘时的数据集名称顺序有所颠倒,但不影响我们对题目的理解。
在训练数据集中有200次实验的数据记录。每次实验在不同车辆(1-200)&不同轨道(track1/track2)&不同速度(0.71/0.79/0.87/0.94/1.02/1.1/1.18/1.26)&不同负载(连续值)的条件下进行。对于一次实验,其数据包含388或216条记录(记录数的多少可以认为取决于轨道长度)。每条记录,对应了在相应的轨道区间内(轨道切分为388/216个小区间),每个传感器所记录的振动时间序列经过频域变换后在5个频段上的取值,即一共有18*5=90个原始特征。所以,在训练数据集中,我们有200张388*90或者216*90规格的表格。对于每张表格(每次实验,每辆车),我们会得到“健康”/“不健康”的标签。
对于testing数据集,我们同样有200次实验的数据,我们可以知道每次实验的速度、负载及其50条连续的轨道运行数据记录,但是我们无法得知这50条记录来自哪条轨道的哪一段。我们需要完成的挑战是判断每次实验的运行状态(健康or不健康),如果不健康,判断故障部件(1-2个)。每天可以提交一次结果。
而最终的模型精度会由我们的模型对validation数据集(和testing类似,但一共只能提交3次结果)中实验的判断情况计算出来。
题目难点:
1. 外生变量的影响:由于轨道、速度和负载的不同,各个实验可以认为来自不同的总体,实验之间的可比性较差。
2. 传感器记录的是一个动态的过程。对于一般的数据挖掘问题,每个实例在每个特征上都只有一个值,其在每个特征上的值构成了一条记录。但是这个问题中每个实例对应的是一个二维表,包含多个特征和多条记录(序列)。我们在面对这样的问题的时候,一般会怎么处理呢?
3. 悬挂系统内部强联结。每个传感器反应的不只是单个位置或部件的状态,同一个位置或部件也不只影响单个传感器的观测。
4. 样本不均衡到极致。训练数据集中的实验全都是健康的,这就意味着我们只能用One-Class(异常检测)的方法来做。
解决思路:
1. 对于testing或者validation数据集中的一个实验,我们不知道其所在的轨道以及起始和结束位置。而我们的数据又会受到轨道不平顺程度的影响,所以我们首先进行基于相似度的轨道位置匹配。
2. 之后我们进入异常检测的过程。
3. 异常检测步骤结束后,我们开始故障定位过程。
4. 得出最终的故障实验及其故障位置后,我们通过物理模型分析(传递函数)来确定故障位置的故障是由“弹簧故障”、“阻尼故障”还是“都故障”导致。
比赛最后,我们在testing数据集上得到了0.885的准确率和0.5393的灵敏度。把模型应用在validation数据集上时,我们发现模型的泛化能力很强,在准确率上达到了0.825,在灵敏度上达到了0.525。
结论和经验:
1. 问题:此问题内部只包含刚体动力学的机理,并没有涉及到化学甚至更复杂的机理知识,所以这个课题在工业界算是相对简单的。
2. 机理:现在坊间也在研究和开发自动搜索和加工特征的算法,但是学习出复杂机理下的特征时间成本是极高的,而且很有可能学不出来,即使学习出来也需要结合机理去进行解释。那么如果我们能够提前了解一些相关的机理知识,就可以有针对性地抓住有效特征,同时可以积累成自己的行业经验。
3. 方法:由于各类车辆悬挂系统都有一定的相似性,包括这种内部的强联结性,我们的方法可以为类似场景提供一种好的想法。
4. 结果:我们团队内有来自自动化、数学、统计、计算机等不同领域的成员,大家能够进行优势互补,创造出更加全面和具有创新性的模型。
后台回复关键词“1114”,下载两位演讲嘉宾完整版PPT。
内容整理:王志蒙
下一期活动预告:11月29日,我们邀请到在CIKM AnalytiCup2017复赛中凭借“基于雷达图像预测未来降水”模型,以绝对优势排名第一的清华大学Marmot团队(姚易辰,李中杰),他们将从比赛简介、算法架构、模型训练等方面与听众进行详实的分享和解读。了解活动详情及报名打开链接:。
发表评论