【嗨!探险家们!】
要用一些大无畏的探险家们——比如斐迪南.麦哲伦、詹姆斯.库克、罗尔德.阿蒙森——来和我这样的人比较的话,是件挺困难的事。这些探险家乘风破浪,披荆斩棘,直面未知的险境,去发现新的世界(至少对他们的文明来讲算新)。而我迄今为止,运动方面最大的成就大概就是完成了十公里的慈善短程马拉松——其实是走的。
过去的那些探索者们在发现了未知的地区、宣示所有权的时候,那可真煞是风光。克里斯托弗.哥伦布只需要从欧洲一直向西航行,就能发现两块大陆。可我们今天的选择就少多了。地球上已经没有多少没被发现的大陆了,即使是海洋中最深的地方——马里亚纳海沟,也已经被人征服了。
但是,我的确也是一位探险家,而且将要阅读这本书的你,也是。尽管已知的现实世界已经被人征服得差不多了(见图0-1),未知的世界却依然傲视着我们。
我们大家生来都具有一种为这身边的世界感到吃惊而诧异的感觉。随着我们渐渐成长,渐渐厌倦,很多人把这种感觉丢弃了。我认为,这其中的部分原因是,我们其实对周遭世界理解得还不够,同时也漠不关心。点一下遥控器,电视机就开了——这是怎么做到的?当我们第一次提这样的问题时,很可能会遭到默然的凝视,继而摆摆手抛之脑后。只要能看到下一季的American Idol,谁在乎这种问题呢?于是别人的这种反应也就很快变成了我们自己的反应。
图0-1 去往南极点的斯科特远征队
(照片来自Public Domain Review:
http://publicdomainreview.org/2012/03/29/remembering-scott)
那么,在这本书里,我将带你走过蜿蜒的路途,找回那个原始而本真的你。我们会再次发现魔力的存在。在全书结束的时候,很有可能你将从我们停下的地方继续进发,继续探索你自己的征程。
【数据,数据,遍地都是】
在我们生命的每一分钟,每一秒,我们都深陷于数据的泥沼之中。我这话并不是隐喻,也绝非在单纯地夸大大数据的存在。
其实,我们周遭的数据极其之多,我们的眼睛已经进化得能够在每一毫秒之中切断一会儿与环境的联系。在一种称作“扫视掩蔽”的现象中,随着眼球的快速转动(即扫视),大脑会暂停一会儿,以消除投射到视网膜上的模糊图象。模糊图象的用处不太大,所以大脑就丢弃掉它们,使我们在扫视时有效地失明(我们自己意识不到)。
我们今天处理数据的方式和这种扫视掩蔽效应有很多相似之处。数据来得实在太快太频繁,我们常常将它们屏蔽掉。周围有很多数据,可以供我们提取并分析,找出问题的答案,但麻烦总是在于,应该怎么做到。
在(遥远的)过去,总是天才们才拥有利用数据与学识来破解秘密的技巧,只有运气好的极少数人才有机会偶然发现答案。现在再也不是这样了。尽管智力仍然是一个先决条件,但由于计算机和程序设计的出现,如今,在提炼信息金矿的路上,我们可以从无聊、繁琐、重复性的数据处理中脱离出来了。
只是,我们还并没有做到。
——无论如何,至少对于大多数人来说,的确没有。例外的情形是科学家和数学家们,他们早就紧紧抓住这些工具更高效地工作。如果你是来自这两大阵营的人,那你可能已经充分利用好计算机的威力了。
可是,对于程序员和其他很多人来说,他们最开始编写计算机程序只不过是为了提供商务用的工具,或者是辅助改善商务过程。所有这些,都是为了利用计算机来降低成本,增加收入,提高效率。在很多职业程序员看来,编程只是个差使,枯燥乏味,不用动脑,养家糊口而已。我们其实已经忘记,在探索发现中,计算机的前景多么广阔,程序设计的威力多么强大。
【探索世界】
这本书正是为了要试图找回发现的美妙和神奇。我希望这本书能够揭示一些你之前不知道或不了解的事情。我还希望它能够帮助你,通过我们每天触手可及的世界去发现新的大陆。最后,我更希望,你能够通过它获取探索的能力,用程序设计和数据分析去发现新鲜事物。
尽管在这本书里,我们所要探索的仍是现实世界,但更多情况下并不是这样。要在比特和字节之间发掘全世界,这有点困难。因此,如果我们无法探索我们所生存的这个世界,那我们就要尝试其他的——换言之,我们要使用模拟(simulation)。
模拟是用来探索我们无法控制的事物的一种好办法。我们每时每刻都在做着模拟。在我们小的时候,我们自己总是创造出假想的世界并且活在其中。借由此,我们也能够更好地去理解现实世界。我们至今仍然在做着模拟,通过神奇的电视(尤其是电视连续剧)和电影——我们会把荧幕上的角色视作真实的。且不论是好是坏,至少像电视机这样的模拟手段的确影响了我们的现实生活,甚至还会影响我们的梦境。例如,由美国心理学会所开展的一项调查显示,六十多岁的人中(在彩色电视机尚未流行的年代成长起来),约20%会回想起他们做过的梦是鲜亮生动的。而三十岁以下的人中,有80%确信他们的梦境是彩色的[1]。
在这本书里,我们会通过模拟来创建实验,分离变量,并提出假设来解释实验结果。对于我所描述的实验,或者我所提出的假设,你可能同意,也可能反对,但这些都不重要。通过我们共同走过的这段旅程,我真正希望你获得的,是能认识到,编程所能够解决的,远远不止于商业活动而已。我希望能够达到的是,你最终可以设计出你自己的实验,实现它们,并发现你自己的新世界。
【收拾行囊】
我们将通过程序设计和数据分析来进行这场宏伟的探险。那么,你需要准备些什么呢?当然要准备些工具了,这也正是接下来两章的主题。可用的工具并不仅有这些,但在这本书中我们只用这些。
我们要用到的这两种工具就是Ruby和R。我之所以选择它们,是有着特定的目的的。Ruby很好学,也很好读,特别适合用易读的代码来解释一些概念。我会用Ruby来进行模拟和预处理,得到数据。另一方面,R则长于分析数据,以及生成可视化的图表。
尽管要欣赏这本书的话,你并不需要一定会使用Ruby和R进行编程,但我会假定你具备一些对编程的基本理解。具体地说,我会假定你修读过计算机科学或相关方面的课程,或者是使用过任何一种编程语言进行过一些简单的程序设计。
在两章之后,其他每一章都或多或少是自封的。每一章都会就一个思想开展探索,从对现存问题的理解开始,接下来尝试去回答它,通过模拟或一些处理来获取数据。然后就要分析数据,基于分析得出一些结论。
要探索的思想来自于不同的领域,从经济学到进化论,从医疗保健到工作环境设计(具体场景是找出办公室卫生间的合理数量)。某些思想显得很宏大,而某些思想则非常私人化。之所以选择如此多元的思想,正是为了展示,对探索可能性的限制其实只来自于我们自己创造力的贫乏。
每一章在一开始的时候都显得规模不大,但我们会逐层逐层地累加上复杂性,以将其核心的思想具体化。实验会围绕着基本思想进行,而最终所得出的假设、论断和结果都具有一定的偶然性。比如,对于我的结论和对结果的阐释,你可能同意或者反对。但就这本书而言,探索的过程要比结果更为重要。
一切就绪,让我们就此出发!祝愿你愉快地走过接下来的两章,并享受之后的探索——勇敢地探索吧!
最后更新 2012-08-12 01:36:38