推荐序1

又来一个找我写序的……感觉自己都快成了写序专业户,惭愧惭愧。以前叫我写序的作者我一般都不熟,但这次这位我还算熟,所以终于可以说点电视上不让播的内容。八年前我们一同进入爱荷华州立大学(俗称 Ames 村办大学)统计系读博,当时我们的背景完全相反:我在测度论课上奄奄一息、在 R 里如鱼得水,林荟在 R 入门课上死去活来、在理论课上羽化登仙。毫不脸红地吹个牛:要不是我当年的提携,她早就能写出这本书了。

玩笑归玩笑。总的来说,看到这本书时我还是吃了一斤。我读博的时候一定是遇到了一个假林荟。尽管上学的时候她在村办大学的牲口学院(好吧,兽医学院)有一些科研经历,但我记得也就是画画 ROC 曲线、跑跑逻辑回归而已。士别三年,竟然已经成了一只 R 语言老司机,而且还写出一本主题这么宏大的书。书里举的例子都是种子、生猪、农业论坛,鬼知道她这几年都经历了写什么。以前她抗拒写代码,主要原因是对着电脑时间长了怕脸上长痘,看来后来还是决定为(数据)科学献身了。我们假装感动三秒。

书的内容我大致看了一遍,因为都是熟人,我评价起来也就不客套了;按书的标题,分两方面说:R 语言和数据科学。

一般来说,我不在乎别人的 R 代码写得好不好,因为反正写得再好也没我写得好(明年请在我的坟头多烧两张纸)。我对计算机相关书籍的最低标准是不要把“阈值”写成“阀值”,我仔细看过了,本书作者写的是对的。看 R 相关的书籍时,我也有个怪癖,就是找有没有 if (x == TRUE) 或者 y[which(y > 3)] 这样的语句,其实语句都没错,只是看看作者的强迫癌是不是到了晚期(if (x) 和 y[y > 3] 就已足够)。本书作者似乎没有患强迫症。不过这也无妨,很多时候我觉得对代码吹毛求疵反而影响效率,而且不太老的司机分享的经验对新司机可能更有用。在我眼中,这本书在 R 方面有两个亮点:一是里面介绍了很多 R 的附加包,例如 caret,读者拿起来应该能很快上手;二是用几乎以假乱真的模拟数据,这一点可能会为人诟病(不是真实数据),但我觉得模拟数据有其独特的价值,就是你掌控着整个小宇宙,数据从生成到建模到解释,一路的过程你都可以看清楚,而且可以变着法子换新数据玩,学习模型使用方法。

数据科学我就不敢妄言了,毕竟我毕业之后已经转向纯码农,很少做有关统计或数据的一线工作。就我的快速粗读来看,我感觉话题的覆盖范围很广,但深度也比较适宜。广度和深度通常只能二选一,也没有优劣之分。我读书少,也限于篇幅,就随意翻两页点评两个例子吧,从我自己的视角管窥一下本书的价值。比如多年前我就坚信,讲主成分分析的人如果不马上讲偏最小二乘就是耍流氓,尤其是主成分回归,是流氓中的流氓,而本书作者很明确地指出了主成分回归的弊病。再比如 Bootstrap 方法,作者讲,“假如你只有 1 个样本,难道你不停有放回抽样就能得到大样本了?”这是很漂亮的一拳。很多方法因为实施简单,所以很容易让人忘了它们的先决条件。我非常反对迷信模型或方法甚至软件,世上没那么多万金油。基于同样的原因,我很欣慰看到本书不是清一色 ggplot2 图形(虽然有些图可能长得略丑,但想得美就好了)。

仔细看完本书的话应该能看出作者是苹果粉(某一页上画图时字体用的是 Songti SC)以及段子狗。都读完了博士,选电脑还这么看脸,还整天为各种段子操碎了心,这位数据科学家也是蛮拼的。

谢益辉 写于奥马哈