根因分析,就是找到引发一件事的原因。比如,产品质量出问题了,要找到原因、加以纠正。
谈到数据的根因分析,人们最容易想到的是:搞一个很牛的学习算法,把与结果关联度高的原因找出来。但我觉得,这种做法成功的概率并不高,是学院派的思路。
而另外一种模式更加接近事实:把可能的原因列成一张检查表(CheckList),表格中定义出什么是“正常”。然后让计算机去查一查,那些因素超出了正常的范围。换句话说,是把人的经验提取出来,让计算机去分析。
对于这样简单的做法,人们可能会有很多怀疑。除了怀疑这种做法太简单之外,可能就是对必要性和可行性的怀疑:1、必要性:如果再次发生,需要计算机来查吗? 2、可行性:表格中能罗列所有原因吗?
笔者一直认为:工程师要追求的就是“复杂问题简单化”。所以,方法简单是好事而不是坏事。关键是必要性和可行性如何。从必要性角度看,这样的表格不仅利于知识传承,还可以提高分析效率、问题处置的自动化程度。系统越复杂,这样做的价值越大。
从可行性的角度看,人们担心的是:新出现的问题不在表格中。这种情况确实可能发生。而且,如果一直是这样,我主张的做法也就没用了。但是,有问题就有方法。首先是要知识积累:如果知识积累得做够多,新问题就会少了。比如,如果这个表格中的知识,来自于成千上万台同类产线,而且数据积累的足够长,新问题就会少了。第二种办法是事先做失效模式分析(FEMA)。如果理论分析到位,也就不会出现意外。
如果数据积累不够、FEMA分析也不到位,这时候才需要数据分析一下。但这个时候也不是乱用算法。
这时面临两种情况:一种是FEMA标准做得太窄,“异常因素”太多;一种是FEMA标准做得太宽,一个“异常”都找不到。对这两种情况,决策树、相关分析的办法可以试一下。除此之外,还有另外一种常见的情况:数据看起来都是对的,实际上是错的。根据我的经验,这种事情真的是经常发生。
这个时候,问题分析就要转向另外一个方向:分析数据的真实性、代表性。这时,一般要通过一些间接、相关的数据来看。比如,原来的检查表(CheckList)针对的是工艺参数。现在发现工艺参数都正常,就要看设备状态、测量仪器是不是正常。设备状态不正常时,工艺正常可能就是假象。如果对于这类问题,人也应该有些经验,从而有条件建立另外一张检查表(CheckList)。
如果这些办法都无效了,可以再去试试论文上那些高级做法了。不过,那些分析方法成功的概率就难以保证了,只能碰运气了。总之,我的一贯主张就是:优秀的数据分析人员要善于把人的领域知识用到极致。