本文是我关于大数据分析方法的几点思考。当初的目的是系统化地看待数据分析。为了这点东西,我花了一个礼拜的时间,思考的结果却是碎片化的。看来,想清楚并不容易。由于时间关系,只能中止。文字描述很不严格、肯定经不起推敲,读者找不毛病是正常的、看不明白更是正常的。不感兴趣的可以当做胡扯。我希望将来有时间时能把问题思考下去。
从数据中发现信息和知识,是人们多年来的梦想。随着大数据理论的兴起,这个话题变得非常热门。在有些人看来,大数据非常神秘,似乎无所不能。当然,现实不会是这样。我想,研究大数据,首先要破除迷信:大数据需要什么条件、什么问题是大数据无法做到的。
1、知识和信息,只能从关联关系中得到
对象(包括过程,如生产过程、购物过程)及其属性、同一对象的属性之间具备关联关系。例如,“张三身高1.8米”就是对象(张三)与属性(身高)的关联;再如,如果我们知道张三体重75公斤,则“1.8米”和“75公斤”之间就因“张三”建立了关联。
关联的对象可能并不确定:我们看到一张履历表,即便隐去名字、不知道这个人是谁,也知道其中的各种信息是与某人关联的。
在数字化的世界里,不和其他的符号(数字)关联的符号(数字)是不包含任何信息的。从不包含信息的素材,得不到包含信息的结论。
有人可能反对这个观点:谷歌曾经用“感冒”的搜索量预报流感啊,这里哪有关联呢?其实,只有搜索“感冒”的数量是根本无法预测流感的。谷歌的做法,是把“感冒”的搜索与搜索的地点、时间联系起来。
这个观点告诉我们:收集数据的时候,要尽可能地把关联关系建立起来;没有关联关系,数据很容易成为垃圾。这种情况并不少见:有些实验室,把针对同一试样的各项实验结果分别保存起来,而没有建立统一的ID、关联关系丢失。这样的数据,再多也没有用处。
2、人们要挖掘的知识和信息,就是找映射关系
知识(或信息)的发现与挖掘,其本质是寻找映射关系:通过已知的、对象的一部分属性,把对象的另外一部分属性或对象本身找出来(或缩小范围)。产生这类问题的原因是:只有一部分属性已知、容易得到、容易识别、容易表述,而另外一部分未知、不容易得到、不容易识别、不容易描述。
例如,我们可以说:张三就是那个穿红衣服的——这里“穿红衣服”比其他特征容易识别。从衣服识别出张三,就是从张三的衣着特征(属性)找到关联对象(张三)的信息;从一个人的身高预估他的体重,就是从一个根据一类属性估计另外一类属性。
我习惯于把信息挖掘和知识发现分开。
在本文中,信息挖掘指的是预测某个特定对象的属性,如上海市的人口是多少;知识发现是确定一类对象的属性之间的关系,如一类人群中身高和体重的关系。当然,这种区分不是绝对的。
3、映射关系的差别
正确的识别,最好的办法是找到好的素材(数据)。素材与结果之间的关联强度是不一样的:有的比较强,是因果关系、必然联系;有的比较弱,是相关关系、偶然联系。
例如,我们可以根据DNA、相貌、衣服来识别一个人。但三者相比,DNA的联系是强的必然性联系、衣服是弱的偶然性联系,相貌是介于两者之间的联系。大数据的一个著名案例,是网站根据客户买的药判断她已怀孕、并推送有关产品:因为这种药只有孕妇才吃,是很强的关联。
从数据得到的知识和信息,往往不是绝对正确。一般来说,可靠的结论基于可靠的数据和可靠的分析方法。数据量大了以后,滤除干扰的可能性增大,从而可以从原来可靠度低的数据中,得到可靠性相对较高的数据。
所以,尽量找到好的素材,是做好分析的第一步。
在很多情况下,我们找不到好的素材。这时,首先要做的尽量提高数据质量。数据质量不仅是精度问题,还包括数据来源的可靠性:为此,需要把数据来源的相关过程要搞清楚,否则很可能会误导人的分析。
4、相关与因果
有些相关性的背后,一般会有因果关系存在。两个要素由因果产生关联的机制大概可以分成两类:1、两个要素具有因果的关系:比如刚做父亲的青年人常会买尿布;2、共同原因导致的两个结果之间的关系:比如孩子的父亲会常买啤酒,也常买尿布;于是,啤酒和尿布就可能关联起来。
有些相关性,看似没有因果,但背后往往有某些特殊的规律或因素其作用(上述第二种情况)。比如,女孩子往往喜欢花衣服,与基因和文化的共性有关。但这种因果关系可能相隔太远,以至于难以考证了。
当人们需要根据关系作出决策时,需要研究因果的逻辑关系:到底是谁影响了谁。否则,根据分析结构的盲目行为可能适得其反。 “到底谁影响了谁”为什么会成为问题?大概有两类原因:
第一类原因是:忽视了时间因素。如“统计结果表明,练太极拳的身体差”。现实却是:很多人身体变差(包括衰老)以后,才练太极拳。一般来说,具有因果关系的两个要素之间,时间上有前后关系:原因早前,结果在后。
第二类原因是:忽视了前导因素。“公鸡一叫,天就亮了”。现实却是,天量之前的迹象被公鸡察觉到了。两者是第二种因果关系,只是看似“原因在后、结果在前”了。
一般来说,工业大数据分析更重视因果,而商务大数据分析对因果性的要求较弱。
5、数据分析的先导因素
从某种意义上说,数据分析的过程,就是寻找强的相关关系(必然性、因果性),或对弱的相关关系进行综合、得到强的相关关系。
用数据发现信息,需要用到各种知识。例如,把“云南白药是用于治疗外伤的”放入计算机,当某人购买白药的行为判断他或家人可能受伤,从而可以推荐相关产品。但注意到:这种类型的知识很可能是被人事先装入计算机的,而不是靠计算机自动学习得到的。
所有的学习过程,本质上都是基于这样一种假设:A和B的一部分属性类似,则推测另一部分属性也应该类似。例如,A和B的身高相似,则体重也可能相似。现实中,两个属性确实具有强烈的相关性,但身高相同而体重不同的也大有人在。这时,如果我们还知道他的体型,是瘦弱、偏瘦、正常、偏胖、肥胖型,对体重的估计就可以准确一些。由此可见,用数据发现知识的过程,本质上就是提高相关性、可靠性的过程。
一般来说,人们在做数据分析之前,一定会有一定的知识积淀, 但认识不清却是一种常态;人们希望通过对数据的分析,来改变这种常态。而改变认识的过程依赖于数据的质量和分析数据的方法。所以,刨除分析方法外,分析过程依赖于两个先导性因素:1、数据质量(包含多方面的含义)如何;人们已有的认识如何。
注意,这段说法有个潜台词:强调了人类可认识的知识,而不是机器用复杂函数关系表述的、人类难以用逻辑关系认知的知识(如神经元)。的确如此,笔者一直认为:这类方法的作用被学术界有意识地夸大了。
6、数据分析的过程
与商业大数据相比,工业大数据更重视可靠性和精确性。在很多情况下,猜出一个结论并不难,难的是论证一个结论。一般来说,凡是可靠的知识,都应该能够被机理和数据双重认证。
大数据分析的一个重要特征是:传统概率理论的假设往往不成立。例如:大数定理的条件往往不成立、模型的结构往往未知、因果关系不是天然清晰、自变量的误差往往不能忽略、数据分布往往是没有规律的。所以,为了得到可靠的结果,人们工作的重点很可能是验证这些条件、构造这些条件。从某种意义上说,数据分析的过程,主要是排除干扰的过程、特别是排除系统干扰的过程。而且,如果完全依照逻辑、用纯粹数学的办法加以论证,则数据需求量会遭遇“组合爆炸”,永远是不够的。这时,已有的领域知识就是降低数据需求量的一种手段。要记住:求得可靠性是一个过程而不是结果、可能永远没有终点;分析的过程只是不断增加证据而已。这个过程,是修正人的认识的过程;所以,错误或不恰当的认识常常是分析过程中最大的干扰——这个干扰一旦去除,我们可能就发现了真正的知识。
数据量大的直接好处,是排除随机性干扰。但排除系统性干扰却不那么容易,数据量大是必要条件但不充分,需要深入的方法研究才能解决问题。
系统性的干扰往往体现在:对主体进行分组,所体现的规律是不同的。比如,身高和体重的统计关系,男女是不同的、不同民族是有差异的、可能与年龄有关。如果不进行分类研究,统计的结果就会与样本的选取有很大关系。但分类研究也会遇到一个困难:遭遇组合爆炸,数据再多都不够用。这时,“领域知识”就会发生作用:
认定一个结论成立的办法,是确认它的“可重复性”。在许多情况下,“可重复性”指的是在各种分组下都成立的结论:最好能在不同时间分组中也能成立。分组越多、分组的维度越多、结论的可靠性越高。
但具有“可重复性”的结论,往往只在一定的范围内成立。在很多情况下,“明确结论成立的范围”也是数据分析的重要内容。
如何分组、如何确定范围、如何构筑逻辑链条、数据结果的解读、数据结果与领域知识的融合,都是重要的能力。事实上,根据领域知识,常常用于构造证据链、进行有效的数据选取和分组。
在精密论证时,我们就会发现:基础数据的质量很重要。因为许多干扰就来源于数据本身。从某种意义上说,数据的采集方法和环境不同,就是不同的数据。
6、关于预测数字
许多问题分析的目的得到一个数字:如钢的强度、用电量、人口数量、钢产量。这类问题的特点之一是:最终的结果是各种影响因素相加得到的。
对于这种问题,我的观点是:要想得到可靠的结果,一定要拆成若干子问题来分析。其中,各个子问题要尽可能利用规律性的结果来分析。我认为:把人的认识和数据用到极致的时候,才能得到最好的结果。随便地建立回归模型是不懂数据的表现。