昆仑数据田春华老师在微信公众号的专栏培训:工业数据分析与实战。培训给出了一些实际的数据分析例子,包括“设备管理”、“运作优化”和“营销服务”三类;然后讲了数据分析的基本框架、方法和技术;最后给出了大数据时代,数据分析的认识误区和挑战。田老师发音不标准啊,好多词听好几遍,再关联上下文,连猜带蒙的才勉强能明白,不过有的也不一定对。记录以反复学习。
视频链接
过去我们经常提非结构化数据,其实结构化数据也是现在数据分析的一大方向。比如时序结构,工业上大量的传感器、物联网数据。再就是移动互联网的时空数据,一些观测数据。还有一些序列数据,它跟时序数据不一样,可能并不是连续的,比如一些交易数据,今天取钱,明天去哪儿消费,这些在一些欺诈识别里面非常重要,特别是网络入侵,你做一系列的事件,通常可能导致某个事件的发生,通过一些事件序列,通常可以发现行为异常等。另外一些是Networks网络数据,比如社交网络数据,还有一些合作数据,比如谁和谁通常一起发论文等等。结构化数据也是一个需要深入研究的领域。
以工业为例。工业有什么特点呢,首先是先验知识。工业里面,先验知识比较多,不像我们在互联网里面做推荐,做用户画像,我对用户的一些了解,包括人的认知都是非常宏观。工业里面的都非常微观,比如一些动态方程,一些运行机理,这些知识如果用统计学的联合概率分布等来刻画还是不够充分。而且工业系统通常是一个工控系统,有控制规律在,并不是一个自由运动的系统,比如看一个化工系统,非常非常平稳。这里面的它的异常就不明显,比如温度升高,它有反馈,会通过控制让温度回到一个正常的范围,直到它hold不住了,或传递到了下一个阶段才被发现。所以说工业上的挖掘不会是浅层次的挖掘,都是深层次的挖掘。
再一个就是数据结构,刚才也讲的比较多,比如序列结构的多尺度,一个数据在秒级、分钟级、小时级、天级、周级上它的趋势怎么样,可能不同的故障,反应的颗粒度是不一样的,这里就会有很多的复杂组合,加上多变量,这样就非常非常的复杂。另外假如数据有丢失,那补的时候就得非常小心,因为是时间序列,它的前后是有关联有语义的。另外工业上的样本比例失衡是很严重的,很多问题是失效样本太少,这时候的one class svm这种基于正常数据的学习反而变得更重要。另外我们的自变量之间的多重共线性,有好多值都是一样的,特别是温度,相关性非常高;另外好多变量是不完备的,这是更致命的,就是这些检测量并没有完全反应这个物理现象。
第三就是数据的可信度,可信度是要值得质疑的,也就是说传感器上来的数据要相信但是不能迷信,传感器的数据与测量精度有关系,与安装位置有关,与测量原理有关,特别是一些流量的测量,受流体的相位、温度影响,包括测量误差的影响,都非常多,这时候我们要对数据的趋势做一些提取。包括数据中间有一些异常,并没有标签,并没有标注。
那可能说用机理模型就完了,其实机理模型并没有那么准,这也使工业对数据分析寄予很大期望。好多机理是微观上的,比如管道腐蚀,对于腐蚀的变化方程这些东西在微观上在实验室都能做出来,但是到一个具体的管道,具体腐蚀成什么样,机理只能给一个大概的机制,一个方向,它并没有用到中观,更别说宏观。然后是强假设,我们好多时候假设是平稳的,假设是光滑的,但是实际上我们炉子的各个部位是不一样的,这些机理可以用在设计上,用在分析上,但是用在中观的控制上,还是有很大问题。这就是我们有了数据分析,数据手段之后,我们能不能通过数据的差值,数据的拟合手段来弥补这些东西,这在部分情况下是有可能的。在算法上有什么不一样呢?工业上算法,以时序为例,时序也有很多种,从长短来看,有短时序有长时序,短时序比如一支钢的轧制过程,它通过一个轧机,也就短短的几分钟;还有长时序比如煤化工,一开炉就要好几个月,基本上是连续不断的。这两种的处理方式就不一样。如果是存在批次的,存在短序列,可以用序列相似度。从周期来看,有的信号就是有强周期性,比如震动信号,震动是它的主频率,可以用平均分析做出很多东西,但是有的比如流程化工,稳态是它的主过程,再加上短时的强干扰,这时候频率就分析不出来什么东西。所以说时序也有很多讲究,比如时序的长短,时序的成分构成,包括特征。讲到时序,里面有很多有意思的问题,大概分成六类:一类是时序切割(Segmentation),应用于长时序,我怎么把它切成段,特别是化工里面,把不变的或相似的,分成多个段,切割好的话,我们后面的分析,拿一段做特征提取,聚类都比较好办。再比如,化工过程是一个长期稳态的过程,偶尔调整的话中间有一个波动,这时候做切割很重要,但是不同的切片长度不一样,我们会把相似的切到一段,然后每一段再提取关键特征,然后再用聚类、分类方法就能做的比较好。切片在好多长时序比如风电、化工都有广泛的应用,但是这里面会有各种方法,后面会给大家举例子。第二类是分解(Decomposition),就是把它按照变化的快慢,变化的模式分解成若干个分量,比如最常用的STL,频率变换,小波,EMD(经验模态分解),SSA,都是尝试将一个时序分解成若干个趋势量,若干个周期量,包括短期波动量,然后在不同周期上找特征,这个在好多全面设备上故障诊断用的非常多,不同的异常体现在不同的周期上,或者体现在不同的频段上,这个还是挺重要。第三类是数据的再表征(Representation),就是假设有一个时序,我怎么对它简化,就是如果时序的维度非常高,每一个点都是一个维度,那这时候我是关心它的形状,还是频域或时域,这时候就做一些特征提取,即有模型驱动也有非模型驱动。第四类是FrequentPartern,就是常见的一些序列模式,这些在事件中间,比如通常先发生的水温上升,再发生什么上升,它们之间有强联系的先后关系,这在好多工业分析中间非常实用。第五类是Anomaly Detection,就是时序中间有没有点异常,子序列异常,包括周边的模式异常,这在传感器分析异常时非常常用。第六类是聚类,也就是我把一些长得比较像的序列聚到一起,这样大大降低维度空间,包括好多非监督学习,在好多故障分析中间,我把长得比较像的聚到一起,这里面可能有基于模型的,有基于非模型的,还有基于预测的,各个方面有好多东西。最后两类是传统问题,分类问题和Forecasting。我先把时序转换成标准的数据集,用标准的分类可以做,另外一种就是直接用时间序列的特征来分类,这种在好多故障诊断里面用的非常多。Forecasting中,ARIMA在过去小数据集用的比较多。如果没有太多数据,根据时序相关性,预测下一个,消除一些噪声,也可以。现在我们有了一些协变量以及其它因素之后呢,这种还是用传统机器学习,收集相关特征,使用时序相关性比较强的一些前几个周期的量都作为自变量,然后加工成特征,扔给机器学习算法来做。现在的话比如LSTM也有很好的进展,特别是在状态方程这一块儿。这些讲的比较抽象,下面给出几个例子。
第一个是时序分割。一个基于多变量的时序过程,我怎么把长得比较像的分到一块儿,可以基于隐马尔可夫过程,基于mean variance,还可以基于梯度分布叫做Hog-1D的分解,把梯度分布相似的分割到一起,左下角的就是Motif频繁模式挖掘,我在一个长时序里面把常出现的序列挖掘出来,这些序列经常出现,至于这些序列意味着什么,就要结合一些其它的东西来赋予意义。再一个就是分解,就是把一个复杂的过程分解成若干分项,这些分项,有的代表趋势,可能周期不一样,有的是一些可以忽略的短暂的干扰,我们可以用滤波做一些简化和特征提取。下一个例子就是时序异常检测,这个在一些传感器中间经常遇到,把一些时序中间不正常的挑出来,什么是不正常的呢,就是长得不太像的,模式不太一样的,给挑出来。再就是时序特征库,就是能够自动提取一些特征,可以基于遗传算法建立语法树的方式,把一些组织关系提取出来。下一个是一个时间序列,包括长时间序列,短时间序列,是强干扰,信噪比是什么样子,是剧烈变化还是缓慢变化,有没有长期趋势。这里面我们以前做过一个自动画像的工具,叫ts画像,是一个时间序列的自动画像,告诉我时间序列是个什么样的特性,它是强干扰还是强周期,那我拿到数据之后就知道选用什么算法,加个什么特征。下一个例子是怎么直接用时序特征来做分类,比如基于Shapelet,这个名字就像过去的小波wavelet,就是一些小形状,微形状,一些常见的形状,把这些形状作为分类的因素,作为决策树的节点。以前的树的节点可能是一个变量,比如收入,现在就是一个形状,与这个形状相似度超过多少的,作为决策的分叉。就是直接用一些多维特征来作为决策节点。这些都是在工业里面非常常见的。
在此基础上,基于时序还有很多可视化的手段,数据可被消费,一方面是基于算法,让机器去挖掘,把它提取出来,变得比较简单。另外一块儿就是以合适的方式让人去消费,就是以很好的可视化方式展现出来,其实好多业务专家,看一眼就能发现其中的规律。这也就是说,我们大数据分析,大数据可视化,虽然可视化是另外一门学科,但是我们做数据分析,对可视化还是非常非常的关注。一方面,可视化可以让人对分析结果更好的理解,另一方面,可视化是与业务专家交流的很好的手段。可视化也是提高数据可消费性的手段。
工业上,时序数据分析可以在传统算法上衍生出很多新的东西。如果回到移动互联网,也有很多可以做的,比方时空数据,我即有你的时间,又有你的位置,甚至有你的位置的地理属性,比如它是一个餐饮区、购物区还是居民区,可以做很多新的挖掘。还有比如数据跨领域的融合,比如过去我们讲工业数据是时序数据传感器数据,过去我们说互联网有好多非结构化数据,文本数据,而工业上过去我们有好多纸质数据,比如值班日志,包括检修记录,包括故障手册,都有很多结构化半结构化的文本数据,DCS里面有大量的时序监控数据。那如果我们把这两种数据结合起来呢。一旦它们结合,比如我说某个指标过高,那我就先用结构化数据把这个指标进行定量的刻画。虽然我们的数据分析算法有很多种,但是大多是在不同场景下的各种组合,但是其实基本思想就是上一节给大家介绍的,就那么几个朴素的思想。我针对不同领域不同的问题,某个特性比较突出,我特别加工一些东西。
做数据分析,理论还是基础,这个没法偷懒。但是工业上的问题也没有那么难,还是八二原则,80%的问题大多数人都会解,另外20%的问题,可能需要深度思考才能解。大家掌握里一些常用的工具后,好多问题可能很简单,使用简单的统计,做一些图标,就可能解决百分之四五十的问题了,再结合决策树、SVM,可能就能解决70%的问题。剩下的解不了的问题,就由专门的团队来解。再就是数据分析没有那么神圣,不能解决所有的问题。再就是数据分析不能作为传统项目那么管,给一个标准的计划,必须到什么时候交付什么结果。结果能交付,但是不一定能达到预期的一定解决什么问题,一定能提高质量,数据分析的十有八九会告诉你你想要的结果在数据上不支持,没有什么规律,都是有可能的。所以我们实事求是,要有一个迭代的心态,特别是敏捷的心态,来看数据分析项目。数据分析项目是一个数据分析人员与业务人员密切配合,反复推敲。即使我们数据分析能做出来一个好的结果,还是要进行大量验证,反复推敲,问一下结果为什么会好。甚至要在想一步,就是在什么情况下,我的模型不再适用了。这是做工程项目与算法不一样的地方。
来源:oschina
链接:https://my.oschina.net/u/4270506/blog/4322101