昨天提出了一种可操作的方法论,用"假设"来定义问题,而用证实或证伪来提供答案。我想这是比较具体,容易操作。比仅仅是"定义业务问题"这个说法要实在一点。其实我们在做需求分析的时候,也做过很多假设,但一般"仅供参考",挖掘、分析并非以为为目标,而是以发现有趣的东西为目标,或者仅仅是为了达到一个lift值为目标。这就是因为大家多业务问题的理解不一。
大家可以看到这种基于假设的定义问题的方法有个问题——看上去并不能发现新的模式。因为假设是一种限制,限制分析的思路,这似乎并不符合常见的挖掘方法(扔进很多东西,保不准能发现一些东西)。这个问题待会儿再说,先来说说这种方法的好处。
基于假设,其实就是从业务出发引导分析,这比我们喊"业务指导技术"的口号要实际。依据假设去分析,有个好处,不至于是得出跟业务感觉不相干的结论。对假设的证实和证伪,容易形成比较稳定的业务规则,可以累积下去,形成知识库。
当然,假设的提出并不能完全凭空去想象,会随着数据的不断探索会有更深入更实际的假设。假设的提出需要业务想象力,需要感觉。这能够回到刚才那个问题,假设限制了分析思路。如果我们的分析过程是迭代的,就会不断产生新的假设。可以这么说——所有的分析都是基于假设的,你扔进去什么变量,定义什么目标,这些都是假设。只是,也许我们平常并没有将它们严格定义出来,当回事儿,甚至将一个可能并不成立的前提假设当成是真的。迭代分析过程是符合人们认识世界的习惯的,人不可能一下子就能够完全认识一件事情,一开始可能模模糊糊,可以给出一种很粗浅的假设。比如对群人的判断,"这些人大部分人都是男的",验证这点可能不难。在验证过程中,你对这群人了解更深了,可能又做出一个判断,"这群人估计有八成都是外地人。"
假设的提出并不只是让需求方提出,而是需要需求方跟分析方一起迭代提出。最初的提出可以是需求方(这里,我用需求方跟分析方来代替我们项目组里面的业务和挖掘的角色)。从技巧上,做假设的时候,对一些把握比较大的,或者是跟最终业务目标关系不大的,可以根本不做,可以将把握大的当真(也可以专门去证实或者证伪,如果这是一个非常普遍的假设的话)。如何选择做出什么假设,这确实不是技术问题,还是跟业务感觉有关系。但人们往往过于相信自己的判断,通常会将没有验证的假设当作真实前提,这是需要注意的。
有时候业务感觉虽然直白,但并不愚蠢。如果分析模型得出的结论看上去好像否定了业务感觉的规则,这时候先不要洋洋自得,因为很大可能是分析模型基于了错误的数据,或者将目标定义错误(分析了错误的问题),或者是依据的变量不能代表真正的业务含义。所以,并不能证伪这个假设。
用假设来表达业务问题,并且在分析过程中不断继续深入假设来完善业务问题。这是谈如何"定义问题"。
接着是如何"回答",就是证实和证伪。完全地证实或者证伪不容易,但也许可以给出一个置信度。这个假设有多大把握是成立的,当存在这种情况下,其实就有继续分析下去的必要,可以继续补充这个假设,加上一些前提。比如"在xx情况下,会怎样",或者"在yy情况下,不会怎样"。不过通常,如果有项目进度的压力的话,如果已经能够有较大把握证实或者证伪这个假设,就已经足够了。分析这种东西,追求完美是没有尽头的。
这个方法论我觉得比单纯谈sas的semma方法论,或者是crispdm的闭环方法论要现实一点,虽然不可避免地会牺牲一些东西。但在我们平常应用当中,分析一样东西,不能漫无目的地区寻找,必须得有个目标。
举个例子,那电信业传统的离网预警模型,如果不做假设,可能我们这样定义业务问题,"寻找最有可能离网的客户",面对这个问题,然后需求里面给出一堆建议分析的维度。然后分析者确立目标,构建模型,扔了成百上千个变量,也许是一个逻辑回归模型,最后得出lift很高,模型建完了,对所有客户进行打分,得到他们可能离网的概率,高的就容易离网,低的不容易离。但为什么有的容易离有的不容易离呢?去解读这个模型吧,对不起,这种模型不能简单地解释,所以也得不出什么稳定的业务知识。换个做法,在定义需求的时候,除了那句"寻找最可能离网的客户",进一步作出最初始的假设:
1、 假设离网用户在离网前的三个月,或六个月里面,会有规律性的行为。
2、 假设这些行为主要体现在消费降低、呼转等等方面。
3、 假设,在通信行为上,长途、漫游行为的降低尤为明显。
4、 假设对于全球通跟智能网的高端和中端是有区别的,主要区别在于下降的幅度上面;
5、 …
如果能够回答这些问题,这将是一个好的模型,能够让人眼前发亮,能够共享,能够累积业务知识。
所有的假设很难在一开始就做出,而是在数据探索过程里面,一点一点发现,也许第四条假设是在一开始做出的。这就要求我们改变以往的做法,要迭代式进行分析,而不是一次性建立模型,得出模型评估结论。那样,根本没有时间来修正,来进一步提出新的假设。可以规定一个最少迭代次数,比如两次,我想这都会比假设问题已经定义清楚,一次性建模的方法要好。
假设 → 证实或证伪
↑__________|
好了,我在总结一下上面所说的,主要是三点:
1、用假设来定义问题;
2、用证实或者证伪来回答问题;
3、这是一个迭代过程;
除此之外,还有很多没有考虑清楚。比如如何做假设,是否有一些基本的假设形式?我想"如果..那么.."的形式是最基本的,如果给出了假设的前提,那么给出假设,一般来说,每个假设都有自己的前提,忽略前提的真伪,本身这个假设就不完善。但这个问题我并没有想明白,需要实践中摸索一番,也许在逻辑学那里能够找到一些答案。而至于证实、证伪,如果做到,我想在分析领域,主要还是归纳的方法,从高概率事件归纳得出规律。在方法上,似乎还有个证伪主义,不知道会不会有用。
我也意识到一点,虽然我说这种方法论是可操作性的,但其实也存在一些操作性的问题。比如分析方参与业务问题的定义,这现实么?从漫无目的在数据里面寻找,到依据主观假设来寻找,观念的转变很容易么?做假设需要业务感觉,需要经验,但如果这样的人缺位,是不是同样会流于形式,只是炮制出一堆空洞的假设呢?
这些问题应该会存在的,不过需要实践和时间去验证。不过我很相信这种方法论要比一直以来我们自己做分析的过程要有进步。