Monday, January 27, 2014

2014n年1月21日全国大断网的分析

=================================================================
上面补充了一张图给不了解DNS工作原理的读者~~

15:20 接到一个CDN用户询问,只有一句话:节点挂了?我第一反应是curl测一下节点,咦连不上?再进行dig +trace,吓尿了……看图
w(゚Д゚)w这是典型的*啊……我就回了句卧槽你被*照顾了?仔细一想,他就一个动漫论坛,不可能有这照顾啊,顺便下面放一张被*照顾的域名的DNS跟踪图,像这样就肯定是*干的好事了:

于是我联系了运维帮助协查,运维这一查艾玛吓尿了好吗,托管在我们DNS上的域名全部解析出来都是这鸟样……这不科学(╯‵□′)╯︵┻━┻难道我们被*照顾了?小心脏心跳速度骤增,这时候Q群消息变的多起来,咦百度打不开,QQ空间又挂了blablabla...

我再继续跟一下几个域名,我大概这辈子只能见到一次这样的trace图了:
百度和我自己的博客
我居然能和度娘在同机房!爽不爽!【群众:滚(╯—﹏—)╯( ┷━━━┷

ovear君的截图,他使用的是TCP查询,TCP也被污染的话,你猜除了*还有谁能干?然后发现google家dns貌似是正常的~_~

与此同时运维也在各地的服务器上开始了跟踪查询,发现全国各地解析时间均为25ms左右。这时候结论就出来了。但是也许有人会说我的证据不够充分,那么我们再继续查查这个65.49.2.178是什么来头。

于是呢,我们在同C段的65.49.2.0/24查到了下面的网站:


关键词自己图里找

整理一下:
  1. 低延迟说明全国各地(至少在省内或者附近,不会南方跨到北方)直接返回被劫持的IP;
  2. TCP查询同样中枪,排除黑阔采用全国发UDP包方式进行劫持;
  3. 同网段有那啥网站。

结论不写了。

================================================================
更新一下,有人问啥时候会恢复什么的。

劫持的影响大约只有15分钟。当时我查到的TTL是几万,也就是说,在电信运营商没对递归DNS手工刷新缓存的情况下,可能还需要间断受影响几个小时。不正常的可以试试更换DNS为8.8.8.8,或者等几小时再看看,后继影响略严重的样子

2014年1月21日全国DNS污染始末以及分析


大概今天15:30的时候,Ovear正在调试新的服务器,结果发现肿么突 然上不去了。。结果ping了以下,结果吓尿了,Ovear的域名都指向到[65.49.2.178]这个IP。Ovear第一反应就是,尼玛 DNSPOD又被黑了! 为什么说DNSPOD被黑了呢,其实以前DNSPOD就出过一次类似的问题=。=,导致所有的域名都跪了,刚好Ovear这个域名还有测试的几个域名都是 那里的,然后就到某交流群吐槽。结果管理员说他们的DNS被污染了,Ovear心想不会是全国DNS都被污染了吧。结果乌鸦嘴说中了。。还真的是全国劫 持。
然后Ovear就很好奇,到底是怎么回事呢~有谁能做到这样的事情~于是就有了以下的分析和科普~
-----------------以下内容为Ovear家电脑中病毒所致,跟本人无任何关系,谢绝跨省------------------------
balablabala说了这么久,肯定有同学问了,窝又不是学计算机的,(╯‵□′)╯︵┻━┻dns是什么玩意,跟我有什么关系!
那么DNS是什么呢,Ovear就来科普下┑( ̄Д  ̄)┍。
我们访问一般是通过域名[Domain]来访问的,咦DNS怎么也是D开头的,难道有关系?说对了!就是有关系:DNS的全称其实是[Domain Name System]翻译过来就是域名系统
在互联网中,是只存在IP的,IP其实就是一串数字,相当于你家里的门牌号,大家在网络中想找到你,必须通过这个,所以IP对于每个人来说是唯一的。但是第四代IP都是XXX.XXX.XXX.XXX这样的,多难记啊,谁会没事记住IP呢,更何况以后天那么长的IPV6,要记住不是得要人命!
这时候一个聪明的科学家出来,我们给IP加一个别名,大家通过别名不就可以不记住这个IP,也可以知道这个IP了!于是就有了域名[Domain]这个东西.
当你访问Ovear's Blog的时候
电脑的DNS解析系统就会自动问DNS服务器:尼知道Ovear's Blog对应的IP地址是神马么?
DNS:窝帮你查查,奥,找到了,IP是[122.10.94.169].
Ovear的电脑:谢啦,再见
DNS:恩

对应现实就是,问知道张三的人:尼知道张三家在哪里么? 回答 在南山区 balabalabla。
当然这样解释还是不怎么恰当的,因为一个DNS服务器是不可能知道所有域名的地址的,因为这需要耗费极大地代价,所以这时候就出现了递归DNS和根DNS。
由于篇幅原因,Ovear就简单的说一下,其实还是有问题的。Ovear以后再写一篇文章详细阐述下DNS的工作原理,或者看[Domain Name System] QAQ)
(补充:QAQ这里Ovear说的有点过简单了,其实根DNS(ROOT DNS)指的是全球一共13台的根DNS,负责记录各后缀所对应的TOPLEVEL Domain Server[顶级域名根服务器],然后接下来的就是[权威DNS服务器],就是这个域名用的DNS服务器(可以在whois中看到)
总结一下:
[根服务器]:全球一共13个A-M[.root-servers.net],储存着各个后缀域名的[顶级域名根服务器]
[顶级域名根服务器]:每个后缀对应的DNS服务器,存储着该[后缀]所有域名的权威DNS
[权威DNS]:这个域名所使用的DNS,比如说我设置的DNSPOD的服务器,权威DNS就是DNSPOD。在WHOIS(一个查看域名信息的东西)中可以看到。储存着这个域名[对应着的每条信息] 如IP等~

所以正确的解析过程应该跟下面的图一样
用户使用的DNS(边缘DNS)->(还会网上推很多级最终到)根DNS->顶级域名根服务器->权威DNS

根DNS是什么呢?大家想想,每个域名都有一个后缀,比如说ovear是[.info]后缀的。那么就有一个专门记录[.info]后缀的dns服务器,其他后缀也一样。这个DNS就是该域名的根DNS。
那么递归DNS呢?其实递归DNS就是一个代理人,是用来缓解[根DNS]压力的,如果大家都去问[根DNS],那[根DNS]不早就跪了。毕竟一个人(网站)的地址不是经常变的,所以就有了TTL这一说法,根据DNS的规定,在一个TTL时间呢,大家就认为你家里(域名所指向的IP)的地址是不会变的,所以代理人[递归DNS]在这个时间内,是只会问一次[根DNS]的,如果你第二次问他,他就会直接告诉你域名所指向的IP地址。这样就可以解决[根DNS]负载过大的问题啦。
顺便这一张图也可以很准确反映出来之前所说的~ =w=


说了这么久,口水都干了,那么DNS到底跟这次事件有什么关系呢~
首先来看张图


瓦特!肿么这么多域名都指向同一个IP了,这是什么情况0 0。其实这就是典型的[DNS污染]了。
我们知道互联网有两种协议,一种是TCP,一种则是UDP了(知道泥煤啊(╯‵□′)╯︵┻━┻都说我不是学计算机的了)。
TCP和UDP的主要差别就是:能不能保证传递信息的可靠性。UDP是不管消息是否到达了目标,也不管通过什么途径的,他只管我发出去了就好,所以UDP比TCP快得多,但是可靠性没有TCP好。



而DNS查询默认就是用的是UDP,那么就很好劫持啦。在UDP包任何传输的路途上,直接拦截,然后返回给接收端就行了。
啧啧,说道这大家也隐隐约约知道这次事件的问题了吧,范围如此之广的劫持,必须要在各个省市的主干网上进行,而能处理这么大数据,同时能控制这么多主干网的。。啧啧啧。。。没错!就是***了~至于***是什么,Ovear在这就不说了,不然可能大家都见不到Ovear了QAQ。
说道这里,Ovear就准备手动查一下,到底是不是所推测的***呢?于是拿到了这个图(From XiaoXin)

与此同时运维也在各地的服务器上开始了跟踪查询,发现全国各地解析时间均为25ms左右。这时候结论就出来了。
这样就明显了,肯定是***做的了~~于是Ovear又好奇的查了下,这个IP是什么来头,为什么都要指向到这里去,于是Ovear发现了一些好玩的东西~(65.49.2.0/24

从侧面点出了此次事件的始作俑者。
那么某FW为什么要这么做呢?Ovear在这里做一个无责任的推测,最有可能的就是:某FW的员工本来是想屏蔽这个IP段的,但是呢一不小心点进去了DNS污染这个选项,然后又没写污染目标,于是就全局污染了啧啧啧~
但是有些童鞋会问了(╯‵□′)╯︵┻━┻为什么他们都说用8.8.8.8就没事了~
其实这样子说是不正确的,因为Ovear之前用的就是8.8.8.8,上面也说了DNS查询默认使用的UDP查询,所以不管你用什么,照样劫持不误。其实8.8.8.8没问题是因为污染事件已经基本结束导致的,那么为什么污染结束后其他国内DNS都不能用,而Goole的DNS确可以正常的使用~于是Ovear就找到了张有趣的图片~



我先来解释下上面命令的用途吧~这个命令是用来直接向DNS服务器查询域名的~
其中的[-vc]参数是强制使用TCP来查询DNS服务器,这样就可以避免UDP污染的地图炮。
那么为什么污染结束后,DNS还会受到污染呢?其实原因很简单。Ovear之前说了,[递归DNS]是需要询问[根DNS]的,而默认的询问方式是采用的UDP,所以在国内的DNS服务器,自然就受到污染了。而之前Ovear也提到过TTL这件事~
在TTL周期内,根据协议[递归DNS]是直接吧结果缓存在自己那,是不会再去查询[根DNS]的,所以国内的DNS就把错误的结果缓存起来了~
Google的DNS服务器基本都是在国外,所以查询的时候影响并不大,但是国内挺多域名使用DNSPOD啦,DNSLA的DNS,所以Google进国内查,还是会受到一定影响的
因此,如果要完全避免这次的影响,有两个条件
1、你的域名的DNS必须是在国外
2、你查询的DNS必须在国外,而且如果在污染期需要通过TCP查询。

这样就可以避免这个问题了。
然后Ovear又手贱查了下这次的TTL,啧啧

如果没有人员来手动干预,这次的事件还是要持续蛮久的~。

哎呀先不说了,Ovear去开门收个快递~,双十二买的好东西终于到了,咕嘿嘿期待了很久呢~回来继续说O(∩_∩)O~~

大断网后的发现:中国防火墙真够流氓的!

现代德国为后人留下的最珍贵的历史遗迹,不是布兰登堡门,也不是犹太人被害纪念碑,而是柏林墙。 今天的中国将给几十年、几百年后留下些什么历史遗迹呢? 您可以例举的东西很多,但有一样东西是一定要为后人所记住的,这就是今天中国的防火墙。 它虽然看上去没有柏林墙那么直观、冰冷和坚硬,但两者具有类似的功能。 一个是拿来不让人民投奔自由的,另一个是拿来不让人民思想自由的。

中国的防火墙跟柏林墙有一点不同之处,这就是它既不是围的那么严丝合缝也不是那么坚不可摧。 而且这堵墙有时会做出些令人啼笑皆非的事情来。

越来越多的证据显示,上个星期二,也就是2014年1月21日,中国的防火墙跟自己开了个天大的玩笑,采取了一个大无畏的革命行动 ——挥刀自宫,把中国互联网给一刀“咔嚓”了,开了一个国际大玩笑!

从北京时间1月21日下午3点20分开始,国内的网民们突然无法访问所有的以 .net, .com, .org结尾的域名的网站上了。 这下子麻烦大了,因为这三个域名囊括了世界上大多数的网站。 中国差不多三分之二的国内网站也是使用这几个顶级域名的,例如百度、腾讯、天猫、新浪微博、CNTV、乐视等大型门户、视频网站。  当网民们无法访问这几个域名的网站时,全国的网上交易和电子商务几乎都停顿了,电脑的杀毒数据更新停止了,商务电子邮件停送了……,全国亿万网民傻眼了:这TMD出了啥事啊?

这个状况一直持续了2-11个小时,各地有所不同。  

一不小心,这成了互联网有史以来最大规模的一次断网。

当时的情况是这样的:下午3:20起,中国所有的顶级域名解析都突然发起傻来,谁要是访问任何以 .net, .com, .org结尾的域名的网站,人们统统被送到65.49.2.178这个IP上,而这是一个翻墙代理服务器提供商的IP。

事发以后,政府的解释是:这是黑客所为。 这玩笑开的有点大了,骗傻瓜不是? 现在我来试用最简单的语言告诉你为什么那是放屁。

互联网上每一台设备都是靠一个数字表明自己的位置的,不然无法和别的设备通讯。 这个数字就叫IP address,简称IP。 互联网上有成亿台设备,人类的脑瓜子十分愚钝,谁都没法记住这么多的数字。 于是域名服务器(DNS)这种东东应运而生,来替我们记住那些数字。 人们只需要记住域名,例如baidu.com、qq.com等就可以了,让域名服务器来解析成IP,这样您就可以轻松愉快地上网销魂而不必死记硬背那些数字了。

有一天,有个流氓设法在您的电脑和域名服务器之间做了点手脚,当您要去访问一个网站时,那坏蛋看到您请求解析,就拿一个错误的IP给你,让您跑到另外一个网站上去。 例如您要去淘宝,您的电脑却鬼使神差地把您带到了中国红客网站。 这种诡计,就叫做域名服务器劫持(DNS Hijacking),这是黑客的怪招之一。

1月21日的那个情况,确实很像域名服务器劫持。 但诡秘的是,全中国所有的计算机都被“劫持”了。 这TMD邪门了,谁有这么大的本事,居然劫持了全国每一台电脑,不管谁要访问任何一个以 .com,.net 或 .org结尾的域名的网站时,就把你带到65.49.2.178那里去玩玩。 这哥们需要在全国各大主干网络的节点上都设立一道关卡,不然根本没法进行这种规模的劫持。 这是哪个黑客干的呢? 我可以告诉您:这样的黑客还在他娘的肚子里,他能不能生出来还是个大问题。 那么,谁才有如此强大的权力和资源呢?

还有一个办法,有的黑客不用劫持就可以忽悠你,这就是干脆入侵域名服务器,弄砸解析规则。 这个伎俩叫做“DNS poisoning”,中文翻译成DNS污染。 这个可能性是有的。 可是已经过去好几天了,官方也应该可以拿出一点黑客入侵的forensic evidence了吧? 拿不出来! “我轻轻地走,正如我轻轻地来,挥一挥衣袖,不带走一片云彩”—— 这样的黑客还没有诞生。 如果找不到任何黑客的蛛丝马迹,那就是下面一种情况了。

这样一来,就只剩下最后一种可能性了:假如中国的顶级域名服务器(由DNSPod管理),给某个流氓开了一个大大的后门,这流氓随时可以改写任何解析规则,让任何一个网站在中国人间蒸发,或者干脆被“流放”到另外一处。 那么,1月21日那天发生的事情就可以理解了。

现在我们可以想象出来,有一个神通广大的家伙,头天晚上泡妞时叫人给宰惨了,那天又喝高了,本来那天他是应该写一条规则,让全中国的DNS服务器都拒绝对IP 65.49.2.178的域名作任何解析,因为那是某个反动组织的IP。 为了确保万无一失,万一有人(多半是翻墙者)提出这种解析需求时,就对其进行拦截或者劫持。 但这家伙酒还没有醒,还对昨晚泡妞时的晦气耿耿于怀,于是他乱写一通,居然阴错阳差地把所有的以.com,.net和.org域名结尾的网站一律掳到65.49.2.178那里,这就造成了全国大断网。 等到人家发现问题时,大家都吓得尿裤子了:一定要等到缓存TTL(time to live)规定的时限到期后才可以把这个问题纠正过来。 这时候某部门的同志们个个急得想撞墙或跳楼,眼看大断网在全中国发生了,却束手无策,最后只好打电话通知各大通讯商,让人家手工刷新DNS服务器的缓存,这才把问题修好。 这时候全国范围已经断网好几个小时,世界纪录已经产生啦!

那么,这个醉鬼是谁呢? 他就职于中国某个秘密部门。 这个部门,就是中国防火墙管理机构。

一不小心,这醉鬼造成了互联网有史以来最大面积的断网。

问题出在哪呢? 问题并不在那个家伙头天晚上不该去泡妞,他喝酒也不是什么大问题,反正人人都喝。 问题就出在中国防火墙本身。 互联网当初设计出来就是为了“通”,而中国有这么一个神通广大的互联网管理机构,他们唯一的任务就是“堵”。 经过这些同志们多年的努力,整个中国的互联网就是一道立体全方位超级防火墙,从每台服务器就开始堵,每个节点都设防,一直到和国际网络的交接点,层层设防。

这样以“堵”为目的的网络,不出问题才怪!

专家们设计互联网的初衷,就是要建立一个无论发生了什么事情都断不了的网。 但是在特色中国,互联网的设计却是以断网为目的的。如果政治上需要断网,随时随刻必须断。 如果有人说1月21日那件事不过是中国防火墙换上华为的设备后进行的一次断网测验,我也会接受的。

说透了,中国防火墙本来就没有必要存在!那玩意儿是互联网上最大的流氓!

他们处心积虑地要堵什么呢? 谁都知道,无非是要堵住境内外一切不河蟹的声音。 可是堵得住吗?

流氓有术,也有效,然而有限。 所以以此成大事者,古来无有!

这是我五年来第三次郑重呼吁:尼玛,拆掉那座防火墙吧!

Tuesday, January 21, 2014

医疗应用:大数据的容量足够用来创造更加个性化的“治疗处方”

1980年之前,临床医师们主要依赖“经验”、“直觉”以及“触摸不到的线索”来判断一个发烧了的小孩子到底是由较轻的疾病(如感冒)还是由比较严 重的疾病(如急性肺炎或脑膜炎)引起的。换句话说,他们靠直觉来看病。在1980年,一个由研究者组成的小组研究了那些有经验的儿科医生是如何为他们的病 人诊断的。他们发现了那些杰出的医师在直觉中参考了“输入信息”,而那些缺乏经验的医师在试图可靠地试用这些“输入信息”时就显得过于主观了。
在随后的研究中,研究人员从精确度和客观性两个方面上加强了他们的系统。在这个系统中,那些正在接受培训的儿科医师能够像有经验的医师那样接触到很 多因严重疾病而导致发烧的儿童。事情发生了根本上的变化:直觉的建立被质化和量化地形成了一种形式,并且这种形式可以被那些经验并不丰富的医生所利用。如 今,几乎所有正在为发烧儿童看病的医生都在证实这精妙的发现。

如果我们把目标确定为为每位儿童的每次就诊都提供最好的治疗,那么我们需要的就不仅仅是直觉和专业的技能了,因为人无完人。基于证据的医疗方法 (EBM)通过把临床研究整合进治疗准则来帮助医师提高治疗水平。然而就普遍意义来说,EBM一般是基于“小数据”的研究——与动辄数十万或数百万的大数 据不同,一个大型的EBM则是包含了数千例病例的系统。在这样的小样本规模系统中输入信息必须被良好地定义和形式化,随之而来的结果便是包含了所有这些信 息的治疗准则在解释病人与病人之间的差异时就显得力不从心。因而EBM有时被人们嘲笑为“菜谱式治疗”,医生们只是机械地遵循着这些治疗的“配方”来治 病。鸡肉与菠菜对于一些人来说也许是顿美味,但是当我们要为一位素食主义者上菜时又该怎么办呢?

大数据的容量足够用来创造更加个性化的“治疗菜谱”。利用一个容量为5亿人的数据集,你可以为一个体重超重且高胆固醇每天必须服用阿司匹林和立普妥的35岁男人,或者为一个与上述情况完全相同但是体重偏轻的人定制治疗方案。

大数据也可以允许我们通过在粗略的未经处理的数据集中逐条比对来发现微小但是强有力的线索,从而进行分析研究。小 数据集中通常不能处理粗糙的原始数据,因为它不能分辨“心梗”与“心肌梗死”的区别,即便他们指的是同样的事情。并且由于在小数据集中只能使用单一的术 语,使得我们无法做出确凿的归纳。同时小数据集也无法支持需要识别“心梗”与“心肌梗死”是同一种术语的研究。小数据集同样无法支持我们使用很细节的线索 作为输入,因为它们在数据集的发生具有太大的随机性–确凿的归纳是无法从这样的小样本数据集中得到的。
目前有越来越多的争议在讨论大数据是否正在取代直觉在医疗中的地位。无论怎样,大数据仍是我们最大的希望–计算机可以在模仿人类专家直觉方面跟进一步,那时我们就再也不用依赖EBM这样的小数据集了。真正的问题并不是大数据正在威胁医疗中的直觉,而恰恰相反,是在于我能未能做到这一点。我们如今在医疗领域并未过于依赖大数据,因为这的确需要大数据量,而医学研究者们手中并没有真正的大型临床数据集。

建立,维护,标识以及保密临床临床数据集的代价太高昂了。泄露数据集信息的惩罚很重,而建立这样数据集的利益却几乎不存在。即便是政府支持的健康信 息流通项目通常也不进行数据统计。取而代之的是,这些系统被用作让登陆者进入一个外部系统,一次只能取回一位患者的数据,并且得到的数据通常是摘要形式 的。大数据分析是无法在这样的体系中实现的。

然而,大数据量医疗数据集受到的最大壁垒是医疗信息中盛行的所谓“最佳实践准则”,这一准则已经落后于其他行业一二十年了。医疗信息体系仍在持续强 化使用陈旧的数据屏障,而这屏障正是维持“小数据集”研究的基础。在这个体系中,只有通过审核的,标准的,被编辑过的数据才能被接收——这里没有任何粗糙 的原始数据!随之产生的数据集便是小数据集,因为屏障式的处理过程是强化数据源的瓶颈,由于缺乏一致性,许多可用的数据被拒之门外。这个屏障创造了同质化 的数据,而排除了能使系统真正有用的多样性,这就如同白面包一样——一个被滤去了谷物最好营养物质的空空的净化盒。如果在大数据中使用了这样的屏障,谷歌 和亚马逊就不可能成功,原始的大数据正是他们成功的原因。

除非每个医生都同时拥有无与伦比的直觉,否则计算机就应该用来提供更好的医疗。如果我们在处理过程中摒弃小数据思维,并开始建立真正的大数据,那么大数据在医疗支持中将会发挥更加巨大的作用。

解读《大数据时代》:为什么不是随机样本

在《大数据时代》一书中,迈尔-舍恩伯格给出了著名的关于大数据时代的三大特征:

  • 不是随机样本,而是全体数据;
  • 不是精准性,而是混杂性;
  • 不是因果关系,而是相关关系。本文解读一把为什么“不是随机样本,而是全体数据”。

为什么是随机样本?

首先什么是随机样本。如果你碰巧哪天在街头被人拦住做问卷调查,或者接到电话问卷调查,恭喜你,你成为某项统计分析的随机样本。

很显然,迈尔大叔所例举的美国人口普查以及有关细分领域分析预测不准确的例子,谈到的随机样本应该就是指问卷调查。或许随机样本是迈尔大叔在书中唯一展示其有关统计学知识的部分。

那么,为什么要用随机样本呢?原因有下:

  • 全体数据获取不可能或者成本太高。比如说你想知道北京有多少人吃过麦当劳,你不可能每个人都问一遍;
  • 有资源限制。如果你要在3天内给出答案,即使不计成本你也做不到去问每个人;三是没有必要。因为我们可能只是需要知道吃过麦当劳的人数在北京总人口中的百分比,而且允许一定的误差,所以只要随机取样,通过统计分析就能够得到比较满意的答案。

根据统计学原理,如果我们随机取样1000人进行问卷调查,如果结果是某种百分比,那么得到的结果在置信度90%时的误差应该在3%左右。

显然,在数据需要通过问卷调查的形式获取时,随机样本就成为我们的首选甚至是唯一的选择。

所以随机样本在小数据时代很流行。

为什么不是随机样本?

迈尔大叔对随机样本不高兴,原因有三:

  • 实现采样的随机性非常困难;
  • 当人们想了解更深层次的细分领域的情况时,随机采样的方法就不可取了;
  • 人们只能从采样数据中得出事先设计好的问题的结果。

白话一把迈尔大叔的内容。
样本难以真正随机是因为你无法根据全体数据的分布去取样。比如说你电话调查,有电话的人口就已经不是随机的样本空间;
如果你要进一步知道海淀区30岁以下女性吃过麦当劳的人口比例,结果误差就会超过预期;
问卷以外的内容你是无知的。比如说你突然想要知道吃过麦当劳的人中有多少同时吃过肯德基但你却没有在调查中问这个问题,那你就甭想得到答案。

全体数据在哪儿?

我们已经处在大数据时代,如果你要了解北京有多少人吃过麦当劳,你会怎么做?

显然,麦当劳童鞋并没有为我们准备好必要的所谓全体数据。或许麦当劳能够告诉我们N多年来他们在北京地区卖出了多少个巨无霸,或许麦当劳会进一步告诉我们N多年来北京地区有多少人次光顾过麦当劳。可是,麦当劳却没有数据告诉我们现而今北京人有多少人吃过麦当劳。

看来现实世界比迈尔大叔想象的要复杂得多。告别随机样本,我们需要全体数据。可是,我们所需的北京地区吃麦当劳的全体数据存在吗?

未来这个全体数据会存在吗?也许,除非麦当劳必须先注册再购买。你认为麦当劳何时会实现先注册再购买呢?这样做真的有必要吗?

即使如此,你仍旧面临如何解决例如“究竟谁吃了全家桶”的问题。

全体数据是个抽象的概念。但涉及到具体问题,所需的全体数据很有可能并不存在,即使是在大数据时代。

要知道北京多少人吃过麦当劳,可能还是需要进行随机样本分析,哪怕是在大数据时代的今天。

看来即使是在大数据时代,我们还是无法告别随机样本分析。

何为全体数据?

在《大数据时代》一书中,全体数据是与随机样本相对立的概念。迈尔大叔这样描述道:“首先,要分析与某事相关的所有数据,而不是依靠分析少量的数据样本。”因而,全体数据明白无误地就是“所有的相关数据”。

如果我们想要知道“北京地区有多少人吃过麦当劳”,这个全体数据就应该是北京地区所有人吃麦当劳的情况。很遗憾,我们知道这个全体数据是不存在的。

看看《大数据时代》书中全体数据的一个案例:艾伯特-拉斯洛·巴拉巴西和他的同事想研究人与人之间的互动。于是他们调查了四个月内所有的移动通信记录——当然是匿名的,这些记录是一个为全美五分之一人口提供服务的无线运营商提供的。这是第一次在全社会层面用接近于“样本=总体”的数据资料进行网络分析。通过观察数百万人的所有通信记录,我们可以产生也许通过任何其他方式都无法产生的新观点。

迈尔大叔的这个全体数据是“一个为全美五分之一人口提供服务的无线运营商提供的”“四个月内所有的移动通信记录”。啥意思?说白了,就是一家移动公司四个月的通信记录。令人不解的是,虽然这仅仅是全美1/5人口四个月的通信记录,迈尔大叔却说“这是第一次在全社会层面用接近于“样本=总体”的数据资料进行网络分析。”

“全社会”与“全美1/5人口”,“样本=总体”与“四个月内所有的移动通信记录”,其间如何联系在一起?

还有,如果四个月的数据是全体数据,那三个月或者两个月的数据算不算全体数据呢?

看来貌似简单的全体数据,在迈尔大叔这里也不是那么简单。

全体数据的前世今生

上面案例中涉及的全体数据,实质上就是一家移动运营商数据库中四个月的通信数据。从《大数据时代》中对全体数据的诸多应用可以看到,迈尔大叔所说的全体数据,实际上就是我们通常所说的数据库数据。

“全体”或许只是指包含了数据库中所有的记录。

即使在互联网流行之前,因为有了计算机以及数据库技术,人类已经开始数据的记录和累积。特别是一些特殊的行业如银行、电信等,顾客的购买记录最先被完整地记录下来,从而构成了迈尔大叔所谓的全体数据。

这绝对是小数据时代的故事。也就是说,所谓全体数据并不是大数据时代的产物,全体数据在小数据时代就已经普遍存在了。

对所谓全体数据的分析以及基本的统计分析方法也是小数据时代的普遍现象。

被人们津津乐道的食品超市啤酒搭着尿布一起卖的故事,其数据来源甚至可能都不是所谓全体数据,因为食品超市并没有强求每个消费者都要注册后才能购买。

全体数据并不是我们想象的那样是“所有的数据”,甚至也不是迈尔大叔想象的那样是“所有相关的数据”。全体数据依旧是部分数据,比如说只包含了一家公司的顾客数据。全体数据依旧是取样数据,比如说上面案列中的四个月的取样。

谁说取样必须只是随机取样呢?

全体数据的分析误差

迈尔大叔对随机样本生气的一个主要原因,就是基于随机取样的分析与真实情况有统计误差,不准确。那么,有了全体数据,我们的分析结果就一定没有误差了吗?

假定我们确实有关于北京地区吃麦当劳的全体数据。是的,如果有了所谓的全体数据,关于单个变量的分析结果确实没有统计上的误差,实际上此分析也根本用不到统计学的概念。可是,我们花那么大精力搞一个全体数据,肯定不只是计算一些百分比,或者进行一些简单的单元分析。我们要用这个全体数据来做更多的事,比如说预测哪些顾客下次来会购买巨无霸。分析师会给我们一批顾客名单,告诉我们:这些顾客75%的可能下次购买巨无霸。

75%的可能?也就是说这个顾客还有25%的可能下次不买巨无霸。这就是分析误差。

事实是,除了单个变量的计算(对全体数据来说不是统计分析),全体数据在做任何统计分析时,分析结果都是概率性的,都有统计意义上的误差。

可是《大数据时代》给读者的印象是,只要用了全体数据,你就不用再担心误差了。

全体数据的取样

根据《大数据时代》,用了全体数据,我们就再也不需要取样了。事实果然如此吗?

有意思的是,在上面迈尔大叔给我们提供的全体数据分析的案例里,研究人员只取了数据库里4个月的数据。为什么只是4个月的数据?难道该企业的数据库只有4个月的数据?

当然不是!事实应该是研究人员从企业的数据库里之取样了四个月的数据。那么,为什么即使有了“全体数据”,研究人员还只取了其中四个月的数据?

因为对数据分析来说,绝对不是数据越多越好。即使我们拥有无与伦比的计算速度,过多的数据也会浪费研究人员的时间资源,不必要的数据甚至可能影响分析的结果。何况根据迈尔大叔的介绍,4个月的数据取样已足以得到满意的研究结果了。

看来有了全体数据,也有必要进行数据取样。

更多关于全体数据的取样

就上篇文章中迈尔大叔所举的那个全体数据的例子来说,分析人员只取了数据库中四个月的数据进行分析。为什么?因为分析的任务不是要得到数据库中每个顾客长期的人脉关系,而是通过一定时期内人际关系的分析,了解拥有不同人际关系的个人对整个社区关系网的影响。因此,适当的阶段性数据的取样就十分必要。

试想一下,如果研究人员采用了数据库中所有的数据,则可能将更多的人际关系发展的变化也包括进来,这反倒可能影响研究的结果。所以说,全体数据不加区别的应用并不一定是最佳的选择。

再举一个对全体数据进行取样分析的例子。早年我曾经做过一个搜索引擎算法分析的应用,原理就是根据随机取样的关键词,到各大搜索引擎(美国的)上去爬取搜索结果的网页,分析各种SEO技术对各搜索引擎网页排名的影响。时间长了,我所爬取的网页数据库也就成了迈尔大叔所谓的全体数据。我是不是应该每次分析时都使用所有的数据呢?当然不是。因为搜索引擎在不断改变其搜索排名的算法,如果我将已经过时的排名网页信息包括在我的搜索引擎排名关键因素的分析中,那就会适得其反导致分析结果的不准确。

迈尔大叔数次提起的有关飞机票价预测的数据分析,也存在着同样的情况。航空公司可能会改变其机票价格的决定机制。如果在票价预测分析中包含了已经过时的票价决定机制的信息,那分析的结果就会受到干扰而增加误差。

数据并非绝对越多越好。即使是全体数据,也要根据分析任务进行必要的取样。原因可能是多种,适当的取样是优化分析过程和分析结果的一种选择。而且,取样也不只限于随机取样。

全体数据的陷阱

第一个陷阱就是所谓全体数据,在绝大多数情况下并不是“全体”。我们来看看那些绝对重量级的互联网企业,它们最可能拥有所谓全体数据,比如说谷歌、百度、FACEBOOK、淘宝天猫,哪个公司的数据库能够被称为“全体”呢?

一个企业有了数据库,往往更愿意局限于自己的数据库来进行各种分析。有句老话叫做“种瓜得瓜种豆得豆”。这个全体数据分析的陷阱就是:如果你种的是瓜,你就分析不出豆来。

例如某新闻网站经常用很黄很暴力的新闻吸引网友下载它的新闻app。久而久之,其app的用户就可能是“黄衫军”了。如果这时你想通过这个“全体数据”的分析了解怎样在他们中间推销红汗衫,肯定是不妥的。

再举一个简单的例子。比如说你通过对全体数据的分析,得出某款商品是你顾客最喜欢的。但实际情况果真如此吗?或许顾客喜欢的商品根本就不在你的全体数据里,所以你再怎么分析也根本得不到你的顾客最喜欢什么样的商品。

外面的世界很精彩。你经常需要跳出全体数据,来体验外面世界的精彩。

全体数据与随机样本

随机样本与所谓的全体数据应该属于两个不同范畴的概念,两者并非杨白劳Vs黄世仁,阶级斗争不可调和。更重要的是,无论是随机样本,还是所谓的全体数据分析,都不应该是一个时代的代表。

事实是,即使拥有全体数据,随机取样的问卷调查分析也是需要的,甚至是必须的。

因为全体数据几乎都不是什么真正的“全体”数据,不可能包含所有我们想了解的信息,所以经常需要在全体数据的基础上获得更多的信息。其中一种来源是与其他“全体数据”对接,比如说在美国可以根据个人社会保险号对接个人信用信息;另一种方法就是在“全体数据”中随机(或用其他方法)选取部分样本,然后对这些顾客进行问卷调查,以补充数据库中缺失的信息,然后通过对接将问卷调查的信息融入到全体数据的分析中。

这样的分析迈尔大叔应该没有听说过,否则他就不会将随机样本与全体数据这样绝对地对立起来。但这样的分析却在小数据时代就被普遍应用了。

文章最后对随机样本和所谓全体数据做个总结:

  • 迈尔大叔所谓的全体数据,在绝大多数情况下只是指企业的数据库数据;
  • 对绝大多数问题,所谓的全体数据可能都不存在;
  • 随机样本与所谓全体数据并不是你死我活的绝对对立,而是可以和平共处,甚至是相互补充;
  • 绝大多数所谓对全体数据的分析方法,早在小数据时代就已经普遍存在;
  • 随机样本分析在大数据时代也还会继续展示其存在价值;
  • 即使是所谓的全体数据,往往也有必要通过取样进行更有效的分析;
  • 注意全体数据的陷阱。分析所谓全体数据时,应该想到外面世界可能更精彩。


作者:唐人