分析一个现象的原因,可以假设很多因素,搜集数据去证明这些因素是或者不是该现象的原因。有些因素是不变的,是一种静态的属性,比如一个人的身份,而有些因素是反映变化的,比如一个人身份的变化。
人们看待事物也通常有不同的倾向,有的人喜欢寻找静态的原因,有人喜欢找动态的。比如杨佳袭警这个事情,对于杨佳的分析。可以说,这个人性格暴躁,北京大爷,所以他杀了人。也可以分析说,这个人在行动之前被压抑了太久,并且遭到不公待遇,所以,他动手了。前者的分析是静态的,后者是动态的。
这也并没有什么好坏之分,但从解释理解角度,静态配合动态的分析,是更加令人满意并接受。静态分析很容易触动一大类人的神经,你如果判断人的原因归结到阶级、种族等静态因素上去,你可能要倒霉(当然,也许你的分析并不是完全错误的),被人唾骂。即使不骂,也会说,这个原因归结地太简单,没有说服力。而你拿出一些动态的行为因素呢,大家稍微安静下来,哦,挺有道理(但他们也许是被忽悠了)。
在数据挖掘建模当中,我想应该区分这两种因素,并形成不同类型的变量。而在提出分析需求的时候,也得区分出这两种不同的因素。静态和动态,这听起来非常简单,确实应该如此,但从现有的案例来看,人们似乎更愿意分析静态的因素。我想,这可能是因为这种静态分析比较简单的缘故,数据更加容易获取。而变化因素,要定义这种变化本身就是困难的。比如,身份,可能只有5种,但身份的变化,变成了一个排列组合问题。可是,往往这种想法阻碍了我们去考虑变化型因素,因为一想到要枚举所有可能的组合,似乎是不大可能的。不过其实,作出合适的假设,并不需要所有的组合。也许只需要关注其中的特定变化,比如身份提高的变化、到具体某个身份的变化。
在描述需求的时候,一不小心也容易忽略静态和动态的变化。比如"分析产品对收入的影响",其实本意是分析产品的变化对收入的影响,特别是购买了某类产品后,收入的变化情况,而不是"拥有"某类产品,其收入的变化。当然,从分析难度来看,后者容易很多。平常的olap操作甚至就能得到。
动态分析是要分析时间上的变化,一个时间点前后,或者两个时间周期间的对比,比如增长率,同比增长,变化趋势,都属于动态因素。这些因素需要进一步的表达。增长率也许是比较容易定义的,但趋势?如何定义,是只有上升下降?还是要加上一种幅度?是简单直线拟合趋势?还是曲线拟合以后再表达出来?如速增缓降、缓增缓降…等等,显然,要得到合适的动态因素,需要一些数据探索工作。
数据探索似乎是一种比较无聊的工作,很多时候是欠缺的。恐怕这也就是为什么很多分析里面缺少动态因素的原因之一。
关于静态和动态因素的区分,仍然有点模糊,但从前面看,至少已经做出初步的区分。所以,可以比以前基于假设的分析需求表达再前进一步,对这个分析方法论做些补充:
1、 分析的需求要明确区分静态因素和动态因素,既用明白无歧义的语言去表达两种假设;
2、 数据探索阶段,有项工作就是要确立动态因素的变量表示方式。(如,究竟有哪几种变化?)