Statistical Modeling: The Two Cultures
利奥·布雷曼(Leo Breiman)
原文出自:Statistical Science, Vol. 16, No. 3 (Aug., 2001), pp. 199–215
阅读说明:文中以 “HumanLanguage” 开头的引用块是为统计初学者补充的通俗解读,不属于原文,熟悉相关概念的读者可直接跳过,不影响正文阅读。
导读
这是 Leo Breiman 在 2001 年对统计学界主流建模范式的一次公开质疑。他把用数据回答问题的方式分成两种文化:数据模型先假定数据由某个具体的随机机制产生(线性回归、逻辑回归、Cox 模型等),再估计其中的参数,并把参数当作对自然界的解释;算法模型不对内部机制作任何假定,只用在新数据上的预测准确度来检验模型是否抓住了数据里的结构。他估计当时约 98% 的统计学家属于前者,并指出这种偏好的代价:拿拟合优度检验为模型背书、把回归系数直接当成结论、以及回避那些写不成简洁公式的问题。
他自己属于剩下的那 2%,而且从不掩饰:第 2 节自陈“我如何成为这极少数第二种文化成员”,第 9 节直言“迄今为止,我最喜欢的方法是随机森林”——CART 与随机森林都出自他手。所以这不是一篇中立比较,而是一份为算法建模所作的辩护。他承认数据模型带来过许多成功,但落点始终是:对它近乎排他的依赖,让统计学界错过了大量真实问题。
两种文化真正的分歧,是凭什么相信一个模型:数据模型看拟合优度检验和残差图,算法模型看它在没参与训练的数据上准不准。文中三个概念之所以对读临床文献的人有用,是因为它们分别拆掉了前一种做法的一个环节:
- 罗生门效应(第 8 节)拆的是“唯一性”。同一批数据往往同时存在许多预测精度几乎相同、但变量构成完全不同的模型。既然换一组变量也能拟合得一样好,“本研究中 X 显著”就不足以说明 X 是真实机制里的那一环。
- 奥卡姆困境(第 9 节)拆的是“可解释性的代价”。准确度与可解释性经常此消彼长:越容易讲成一个干净故事的模型,往往对数据刻画得越粗。数据模型最吸引人之处——系数可以直接读出来——恰恰是它拟合更差的地方。
- 维度灾难(第 10 节)拆的是“问题选择”。为了让模型可估、可解释,数据建模习惯把变量砍到很少;Breiman 认为高维不必然是负担,关键在方法能否利用它。
作者对拟合优度检验的批评值得单独留意:他做过的七维模拟显示,标准检验要到非线性极端时才会拒绝线性假设;Bickel、Ritov 和 Stoker(2001)进一步表明,除非事先精确指定备择假设的方向,这类检验的功效都很低。换句话说,残差图“看着没问题”并不等于模型拟合得好——这也是罗生门效应能长期不被察觉的原因。
具体到读文献,这三点的用处不在判断一项研究是真是假,而在判断一个建模结果能撑起多重的结论。看到“校正后 HR 0.72、P<0.01,提示 X 是独立预后因素”这类表述时:罗生门提醒你,换一组协变量很可能得到同样漂亮、结论却不同的模型;奥卡姆提醒你,这个模型之所以好读,部分代价就是刻画得更粗;拟合优度那段则提醒你,“模型拟合良好”这句话的证明力远比它看上去弱。结论不是“这篇不可信”,而是它的显著性撑不起讨论部分常常追加的那层机制解读。
需要提醒的是,Breiman 讨论的是“预测”与“信息提取”之间的分工,不是因果识别。预测得准不等于找到了因果结构;反过来,一个可解释的回归模型也不因为系数显著就获得了因果含义。这与因果推断要解决的问题不在同一层面,分开读更清楚。
以下为原文正文。
摘要
在使用统计建模从数据中得出结论方面存在两种文化。一种文化假设数据是由给定的随机数据模型生成的;另一种文化则使用算法模型,并将数据生成机制视为未知的。统计学界一直致力于几乎排他性地使用数据模型。这种执着导致了无关紧要的理论、值得怀疑的结论,并阻碍了统计学家去研究大量有趣的现实问题。无论在理论还是实践上,算法建模在统计学以外的领域中都得到了迅速发展。它既可以用于大型复杂的数据集,也可以在较小的数据集上作为一种比数据建模更准确且信息量更丰富的替代方案。如果我们的目标是利用数据来解决问题,那么我们需要摆脱对数据模型的排他性依赖,并采用更多元化的工具集。
HumanLanguage:全文围绕两种“做数据”的思路展开——① 数据模型:先假设大自然按某个整洁的公式运作,再去估公式里的未知数;② 算法模型:不管里面是什么公式,只要能找到一个预测准的算法就行。作者的核心观点是:统计学界过度偏爱第①种,反而错过了很多问题。
1. 引言
统计学始于数据。我们可以将数据看作是由一个黑箱生成的,其中输入变量向量 (自变量)从一侧输入,而响应变量 从另一侧输出。在这个黑箱内部,自然界发挥作用,将预测变量与响应变量联系起来,其示意图如下:
HumanLanguage:“黑箱”只是个比喻——我们只看得到“喂进去的 ”和“吐出来的 ”,看不见里面的运作机制。 是你测量到的一堆特征(预测变量), 是你想预测的东西。
分析数据有两个目标:
- 预测(Prediction):能够预测未来的输入变量会产生什么样的响应;
- 信息(Information):提取关于自然界如何将响应变量与输入变量联系起来的信息。
针对这些目标,有两种不同的方法:
数据建模文化
这种文化中的分析始于对黑箱内部假设一个随机数据模型。例如,一种常见的数据模型假设数据是通过以下方式独立抽样生成的:
HumanLanguage:数据建模的套路是——先猜一个公式(比如 )来描述黑箱内部,再用数据把公式里的“参数”(可调的数字旋钮)估出来,然后就相信这个公式。
通过数据估计参数值,然后将该模型用于获取信息和/或进行预测。因此,黑箱被填充为如下形式:
- 模型验证:使用拟合优度检验和残差分析进行“是或否”的判断。
- 估计的文化人口比例:占所有统计学家的 。
算法建模文化
这种文化中的分析认为黑箱内部是复杂且未知的。他们的方法是找到一个在 上运行的函数(算法) 来预测响应 。他们的黑箱看起来像这样:
HumanLanguage:算法建模的套路正相反——不去猜里面的公式,只要找到任意一个能把 预测准的算法 就够了,哪怕这个算法本身也是个看不懂的黑箱。好坏只看预测准不准。(后文两处 98% 与 2% 是作者对当年两派人数的粗略估计。)
- 模型验证:通过预测准确率来衡量。
- 估计的文化人口比例:占统计学家的 ,但许多分布在其他领域。
在本文中,我将论证统计学界对数据模型的过度关注已经:
- 导致了无关紧要的理论和值得怀疑的科学结论;
- 阻碍了统计学家使用更合适的算法模型;
- 阻碍了统计学家去解决令人兴奋的新问题。
同时,我还将回顾机器学习中算法建模的一些有趣的新发展,并观察其在三个数据集上的应用。
2. 路线图
了解我如何成为这极少数第二种文化成员的经历可能会带来启发。在担任了七年学术概率学者后,我辞职并成为了一名全职的自由咨询顾问。在做了十三年的咨询后,我于 1980 年加入伯克利统计系,并一直留任至今。我作为顾问的经历塑造了我对算法建模的看法。第 3 节描述了我参与的两个项目。列出这些项目是为了展示我的观点是如何从这些实际问题中成长起来的。
当我回到大学并开始阅读统计学期刊时,那些研究与我做咨询时的工作相去甚远。所有的文章都以数据模型开始,也以数据模型结束。我对统计学界发表的理论研究的观察写在第 4 节中。
数据建模在分析数据和获取关于数据生成机制的信息方面给统计学领域带来了许多成功。但同样存在滥用,导致对潜在机制得出值得怀疑的结论,这在第 5 节中进行了探讨。紧接着是一场讨论(第 6 节),关于对数据模型的执念如何阻碍了统计学家进入新的科学和商业领域,在这些领域中收集到的数据并不适合使用数据模型进行分析。
在过去的十五年里,算法建模在应用和方法论上的增长非常迅速。这主要发生在统计学界之外的一个新群体中——通常被称为机器学习——主要由年轻的计算机科学家组成(第 7 节)。这些进展,尤其是在过去五年中,令人惊叹。从这些进展中可以学到的三个最重要的认知变化将在第 8、9 和 10 节中进行阐述,并与以下名字相关联:
- 罗生门(Rashomon):优秀模型的多样性;
- 奥卡姆(Occam):简单性与准确性之间的冲突;
- 贝尔曼(Bellman):维度——是诅咒还是福音?
第 11 节的标题是“来自黑箱的信息”,它的重要性在于展示了:与数据模型相比,算法模型能够针对输入和输出之间关系的结构提供更多、更可靠的信息。文中利用了两个医学数据集和一个基因数据集来对此进行说明。文章末尾的词汇表解释了一些并非所有统计学家都熟悉的术语。
3. 咨询项目
作为一名咨询顾问,我为美国国家环境保护局(EPA)以及州和联邦法院系统设计并协助监督了多项调查。我为 EPA 设计了对照实验,并为美国交通部和加州交通部分析了交通数据。最重要的是,我参与了各种各样的预测项目。以下是一些例子:
- 预测次日臭氧水平;
- 利用质谱鉴定含卤素化合物;
- 利用高空雷达回波预测船只类别;
- 利用声纳回波预测潜艇类别;
- 手键摩尔斯电码的身份识别;
- 化学品毒性预测;
- 高速公路交通崩溃原因的在线预测;
- 语音识别;
- 州法院系统刑事审判延迟的根源。
为了理解这些问题的本质以及解决它们所采取的方法,我对列表中的前两个项目进行了更详细的描述。
3.1 臭氧项目
在 20 世纪 60 年代中后期,臭氧水平成为洛杉矶盆地严重的健康问题。当时设立了三种不同的警报级别。在最高级别下,所有政府工作人员都被指示不要开车上班,孩子们不准去操场,户外运动也被劝阻。
当时臭氧的主要来源是汽车尾气排放。这些尾气上升到低层大气中,并被逆温层困在那里。在阳光的辅助下,一种复杂的化学反应在早高峰通勤后的两到三个小时内发生并产生臭氧。警报是在早上发布的,但如果能提前 12 小时发布,将会更加有效。在 20 世纪 70 年代中期,EPA 资助了一项重大项目,以研究是否可以提前 12 小时准确预测臭氧水平。
洛杉矶盆地的通勤模式是规律的,在任何给定的白昼小时内,工作日之间的总变化仅有几个百分点。在总排放量大致恒定的情况下,最终生成的臭氧水平取决于前几天的气象条件。项目收集了一个庞大的数据库,包括远至俄勒冈州和亚利桑那州的美国气象站的低空和高空测量数据,以及盆地内和附近地区数十个空气污染站的每小时地表温度、湿度和风速读数。
总共有 7 年时间内超过 450 个气象变量的每日和每小时读数,以及盆地内相应的每小时臭氧和其他污染物数值。设 为第 天气象变量的预测向量。由于包含了前几天的信息, 中有 450 多个变量。设 为第 天的臭氧水平。那么问题就是构建一个函数 ,使得对于未来的任何一天以及当天的未来预测变量 , 都是次日臭氧水平 的准确预测器。
为了估计预测准确性,前五年的数据被用作训练集,最后两年被留作测试集。在 20 世纪 80 年代以前,可用的算法建模方法现在看来还很原始。在那个项目中,我们运行了大型线性回归,随后进行了变量筛选。之后加入了保留变量的二次项以及它们之间的交互作用,并再次使用变量筛选来精简方程。最终,该项目失败了——最终预测器的误报率太高。我很遗憾无法用今天的工具重新审视这个项目。
HumanLanguage:注意这里的做法——前五年数据用来建模型(训练集),最后两年藏起来不看(测试集),等模型定稿了再拿它打分。这是算法建模文化检验模型的标准动作:只有在“模型没见过的数据”上仍然准,才算数。用同一批数据既建模又自评,几乎必然高估自己。这个划分从本节起贯穿全文。
3.2 氯项目
EPA 每年对数千种化合物进行抽样,并试图确定它们的潜在毒性。在 20 世纪 70 年代中期,标准程序是测量化合物的质谱,并试图从其质谱中确定其化学结构。
测量质谱既快又便宜。但是,从质谱确定化学结构需要经过训练的化学家进行艰苦细致的分析。雇佣足够多的化学家来分析所有产生的质谱,其成本和可行性让 EPA 望而却步。许多有毒化合物含有卤素。因此,EPA 资助了一个项目,以确定是否可以从化合物的质谱中可靠地预测其是否含有氯。
质谱是在磁场存在下,通过用离子轰击化合物产生的。化合物的分子发生分裂,较轻的碎片比较重的碎片在磁场中弯曲得更多。然后碎片撞击吸附带,碎片在吸附带上的位置由该碎片的分子量决定。该位置的曝光强度衡量了该碎片的出现频率。最终产生的质谱具有反映从分子量 1 到原始化合物分子量的碎片频率的数字。峰值对应于高频碎片,且存在许多零值。可用的数据库包含 30,000 种已知化学结构和质谱的化合物。
质谱预测向量 具有可变的维度。数据库中的分子量从 30 到 10,000 以上不等。要预测的变量是:
问题在于构建一个函数 ,使其成为 的准确预测器,其中 是该化合物的质谱。
为了衡量预测准确性,数据集被随机分为 25,000 个样本的训练集和 5,000 个样本的测试集。我们尝试了线性判别分析,然后是二次判别分析。这些方法很难适应可变维度。到这时,我开始思考决策树。我们研究了质谱中氯的特征。通过设计 1,500 个可应用于任何维度质谱的“是-否”问题,将该领域知识融入决策树算法中。结果得到了一个决策树,它在含氯和不含氯化合物上的预测准确度都达到了 95%(参见 Breiman, Friedman, Olshen 和 Stone, 1984)。
HumanLanguage:决策树就是一串嵌套的是非题:先问一个问题,按答案分到左右两边,每边再接着问,直到分出结论。这里的巧思是把化学家的领域知识编成 1,500 个可以问任何质谱的是非题,让算法自己决定先问哪个。它最大的优点是每一步都看得懂——这一点在第 9 节会变成关键。
3.3 对统计分析的认识
当我离开咨询工作回到大学时,我对利用数据寻找问题答案有以下几点认识: (a) 专注于寻找优秀的解决方案——这就是顾问获得报酬的原因。 (b) 在投入建模之前,先与数据“生活”在一起。 (c) 寻找能提供好解决方案的模型,无论是算法模型还是数据模型。 (d) 测试集上的预测准确性是衡量模型好坏的标准。 (e) 计算机是不可或缺的合作伙伴。
4. 重返大学
关于大学里的研究是什么样子,我得到了一个提示。20 世纪 70 年代末,我的一位朋友(伯克利统计系的一位著名统计学家)在洛杉矶拜访了我。在我向他描述了决策树方法后,他的第一个问题是:“数据的模型是什么?”
4.1 统计学研究
在我回来后,我开始阅读理论统计学的旗舰期刊《统计学年刊》(Annals of Statistics),感到有些困惑。每篇文章都以如下形式开头: “假设数据是由以下模型生成的:……” 随后是探索推断、假设检验和渐近性的数学推导。关于《统计学年刊》上发表的理论对于作为一门处理数据的科学的统计学领域的有用性,存在着广泛的意见。我处于这个评价光谱的极低端。尽管如此,依然有一些结合了精妙理论和重大应用的好文章。小波理论(wavelet theory)就是一个例子。即使在应用中,数据模型也是无处不在的。例如,在《美国统计学会会刊》(JASA)中,几乎每篇文章都包含类似以下的陈述: “假设数据是由以下模型生成的:……” 我对过去和现在在应用中过度使用数据模型深感忧虑,尤其是在通过这些模型得出定量结论甚至制定政策决策时。
HumanLanguage:留意“假设数据是由以下模型生成的”这个开场白——它正是数据模型文化的标志动作。读临床文献时看到对应的表述(“采用 Cox 比例风险模型”“拟合多因素 logistic 回归”),就意味着后面所有结论都架在“这个公式确实描述了现实”这个前提上。作者不满的不是用了模型,而是这个前提几乎从不被检验。
5. 数据模型的使用
应用研究中的统计学家将数据建模视为统计分析的模板:面对应用问题,就去想一个数据模型。这项事业的核心信念是:统计学家可以通过想象力和观察数据,为自然界设计的复杂机制发明出一类相当不错的参数模型。然后估计参数并得出结论。但是,当一个模型被拟合到数据中以得出定量结论时:
- 得出的结论是关于模型机制的,而不是关于自然机制的。 由此可以得出:
- 如果模型对自然界的模拟很差,那么得出的结论可能是错误的。
在拟合数据模型的热情中,这些显而易见的道理往往被忽略了。几十年前,对数据模型的执着甚至到了连残差分析或拟合优度检验等简单预防措施都不使用的地步。对数据模型绝对正确性的信念几乎是宗教式的。这是一个奇怪的现象——一旦模型被建立起来,它就变成了真理,而从中得出的结论就变得不容置疑。
5.1 一个例子
我用一个著名的(也是臭名昭著的)例子来说明:假设数据是由以下模型独立抽样生成的:
其中系数 是待估计的, 服从 ,且 是待估计的。在数据是这样生成的前提下,可以推导出优雅的假设检验、置信区间、残差平方和的分布以及渐近性质。这使得该模型在数学上非常有吸引力。学术统计学家和其他人利用该理论,基于模型 (R) 来推导系数的显著性水平,而很少考虑手头的数据是否真的可能由线性模型生成。成百上千篇论文发表出来,声称证明了某某结论,仅仅因为系数在 的水平上是显著的。
HumanLanguage:上面这个公式就是最普通的线性回归: 等于各个 乘上权重再加起来,末尾的 是随机噪声,并被假设服从正态分布(钟形曲线)。作者批评的,正是不加检验就默认数据长这个样子。
拟合优度大多仅通过给出多重相关系数 的值来证明,该值往往更接近于零而不是一,并且可能会因为使用过多的参数而被高估。除了计算 之外,没有做任何其他工作来查看观测数据是否可能由模型 (R) 生成。例如,几十年前,某大学统计系的一位知名成员做了一项研究,以评估教职工薪资中是否存在性别歧视。所有的档案都被审查了,建立起了一个数据库,其中薪资作为响应变量,另有 25 个表征学术表现的变量,即发表的论文、发表期刊的质量、教学记录、考评等。性别作为一个二值预测变量出现。
HumanLanguage:(决定系数)衡量“模型解释了 变化的百分之几”,取值 0(啥也没解释)到 1(全解释了)。这段话拆开说三层意思:① 常常接近 0,说明模型其实解释力很弱;② 只要硬塞进足够多的变量, 会自动变大,所以高 可能是虚高的假象;③ 最关键的是——大家只算了这一个 ,就再没做任何其他检查去确认“数据是否真能由这个线性公式产生”。这才是作者真正不满的点。
对该数据进行了线性回归,性别系数在 的水平上显著。这被视为存在性别歧视的铁证,并被奉为圭臬。这项研究的设计在考虑建模之前就提出了一些问题——收集到的数据能否回答所提出的问题?当你的样本是整个总体时,推断是否合理?是否应该使用数据模型?分析中的缺陷之所以发生,是因为焦点被放在了模型上,而不是问题上。
HumanLanguage:上一段那个性别歧视的例子就是典型:研究者跑了个回归,发现“性别”变量显著,便宣布“证明了歧视”。“在 5% 水平上显著”意思是——假如这个变量其实毫无影响,那么纯靠运气也能看到这么强结果的概率不到 5%。人们把“越过 5% 这条线”当成了铁证,但它成立的前提是“线性模型本身是对的”,而这个前提根本没人验证——注意力全放在“模型”上,而不是“问题本身”。
线性回归模型导致了许多错误的结论,这些结论出现在学术期刊上,挥舞着 的显著性水平,却不知道模型是否拟合了数据。如今,我认为大多数统计学家都会同意,这是一种非常可疑的得出结论的方法。当时,统计学界对这种荒诞的程序几乎没有提出异议。但是,在 Mosteller 和 Tukey(1977)撰写的一本初级教科书中,他们讨论了回归中可能出现的许多谬误,并写道:“整个引导性回归领域都充满了智力、统计、计算和学科专业方面的困难。”
即使在今天,也极少有公开发表的文章批评盲目使用数据模型。David Freedman 是少数几个进行此项研究的学者之一,他审视了回归模型的使用 (1994)、路径模型的使用 (1987) 以及数据建模 (1991, 1995)。这些论文中的分析是非常犀利的。
5.2 当前数据建模中的问题
当前的应用实践是使用拟合优度检验和残差分析来检查数据模型的拟合情况。多年前,我曾建立过一个具有可控非线性程度的七维模拟回归问题。标准的拟合优度检验在非线性达到极端程度之前,并没有拒绝线性假设。最近的理论也支持这一结论。Bickel, Ritov 和 Stoker(2001)的工作表明,除非精确指定备择假设的方向,否则拟合优度检验的功效(power)非常低。这意味着,同时在多个方向进行检验的综合拟合优度检验功效很低,直到拟合欠佳达到极端时才会拒绝原假设。
HumanLanguage:“功效(power)低”是指——即使模型确实是错的,这种检验也很难把它揪出来。所以“通过了拟合优度检验”并不等于“模型是对的”,尤其在变量一多的时候,检验太迟钝、根本看不出毛病。
此外,如果根据数据对模型进行修补,即删除变量或增加变量的非线性组合,那么拟合优度检验就不再适用。残差分析同样不可靠。1993 年在伯克利的一个研讨会上,在进行了一次关于残差分析的演讲后,残差分析的创始人之一 William Cleveland 承认,残差分析无法在超过四到五维的空间中发现拟合欠佳。我读过的关于使用残差分析检查拟合欠佳的论文,都局限于两到三个变量的数据集。
HumanLanguage:“残差”就是模型预测值与真实值之间的差距。画残差图是常用的“查漏”手段,但连它的发明人都承认:一旦变量超过 4~5 个,这招就基本失灵了——而现实问题的变量往往远不止 5 个。
在更高维度下,变量之间的交互作用可以使各种模型产生看起来合格的残差图。残差图本质上也是一种拟合优度检验,在超过少数几个维度时就会失去效能。一个合格的残差图并不意味着模型很好地拟合了数据。分析残差的方法有很多种。例如,Landwher, Preibon 和 Shoemaker(1984 年,带讨论)详细分析了如何使用各种残差图将 logistic 模型拟合到三变量数据集中。但是四位讨论者中的每一位都提出了其他分析方法。这让人对残差分析的随意性感到不安。
即使是通过了拟合优度检验和残差检查的数据模型,也可能得出误导性的结论。然而,公开发表的数据应用文章往往很少注意使用这些方法或任何其他方法来检查模型拟合情况。例如,当前 JASA 中拟合数据模型的许多应用文章,极少讨论其模型对数据的拟合程度。与构建一个精妙的随机模型相比,模型对数据的拟合程度如何这一问题被放在了次要位置。
5.3 数据模型的多样性
统计学的目标之一是从数据中提取关于生成数据的潜在机制的信息。数据建模的最大优势在于,它为输入变量和响应之间的关系描绘了一幅简单易懂的图景。例如,分类中的 logistic 回归之所以经常被使用,是因为它产生了变量的线性组合,其权重可以指示变量的重要性。最终结果是预测变量如何影响响应变量的简单图景,以及权重的置信区间。假设两个统计学家各自使用不同的数据建模方法,对同一个数据集进行拟合。同时假设每个人都应用了标准的拟合优度检验,查看了残差等,并确信他们的模型拟合了数据。然而,这两个模型对自然机制描绘了不同的图景,并导向了不同的结论。
HumanLanguage:两位统计学家可以各自建出拟合得一样好的模型,却对“哪些变量重要”给出相反的说法。而那些“合不合格?是/否”的检验又分不出高下,于是就没有可靠办法判断谁对——关于“机制”的结论也就变得不可信了。
McCullagh 和 Nelder(1989)写道:“数据往往会以几乎相同的说服力指向几种可能的模型,统计学家认识并接受这一点是很重要的。”说得好,但是不同的模型(每一个都同样好)可能会对预测变量和响应变量之间的关系描绘出不同的图景。其中哪一个最准确地反映了数据,这个问题很难解决。这种多样性的原因之一是,拟合优度检验和其他检查拟合的方法给出的是“是或否”的答案。由于这些检验在数据维度稍微增加时就会缺乏功效,因此会有大量拟合可接受的模型。在衡量拟合的“是-否”方法中,无法确定哪一个是更好的模型。少数统计学家知道这一点。Mountain 和 Hsiao(1989)写道:“很难制定一个能够包含所有竞争模型的综合模型。此外,在使用有限样本时,依赖于渐近理论的各种包含性检验在有效性和效能方面存在疑问。”
目前使用的数据模型可能会带来比基于线性回归分析的社会科学文献更具破坏性的后果。正如 的显著性水平成为发表的默认标准一样,用于生存时间分析的 Cox 模型和用于生存/非生存数据的 logistic 回归已成为医学期刊发表的默认标准。即使不同的生存模型拟合得同样好却可能得出不同的结论,这也根本没有引起人们的关注。
HumanLanguage:Cox 模型、logistic 回归是医学统计里最常用的两把“默认工具”。作者警告:它们被用成了不假思索的标配,而“换一个拟合同样好的模型可能得出不同结论”这件事,却完全被忽视了。
5.4 预测准确性
观察模型箱对自然箱的模拟程度,最显而易见的方法是:将一个样本 投入自然箱中,得到输出 。同样地,将相同的样本 投入模型箱中,得到输出 。 和 的接近程度即是模拟好坏的度量。对于数据模型,这转化为:使用数据拟合模型中的参数,然后使用该模型预测数据,并观察预测效果有多好。
预测很少是完美的。通常有许多未测量的变量,其影响被称为“噪声”。但是,模型箱在多大程度上模拟了自然箱,衡量了我们的模型再现产生数据的自然现象的能力。
HumanLanguage:这一段给出了判断模型好坏最朴素的办法:同一个输入,分别丢给大自然和丢给你的模型,看两边出来的结果差多少。“噪声”指那些你没测到也测不到的因素造成的差异,再好的模型也消不掉。所以关键不在于要求完美,而在于——你有没有真的去量过这个差距。作者接下来会指出,很多论文根本没量。
McCullagh 和 Nelder(1989)在他们关于广义线性模型的书中也认为答案是显而易见的。他们写道:“乍一看,好模型似乎就是非常拟合数据的模型;也就是说,使 (模型预测值)非常接近 (响应值)的模型。”然后他们指出,这种一致性的程度会受到模型中所用参数数量的偏置,因此不是一个令人满意的衡量指标。他们当然是对的。如果模型有太多的参数,那么它可能会过度拟合数据,并对准确性给出有偏的估计。但是有办法消除这种偏置。为了获得更无偏的预测准确性估计,可以使用交叉验证,这正如 Stone(1974)在早期一项重要工作中所提倡的那样。如果数据集较大,可以留出一个测试集。
HumanLanguage:过拟合指的是——旋钮(参数)太多的模型能把训练数据背得滚瓜烂熟(看起来超准),换一批新数据却露馅。破解办法是交叉验证:留出一部分数据不参与训练,专门用它来检验,从而在“模型没见过的数据”上评估真实水平。
Mosteller 和 Tukey(1977)是交叉验证的早期倡导者。他们写道:“交叉验证是表明任何源自数据的量的质量的自然途径……我们计划在任何可以的地方都进行仔细的交叉验证。”
从 JASA 中极少出现预测准确性估计来看,这种对我(以及 Mosteller 和 Tukey)来说极其自然的模型拟合度量,对其他人来说似乎并不自然。多发表一些对预测准确性的估计,将为模型的比较建立起统一的标准,而这在机器学习中是司空见惯的做法。
6. 数据模型的局限性
由于对数据模型的固执,统计学中的多元分析工具在分类中被冻结在判别分析和 logistic 回归,在回归中则被冻结在多元线性回归。没有人真正相信多元数据是多元正态分布的,但在每一本关于多元统计分析的研究生教科书中,该数据模型都占据了大量的篇幅。
当数据是从涉及未知的物理、化学或生物机制的复杂系统的无对照观测中收集时,先验地假设自然界会通过统计学家选择的参数模型来生成数据,可能会导致值得怀疑的结论,而这些结论是无法通过诉诸拟合优度检验和残差分析来证实的。通常,与算法模型相比,强加在复杂系统生成的数据(例如医学数据、财务数据)上的简单参数模型会导致准确性和信息的损失(参见第 11 节)。
HumanLanguage:面对来自未知机制的杂乱真实数据,一上来就假定大自然乖乖听从你挑的那个整洁公式,很容易得出根本无法验证的结论——而前面说过,拟合优度检验和残差分析这两道“安检”又太弱,拦不住错误。
有一句古老的谚语说:“如果一个人手里只有一把锤子,那么每个问题看起来都像钉子。”统计学家的麻烦在于,最近有些问题看起来不再像钉子了。我推测,碰壁的结果是目前发表的应用文章中出现了更复杂的数据模型。贝叶斯方法与马尔可夫链蒙特卡罗(MCMC)的结合正随处可见。这可能意味着随着数据变得越来越复杂,数据模型变得越来越繁琐,并失去了呈现自然机制简单清晰图景的优势。
HumanLanguage:只有“数据模型”这一把锤子,就会把所有问题都硬看成钉子。当简单模型敲不动时,人们只好堆砌越来越复杂的模型(如贝叶斯 + MCMC,一种用大量随机模拟来拟合复杂概率模型的计算技术),这本身就是“锤子不好使了”的信号。
通过寻找数据模型来解决问题强加了一种先验的束缚,限制了统计学家处理广泛统计问题的能力。对于一个数据问题,最好的解决方案可能是一个数据模型;但也可能是一个算法模型。数据和问题本身引导着解决方案。为了解决更广泛的数据问题,需要一个更庞大的工具箱。
对数据模型的固守,其最具有破坏性的后果或许是:统计学家将自己排除在了那些最有趣、最具挑战性的统计问题之外,而这些问题源于计算机存储和处理数据能力的飞速提升。在许多科学和商业领域,这类问题正越来越多地出现,并且非统计学家们正在找到解决方案。
7. 算法建模
在其他名称下,工业统计学家使用算法建模已有数十年之久。例如,可以阅读那本令人愉悦的书《将方程拟合到数据》(Daniel 和 Wood, 1971)。心理测量学家和社会科学家也在使用它。多年前阅读 Gifi 的书(1990)的预印本时,我发现了一位志同道合者。从 20 世纪 80 年代初 Richard Olshen 的工作开始,算法建模开始在医学数据分析中崭露头角。进一步的工作可见 Zhang 和 Singer(1999)。Jerome Friedman 和 Grace Wahba 在算法方法的发展方面做了开创性的工作。但是在算法建模领域的统计学家名单很短,在期刊中也很少见到其在数据上的应用。算法方法的发展被统计学之外的一个学术群体承接了。
7.1 一个新的研究群体
在 20 世纪 80 年代中期,出现了两种强大的用于拟合数据的新算法:神经网络和决策树。一个使用这些工具的新研究群体蓬勃发展起来。他们的目标是预测准确性。这个群体由年轻的计算机科学家、物理学家、工程师以及少数年长的统计学家组成。他们开始使用这些新工具来解决复杂的预测问题,在这些问题中,数据模型显然是不适用的,比如:语音识别、图像识别、非线性时间序列预测、手写识别、金融市场预测等。
他们的兴趣范围涵盖了许多曾被认为是统计学家乐园的领域,并产出了数千篇与应用和方法论相关的有趣研究论文。绝大多数论文都分析了真实数据。衡量任何模型的标准就是它的预测准确度。通过查看神经信息处理系统会议(NIPS,他们的主要年度会议)的论文集或《机器学习》(Machine Learning)期刊,可以对该群体的研究范围有所了解。
7.2 算法建模中的理论
在这个群体中很少使用数据模型。他们的方法是:自然界在一个黑箱中产生数据,这个黑箱的内部是复杂的、神秘的,而且至少在某种程度上是不可知的。观察到的是一进去的 集合,以及随后出来的 集合。问题是寻找一种算法 ,使得对于测试集中的未来输入 , 将是 的良好预测器。
该领域的理论研究将焦点从数据模型转移到了算法的性质上。它刻画了它们作为预测器的“强度”、如果是迭代算法时的收敛性、以及是什么赋予了它们良好的预测准确度。该理论中唯一做出的假设是:数据是从一个未知的多元分布中独立同分布(i.i.d.)抽取的。
HumanLanguage:独立同分布(i.i.d.)是说——每个数据点都像是从同一个背后的分布里各自独立抽出来的。这是算法建模保留的唯一一条温和假设,比数据建模的假设少得多。
统计学中也有孤立的工作,其焦点在于算法的理论。Grace Wahba 对平滑样条算法及其在数据中的应用(使用交叉验证)的研究是建立在涉及希尔伯特空间中再生核的理论基础上的(1990)。CART 著作的最后一章(Breiman 等, 1984)包含了一个证明,即当样本量增加时,通过让树生长,CART 算法将渐近收敛于贝叶斯风险。还有其他类似的例子,但相对频率很低。
理论研究在机器学习领域带来了一次重大突破。Vladimir Vapnik 构建了分类算法泛化误差(无限测试集误差)的有信息量的边界,这些边界取决于算法的“容量”(capacity)。这些理论边界催生了支持向量机(SVM,参见 Vapnik, 1995, 1998),事实证明,在分类和回归中,支持向量机是比神经网络更准确的预测器,并且是当前热门的研究主题(参见第 10 节)。
HumanLanguage:泛化误差指模型在“无穷多新数据”上的平均误差,也就是它真实的水平(见文末词汇表)。容量(capacity) 粗略地说是一个算法“能拟合多花哨的形状”的本事——容量太小学不动,太大就连噪声一起背下来。Vapnik 的贡献是把两者的关系写成了可计算的上限,并据此设计出 SVM。
我的上一篇论文《树集成的一些无穷理论》(Breiman, 2000)使用函数空间分析来试图理解树集成方法的工作机制。其中一个章节的标题是“用我的王位换取一些好理论”。虽然有一种被称为“提升”(boosting)的构建集成的有效方法,但没有任何有限样本理论能够告诉我们它为什么表现得如此出色。
7.3 最近的教训与启示
自 20 世纪 80 年代中期以来,机器学习研究在方法论上的进步和预测准确性的提高是惊人的。在过去的五年中,特别是有了一些令人兴奋的进展。我们学到了什么?对我来说,最重要的三个教训/启示是:
- 罗生门(Rashomon):优秀模型的多样性;
- 奥卡姆(Occam):简单性与准确性之间的冲突;
- 贝尔曼(Bellman):维度——是诅咒还是福音。
8. 罗生门与优秀模型的多样性
《罗生门》是一部精彩的日本电影,讲述了四个人从不同的视角目睹了一起导致一人死亡、另一人据称被强暴的事件。当他们出庭作证时,他们报告了相同的事实,但他们关于发生了什么的故事却大相径庭。
我所说的“罗生门效应”(Rashomon Effect)是指,在一类函数中,往往有许多不同的描述(方程 )都能给出大致相同的最低错误率。最容易理解的例子是线性回归中的子集选择。假设有 30 个变量,我们想要找到最好的五个变量的线性回归。大约有 140,000 个五个变量的子集参与竞争。通常我们选择残差平方和(RSS)最低的那一个,或者如果有测试集,选择测试误差最低的那一个。但是,在最低 RSS 的 范围内,可能(而且通常确实)存在许多五个变量的方程(参见 Breiman, 1996a)。在测量测试集误差时也是如此。
HumanLanguage:罗生门效应:许多长相完全不同的公式,预测准确度却几乎一样。例子里从 30 个变量中挑 5 个,就有约 14 万种组合,其中一大批拟合得同样好。于是“模型说变量 X 重要”这句话很不牢靠——换一个同样好的模型,说法可能就变了。
因此,以下是三个可能相互之间 RSS 或测试集误差在 以内的方程图景:
哪一个更好呢?问题在于,关于哪些变量是重要的,每一个方程都讲述了完全不同的故事。
罗生门效应也发生在决策树和神经网络中。在我对树的实验中,如果仅对训练集进行轻微的扰动(例如随机删除 的数据),我就能得到一个与原始树大不相同但测试集误差几乎相同的树。我曾经在简单的三维数据上运行了一个小型神经网络 100 次,每次运行都重新选择较小的随机初始权重。我发现了 32 个不同的局部极小值,每一个都给出了不同的图景,但测试集的误差大致相等。
这种效应与我所说的“不稳定性”(instability,Breiman, 1996a)密切相关。当许多不同的模型挤在一起,且拥有大致相同的训练或测试集误差时,就会发生这种不稳定性。此时对数据或模型构建进行微小的扰动,就会导致模型从一个跳转到另一个。这两个模型在误差上很接近,但在模型的表现形式上可能相去甚远。
HumanLanguage:不稳定性:当一堆模型在准确度上打成平手时,数据只要动一点点,就会“跳”到另一个模型上,而它讲的“哪些变量重要”的故事完全不同。准确度没变,但结论的画面很脆弱。
如果在 logistic 回归或 Cox 模型中,采用删除较不重要协变量的常用做法,那么模型就会变得不稳定——因为存在太多竞争的模型。假设你正在从 15 个变量中筛选并删除到剩下 4 个。稍微扰动一下数据,你极有可能得到一个不同的四变量模型,并对哪些变量是重要的得出不同的结论。为了通过剔除次要协变量来提高准确性,你便陷入了多样性问题。在两个具有大致相同偏差(deviance)的模型之间,关于哪些协变量是重要的这一图景可能会有显著不同。
对大量的竞争模型进行聚合(aggregating),可以在提高准确性的同时减少这种非唯一性。Arena 等人(2000)在一个包含有毒和无毒化学物质的数据库上,对 logistic 回归模型进行了装袋(bagging,见词汇表),其中通过标准的最佳子集选择将每个模型中的协变量数量从 15 个减少到 4 个。在测试集上,装袋后的模型显著比带有 4 个协变量的单个模型更准确,也更加稳定。这是一种可能的解决办法。多样性问题及其对模型得出结论的影响需要引起严肃对待。
HumanLanguage:把许多互相竞争的模型平均/投票起来(即装袋 bagging),既能压住上面那种随机跳动,又能提高准确度。这是走出“到底该信哪个模型”困境的一条路。
9. 奥卡姆以及简单性与准确性的对立
长期以来备受推崇的“奥卡姆剃刀”通常被理解为“越简单越好”。不幸的是,在预测中,准确性与简单性(可解释性)是相互冲突的。例如,线性回归提供了关于 关系相当可解释的图景。但其准确性通常低于可解释性较差的神经网络。一个更接近我工作的例子与决策树有关。
HumanLanguage:奥卡姆剃刀主张“如无必要,别把事情弄复杂”,常被理解成“越简单越好”。但在预测里有个矛盾:简单模型好读懂却往往不够准,够准的模型又通常复杂难懂——两者常常不可兼得。
在可解释性方面,决策树可以得到 。我在 20 世纪 70 年代后期参与的一个项目是分析州法院系统刑事案件的延迟情况。宪法赋予了被告获得迅速审判的权利。州法院中心担心在许多州,审判根本谈不上迅速。它资助了一项关于延迟原因的研究。我走访了许多州,决定在科罗拉多州进行分析,该州拥有出色的计算机化法院数据系统。大量的有用信息被提取并得到了处理。
每个刑事案件的因变量是自提审到宣判的时间。诉讼历史中的所有其他信息都是预测变量。一棵巨大的决策树生长了出来,我在投影仪上展示了它,并向聚集在一起的科罗拉多州法官们进行了解释。其中一个分叉是针对“N 区”的,该区的延迟时间比其他区要长。我当时克制住自己没有对此进行评论。但当我走出去时,我听到一位法官对另一位法官说:“我就知道 N 区的那些家伙在磨洋工。”
虽然树在可解释性上得了 ,但在预测方面,它们不错,但谈不上极佳。在预测上给它们一个“B”吧。
9.1 构建用于预测的森林
相比于单个树预测器,我们在相同的数据上培育由许多树(例如 50 或 100 棵)组成的森林。如果我们要进行分类,就将新的 投入森林中的每一棵树,并为预测的类别投票。让森林的预测结果成为获得最多选票的类别。在过去五年中,关于如何培育森林开展了大量工作。所有著名的方法都是通过扰动训练集、在扰动后的训练集上生成树、再次扰动训练集、生成另一棵树等来培育森林。一些为人熟知的方法包括装袋(bagging,Breiman, 1996b)、提升(boosting,Freund 和 Schapire, 1996)、arcing(Breiman, 1998)以及加性 logistic 回归(Friedman, Hastie 和 Tibshirani, 1998)。
迄今为止,我最喜欢的方法是随机森林(random forests)。在这种方法中,通过在构建中引入随机元素来连续培育决策树。例如,假设有 20 个预测变量。在每个节点,随机选择 20 个中的几个用于分裂节点。或者使用随机选择的几个变量的随机组合。这一思想出现在 Ho(1998)、Amit 和 Geman(1997)中,并在 Breiman(1999)中得到了进一步发展。
HumanLanguage:与其用一棵决策树,不如在数据的多个“微扰版本”上种出一大片树(森林),让它们投票。随机森林再加一层随机:每次分叉只从随机抽到的几个变量里挑——这个小改动反而让森林准得多。
9.2 森林与单树的比较
我们在许多小型和大型数据集上比较了单树(CART)与随机森林的性能,这些数据集大多来自 UCI 库。数据集的摘要如表 1 所示。
表 1:数据集描述
| 数据集 | 训练样本量 | 测试样本量 | 变量数 | 类别数 |
|---|---|---|---|---|
| Cancer | 699 | — | 9 | 2 |
| Ionosphere | 351 | — | 34 | 2 |
| Diabetes | 768 | — | 8 | 2 |
| Glass | 214 | — | 9 | 6 |
| Soybean | 683 | — | 35 | 19 |
| Letters | 15,000 | 5000 | 16 | 26 |
| Satellite | 4,435 | 2000 | 36 | 6 |
| Shuttle | 43,500 | 14,500 | 9 | 7 |
| DNA | 2,000 | 1,186 | 60 | 3 |
| Digit | 7,291 | 2,007 | 256 | 10 |
表 2 比较了单树与森林的测试集误差。对于横线以上的五个较小数据集,测试集误差是通过随机留出 的数据,然后在其余 的数据上运行 CART 和随机森林来估计的。留出的 数据被投放到树和森林中,并分别计算这 上的误差。该过程重复 100 次,然后取误差的平均值。横线以下较大的数据集自带独立的测试集。在分类领域工作过一段时间的人都会发现,这些准确性的提升是惊人的。有些误差直接减半,其他的也减少了三分之一。在回归中(此时森林的预测是单棵树预测的平均值),均方测试误差的降幅也与此类似。
HumanLanguage:看表 2:几乎每一行“森林”的误差都低于“单树”,多数降幅很大——乳腺癌 对 是砍半,Letters 更是从 降到 。也有例外,Diabetes 两者只差 个百分点。这就是“多棵树投票”带来的好处,但并非在每个数据集上都同样明显。
表 2:测试集分类误差率 (%)
| 数据集 | 森林 | 单树 |
|---|---|---|
| Breast cancer | 2.9 | 5.9 |
| Ionosphere | 5.5 | 11.2 |
| Diabetes | 24.2 | 25.3 |
| Glass | 22.0 | 30.4 |
| Soybean | 5.7 | 8.6 |
| Letters | 3.4 | 12.4 |
| Satellite | 8.6 | 14.8 |
| Shuttle × | 7.0 | 62.0 |
| DNA | 3.9 | 6.2 |
| Digit | 6.2 | 17.1 |
9.3 随机森林是 预测器
Statlog 项目(Mitchie, Spiegelhalter 和 Taylor, 1994)比较了 18 种不同的分类器。其中包括神经网络、CART、线性和二次判别分析、最近邻等。表 1 中横线以下的排在前四个的数据集是 Statlog 项目中仅有的自带独立测试集的数据集。就这四个数据集上的准确率排名而言,随机森林排在了 1, 1, 1, 1,平均排名为 1.0。第二好的分类器的平均排名是 7.3。
HumanLanguage:这场比较里有 18 种分类器同台。“平均排名 1.0”意思是四个数据集上随机森林全部第一,一次例外都没有;而第二名的平均排名 7.3,等于说它大致徘徊在第七位。这不是接近的差距。
横线以下的第五个数据集由手写邮政编码数字的 像素灰度图组成。它已被 AT&T 贝尔实验室广泛用于测试各种预测方法。一个为该数据精心手工设计的神经网络获得了 的测试集误差,而标准运行的随机森林的测试集误差为 。
9.4 奥卡姆困境
所以,森林是 预测器。但是它们产生预测的机制是极难理解的。试图深入探究由 100 棵树生成多数票的纠结网络是一项极其艰巨的任务。因此在可解释性上,它们被评为 F。这把我们带到了奥卡姆困境:
- 准确性通常需要更复杂的预测方法。简单且易于解释的函数往往无法成为最准确的预测器。
HumanLanguage:这就是奥卡姆困境——最准的方法(森林)恰恰是最看不懂的黑箱,可解释性打 F。作者的建议是:先追求准确度,之后再回头研究“为什么准”,而不是一开始就为了好解释而牺牲准确度。
使用复杂的预测器可能会令人感到不快,但最可靠的途径是先追求预测准确性,然后再去探究其原因。实际上,第 10 节指出,从面向目标的统计学观点来看,并不存在奥卡姆困境。(有关奥卡姆剃刀的更多内容,参见 Domingos, 1998, 1999。)
10. 贝尔曼与维度灾难
本节的标题指的是理查德·贝尔曼的著名短语“维度灾难”(the curse of dimensionality)。几十年来,预测方法论的第一步就是避免这一灾难。如果预测变量太多,秘诀是找到几个“包含大部分信息”的特征(预测变量的函数),然后用这些特征代替原始变量。在统计学中常见的程序(如回归、logistic 回归和生存模型)中,建议的做法是使用变量剔除来降低维度。发表的建议普遍认为高维度是危险的。例如,一本备受推崇的模式识别书籍(Meisel, 1972)指出“特征……在数量上必须相对较少”。但最近的研究表明,高维度也可以是一种福祉。
HumanLanguage:维度灾难是那个老观念——“变量太多会毁掉预测”,所以过去大家拼命精简变量。作者要反着说:很多时候加入更多变量/特征反而是好事(福祉)。
10.1 零碎挖掘
降低维度会减少可用于预测的信息量。预测变量越多,信息量就越大。预测变量的各种组合中也包含着信息。让我们试着往相反的方向走:
- 与其降低维度,不如通过添加预测变量的许多函数来增加维度。
现在可能会有成千上万个特征。每一个可能都包含少量的有用信息。问题在于如何提取并拼凑这些零星的信息。在这方面有两个杰出的工作范例:形状识别森林(The Shape Recognition Forest, Y. Amit 和 D. Geman, 1997)和支持向量机(Support Vector Machines, V. Vapnik, 1995, 1998)。
HumanLanguage:这是全文最反直觉的一步。常规做法是砍变量(怕变量多会坏事),作者主张反过来——把变量的各种组合(平方、两两相乘等)也当成新变量加进去,让特征数从几十涨到成千上万。理由是:降维必定丢信息,而有用的信息常常零零散散藏在变量的组合里。于是难题从“该留哪几个变量”变成了“怎么把这些碎信息重新拼起来”,后面两小节就是两种拼法。
10.2 形状识别森林
1992 年,美国国家标准与技术研究院(NIST)举办了一场旨在让机器算法读取手写数字的竞赛。他们整理了由 2,000 多人书写的一大批手写数字像素图像(223,000张)。该竞赛吸引了广泛的兴趣,人们尝试了各种不同的方法。
Amit-Geman 的方法在一个层级装配体中定义了数万个微小的几何特征。他们培育了浅层树,使得在每个节点上,从该层级结构的相应级别中随机选择 100 个特征,并根据所选特征找到该节点的最优分裂。
当一个数字的像素图像被投放到单棵树中时,它落入的叶节点会给出概率估计 ,代表它是数字 0, 1, ..., 9 的概率。他们培育了超过 1,000 棵树,在整个森林中对这些概率进行平均,然后将预测的数字指定为平均概率最大的那一个。
使用 100,000 个样本的训练集和 50,000 个样本的测试集,Amit-Geman 方法给出的测试集误差为 ——这已经非常接近人类感官误差的极限。
HumanLanguage: 意味着每 1,000 个手写数字只认错 7 个,已经接近人眼直接辨认的水平。做到这一点靠的正是上一小节的思路:先造出数万个微小的几何特征,再让上千棵浅树投票。
10.3 支持向量机
假设在 维欧氏空间中有包含预测向量的两类数据。类别 #1 的预测向量为 ,类别 #2 的预测向量为 。如果这两组向量可以通过超平面分离开来,那么就存在一个最优分类超平面。“最优”被定义为超平面到任何预测向量的距离是最大的。
在 和 中,到最优分类超平面的距离达到最小值的向量集合被称为“支持向量”。它们的坐标决定了超平面的方程。Vapnik(1995)证明了,如果存在一个分类超平面,那么最优分类超平面就具有很低的泛化误差(见词汇表)。
HumanLanguage:想象两类点散在平面上。超平面就是一条把两类分开的“平的分界”(二维里是直线,三维里是平面,更高维依此类推)。SVM 要找间隔最宽的那条分界;支持向量就是紧贴分界、真正“钉住”边界位置的那几个临界点。
在两类数据中,往往无法被超平面直接分离。然而,让我们通过添加原始预测变量的所有二次单项式(即所有形式为 的项)作为附加预测变量来增加维度。在原始变量加上原始变量的二次单项式中,超平面是一个更为复杂的结构。分离的可能性因而变大了。如果还是不能分离,可以添加三次单项式作为输入特征。如果最初有 30 个预测变量,若添加高达四次的单项式,就会有大约 40,000 个特征。
HumanLanguage:如果一条“平的”分界切不开两类,就人为造出更多特征(把变量平方、两两相乘……)。在这个变量更多、维度更高的新空间里,一条平面就有可能切开它们——这正是“高维反而是福祉”的诀窍所在。
特征集合的维度越高,越有可能实现分离。在邮政编码数据集中,加入四次单项式后就实现了分离,其测试集误差为 。使用 NIST 数据库的一个大子集作为训练集,在加入高达四次的单项式后也实现了分离,并给出了 的测试集误差率。
通过将维度提升到足够高,总是可以实现分离的。但是如果分类超平面变得过于复杂,泛化误差就会变大。一个精妙的定理(Vapnik, 1995)给出了期望泛化误差的这一边界:
HumanLanguage:这个公式给误差设了个上限,直白读就是:误差 ≤(平均需要的支持向量个数)÷(N−1)。含义是——定出边界所需的临界点越少,模型在新数据上表现就越好。
其中 是样本大小,期望是对与原始训练集来自相同潜在分布、且大小为 的所有训练集进行的。
支持向量的数量随着特征空间的维度增加而增加。如果这个数量变得太大,分类超平面就无法给出低的泛化误差。如果无法在支持向量数量相对较少的情况下实现分离,还有另一种版本的支持向量机,它通过为处于超平面错误一侧的向量加入惩罚项来定义最优性。
一些精妙的算法使得在计算上寻找最优分类超平面变得可行。这些方法将搜索简化为求解带有线性不等式约束的二次规划问题,其约束规模与样本数量 同阶,而与特征空间的维度无关。专门针对这一特定问题定制的方法,相比于解决二次规划问题的标准方法,实现了数量级的加速。
支持向量机也可以用于在其他领域(如回归)提供准确的预测。这是一个令人兴奋的想法,它表现出了极佳的性能,并开始取代神经网络的使用。Cristianini 和 Shawe-Taylor(2000)提供了一个易懂的入门介绍。
11. 来自黑箱的信息
上一节提出的困境在于:在预测准确性方面最能模拟自然界的模型,同时也是最复杂且不可思议的。但只要意识到我们问错了问题,这个困境就可以迎刃而解。自然界通过一个内部复杂且未知的黑箱,将输入 转化为输出 。
目前高精度的预测方法同样是复杂的黑箱。
所以我们正面临着两个黑箱,而我们的黑箱似乎只是比大自然的稍微好懂一点点。在由医学实验产生的数据中,集成预测器可以提供显著低于 logistic 回归的交叉验证误差率。我那做生物统计的朋友对我说:“医生可以解释 logistic 回归。”但他们根本无法解释一个包含 50 棵连在一起的树的黑箱。在准确性和可解释性之间的选择中,他们会选择可解释性。
HumanLanguage:医生偏爱 logistic 回归,因为看得懂,哪怕森林预测更准。作者的反驳是:把问题框成“准确 vs 可解释”本身就问错了——你真正想要的是可靠的信息,而黑箱模型照样能提供这种信息。
将问题表述为在准确性与可解释性之间的选择,是对统计分析目标的错误解读。
模型的意义在于获取关于响应变量和预测变量之间关系的有用信息。可解释性只是获取信息的一种方式。但是,模型并不一定非得简单才能提供关于预测变量和响应变量关系的可靠信息;它同样不一定非得是数据模型。
- 目标不是可解释性,而是准确的信息。
以下三个例子说明了这一点。第一个例子表明,将随机森林应用于医学数据集,可以提供比 logistic 回归更可靠的关于协变量强度的信息。第二个例子表明,它可以提供 logistic 回归无法揭示的有趣信息。第三个则是对微阵列(microarray)数据的应用,在这种情况中,很难想象会有什么数据模型能够揭示类似的信息。
HumanLanguage:这三个例子分别要证明三件事:例子 I——黑箱模型给出的“哪些变量重要”比 logistic 回归更可靠;例子 II——它还能发现 logistic 回归根本看不到的结构(患者亚群);例子 III——在变量数远多于样本数的场景(4,682 个基因 vs 81 例)下,传统数据模型基本无从下手。都是医学数据。
11.1 例子 I:生存数据集中的变量重要性
该数据集包含 155 名肝炎患者的生存或死亡情况,带有 19 个协变量。该数据集由 Gail Gong 贡献,可以在 ftp.ics.uci.edu/pub/MachineLearning-Databases 获取。详细描述在名为 hepatitis.names 的文件中。该数据集此前曾由 Diaconis 和 Efron(1983)以及 Cestnik, Konenenko 和 Bratko(1987)进行过分析。迄今为止报道的最低错误率()出自后一篇论文。
Diaconis 和 Efron 提到了斯坦福医学院的 Peter Gregory 的工作,他分析了这一数据并得出结论,重要变量是第 6, 12, 14, 19 号,并报告了大约 的预测准确度。变量是通过两个阶段减少的——第一阶段是通过非正式的数据分析;第二阶段则是指一个更为正式(但未明确指出)的统计学程序,我假设它是 logistic 回归。
Efron 和 Diaconis 从原始数据集中抽取了 500 个自助(bootstrap)样本,并使用类似的程序在每个自助数据集中分离出重要变量。作者评论说:“在最初选择的四个变量中,没有一个在超过 的样本中被选中。因此,在最初分析中识别出的变量不能被太当真。”我们稍后会回到这个结论。
HumanLanguage:自助样本(bootstrap)是从原始数据里有放回地随机抽出同样多的病例,等于制造出一批“平行宇宙版”的数据集。做法的用意是:如果某个变量真的重要,那它在大多数平行宇宙里都该被选中。结果四个变量没一个能在六成以上的样本里稳住——看上去像是“原来的分析不可靠”。但请记住这句话,第 11.1 节末尾会给出一个完全不同的解释。
Logistic 回归
在肝炎数据集上,logistic 回归的预测错误率为 。这是通过运行 100 次来评估的,每次留出随机选择的 的数据作为测试集,然后对测试集误差取平均值。
通常,对哪些变量是重要的初步评估,是基于检查 logistic 回归中变量系数的绝对值除以它们的标准差。图 1 是这些数值的图表。
从标准化系数得出的结论是,变量 7 和 11 是最重要的协变量。当仅使用这两个变量运行 logistic 回归时,交叉验证的错误率上升到了 。寻找重要变量的另一种方法是进行最佳子集搜索,即对于任何给定的值 ,寻找具有最低偏差的 个变量的子集。
HumanLanguage:“系数绝对值除以标准差”就是临床文献里那个 z 值(Wald 统计量)——P 值正是由它算出来的。所以“看哪个变量的标准化系数大”,和“看哪个变量 P 值最小”是同一件事。这里的结果很能说明问题:按这个标准挑出的变量 7 和 11,单独拿来预测时错误率反而升到 ,比用全部变量还差。显著性排序并不等于预测能力排序。
这一过程引发了不稳定性以及模型多样性的问题(参见第 7.1 节)。大约有 4,000 个包含四个变量的子集。在这些子集中,几乎可以肯定有相当一部分其偏差接近最小值,却对潜在机制描绘了完全不同的图景。
[图 1:Logistic回归的标准化系数]
[图 2:随机森林的变量重要性]
随机森林
随机森林的预测错误率(通过在 100 次运行中求平均误差评估得出,每次留出 的数据作为测试集)为 ——相比于 logistic 回归的误差降低了近 。
HumanLanguage:注意这个“降低近 ”是相对降低:从 降到 ,绝对差是 个百分点,。这正是临床文献里相对风险下降与绝对风险下降的区别——同一组数字,用相对值表述总是显得更可观。两种说法都不算错,但读的时候要知道自己看的是哪一种。
随机森林由大量随机构建的树组成,每棵树都为一个类别投票。类似于装袋方法(Breiman, 1996),训练集的自助样本被用于构建每棵树。搜索随机选择的输入变量,以找到每个节点的最佳分裂。
为了衡量第 个变量的重要性,在当前自助样本中所有被留出的案例中,将第 个变量的值进行随机置换。然后,让这些案例顺着当前的树投放到叶节点,并记录它们的分类情况。在由生成许多树组成的运行结束时,计算由于使每个变量变模糊(加入噪声)而导致的分类错误率增加的百分比。这就是在图 2 中展示的变量重要性的度量。
HumanLanguage:随机森林判断“某变量重不重要”的办法很巧妙:把这一个变量的取值打乱,看预测变差了多少。变差很多 → 这变量很关键;几乎没变 → 它其实没起什么作用。
随机森林唯独挑选出两个变量——第 12 个和第 17 个——作为重要变量。为了进行验证,这两个变量分别单独以及一起在随机森林中运行。在 100 次重复运行中,它们的测试集误差率各自为 。将两者结合在一起运行并没有表现得更好。我们得出结论:几乎所有的预测能力都是由单个变量(第 12 个或第 17 个)提供的。
为了进一步探究 12 和 17 之间的交互作用,在使用所有变量运行随机森林结束时,输出结果包含了每个类别的估计概率值与案例编号的对比。该信息用于获取变量值(标准化为均值为零,标准差为一)与死亡概率的关系图。变量值使用加权线性回归平滑器进行平滑。结果如图 3 中针对变量 12 和 17 所示。
[图 3:变量 17 与概率 #1]
[图 4:变量重要性——Bupa数据]
变量值与类别死亡概率的关系图几乎是线性的且高度相似。事实证明,这两个变量是高度相关的。考虑到这可能会影响 logistic 回归的结果,我们重新运行了模型,删除了这两个变量中的一个或另一个。结果几乎没有发生改变。
出于好奇,我用与在随机森林中相同的方法评估了 logistic 回归中的变量重要性,即置换 测试集中的变量值,并计算这增加了多少测试集误差。但这并没有太大帮助——变量 12 和 17 并没有跻身被评为最重要的 3 个变量之列。为了部分验证 12 和 17 的重要性,我将它们分别作为 logistic 回归中的单一变量进行了尝试。变量 12 给出了 的错误率,变量 17 的错误率为 。
回到最初的 Diaconis-Efron 分析,问题就很清楚了。变量 12 和 17 互为替代品。如果在基于自助样本构建的模型中,其中一个显得重要,那么另一个就不会。因此,它们各自出现的频率便自动低于 。该论文列出了在其中 10 个样本中选出的变量。12 或 17 在这 10 个样本中的 7 个里都出现了。
HumanLanguage:变量 12 和 17 是彼此的替身——携带的信息几乎一样,所以模型抓住其中一个就够了,不必两个都要。这也解释了为什么早先的分析里它俩各自出现的频率都不到 50%:老方法把“信息冗余”误当成了“不重要”。
11.2 例子 II:医学数据中的聚类
Bupa 肝脏数据集是一个两类生物医学数据集,同样可以在 ftp.ics.uci.edu/pub/MachineLearningDatabases 获取。其协变量为:
mcv:平均红细胞体积alkphos:碱性磷酸酶sgpt:丙氨酸氨基转移酶sgot:天门冬氨酸氨基转移酶gammagt:谷氨酰转肽酶drinks:每天饮用的相当于半品脱酒精饮料的量
前五个属性是被认为与肝功能相关的血液检测结果。345 名患者根据其肝功能障碍的严重程度被分为两类。第二类代表严重的肝功能障碍。在一次随机森林的运行中,分类错误率为 。随机森林给出的变量重要性如图 4 所示。
[图 5:聚类均值——Bupa数据]
血液检测 3 和 5 是最重要的,其次是检测 4。随机森林同样输出一种内在的相似性度量,可用于聚类。当应用该指标时,在第二类中发现了两个不同的聚类。计算了每个变量的平均值,并在图 5 中绘制了这两个聚类中每个变量的对比图。
一个有趣的切面显现了出来:第二类的受试者由两个截然不同的群体组成——血液检测 3, 4 和 5 得分高的群体,以及在这些检测中得分低的群体。
HumanLanguage:这是这一节真正的看点:算法并没有被要求去找亚组,它是在做预测的过程中顺带发现同一个诊断标签底下其实混着两拨检验谱完全不同的病人。而 logistic 回归只会给出“这几个指标各自权重多少”,结构性的分群它看不见。这类发现随后需要独立数据验证,但提出假设的能力本身就是数据模型给不了的。
11.3 例子 III:微阵列数据
我们在一个包含三个类别、样本量为 81 且有 4,682 个变量(基因)的微阵列淋巴瘤数据集上运行了随机森林,期间未进行任何变量筛选 [有关该数据集的更多信息,请参见 Dudoit, Fridlyand 和 Speed(2000)]。其误差率极低。从科学的角度来看,同样有趣的是对 4,682 个基因表达中每一个重要性的估计。
图 6 的图表是通过运行一次随机森林产生的。这一结果与使用其他算法方法进行的变量重要性评估一致,但似乎展现出了更为锐利的细节。
[图 6:微阵列变量重要性]
11.4 关于这些例子的评述
这些例子表明,可以从算法模型中获取大量的信息。Friedman(1999)通过另一种不同的森林构建方式也推导出了类似的变量信息。它们的相似之处在于,它们都是作为提供低预测误差的手段而建立起来的。
在肝炎数据集里有 32 例死亡和 123 例存活。把每个人都当作存活者会产生 的基准错误率。logistic 回归仅将其降低到了 。它并没有从数据中提取出太多有用的信息,这可能解释了它为何无法找到重要的变量。如果其预测准确性没有得到评估,那么它的这一弱点可能永远不会为人所知,而其变量重要性结论也会被直接接受。
HumanLanguage:这段是全文对临床读者最实用的一击。基准错误率指“什么模型都不建、一律猜多数类”的成绩:155 人里 123 人存活,全猜存活就只错 。logistic 回归辛苦建模一场,只把它推进到 ——比什么都不做强 个百分点。可它照样能输出一串带星号的显著变量。如果没人去算这个基准,模型有多没用是看不出来的,而它的变量重要性结论却会被照单全收。
随机森林还能够发现标准数据模型无法揭示的数据的重要切面。例子 II 中第二类患者潜在的有趣聚类就是一个例证。当拟合诸如 logistic 回归之类的数据模型时,标准程序是剔除变量。再次引用 Diaconis 和 Efron(1983)的话:“……统计经验表明,在只有 155 个可用数据点的情况下,去拟合一个依赖 19 个变量的模型是不明智的。”而机器学习中的新方法则因变量多而蓬勃发展——越多越好。例如,随机森林并不会发生过拟合。它在具有 4,600 多个变量的例子 III 的淋巴瘤数据集上给出了出色的准确率,期间没有任何变量剔除,并且能够从数据中提取出变量重要性信息。
HumanLanguage:“随机森林并不会发生过拟合”是作者本人的措辞,需要限定着读。它成立的部分是:树种得越多,泛化误差不会因此变差(会收敛到一个稳定值),所以不必为“树太多”提心吊胆。但这不等于随机森林在任何数据上都不会过拟合——样本少、噪声大时它照样会。真正稳妥的做法始终是那一条:在模型没见过的数据上量一次。
这些例子说明了以下几点:
- 更高的预测准确性与关于潜在数据机制更可靠的信息相联系。
- 微弱的预测准确性可能导致值得怀疑的结论。
- 算法模型可以提供比数据模型更好的预测准确性,并提供关于潜在机制更好的信息。
12. 结语
统计学的目标是利用数据进行预测并获取关于潜在数据机制的信息。从来没有任何一块石碑上刻着应该使用哪种模型来解决涉及数据的问题。为了阐明我的立场,我本身并不反对数据模型。在某些情况下,它们是解决问题最合适的方法。但是,重点必须放在问题本身和数据上。
HumanLanguage:读到这里要留意作者自己的收口:他不反对数据模型,反对的是把它当成唯一的默认动作。全文的主张不是“回归都不能信、都该换成森林”,而是——先看问题和数据要什么,再选工具;以及无论选了哪种,都要用模型没见过的数据量一量它到底有多准。
不幸的是,我们的领域对数据模型有着既得利益,无论发生什么都对它不离不弃。例如,看 Dempster(1998)关于建模的论文。他对 1990 年人口普查调整争议的立场特别有趣。他承认自己对数据或细节了解不多,但认为只要下一剂建模的猛药,问题就可以得到解决。但在我看来,通过更多的建模就能让充满误差的数据变得准确,这是极不可能的。
数以太字节(TB)的数据正从科学和商业等许多渠道涌入计算机,我们迫切需要分析和理解这些数据。例如,扫描天空的望远镜和射电望远镜正以惊人的速度产生数据。包含数百万星体物体的图像被存储在磁带或磁盘上。天文学家需要自动化的方法来扫描他们的数据,以发现某些特定类型的星体或新奇的天体。这是一项引人入胜的事业,我怀疑数据模型在此是否适用。然而,在我的分类账本中,我会将这登记为一个统计学问题。
基因数据的分析是目前最具挑战性、也是最有趣的统计学问题之一。诸如在第 11.3 节中分析的微阵列数据,可以在理解遗传效应方面带来重大进展。但在第 11.3 节中对变量重要性的分析,使用随机数据模型将很难准确完成。
诸如星体识别或基因表达数据分析之类的问题,对于统计学家来说可能是一场伟大的冒险。但这要求他们专注于解决问题,而不是去问自己能创建什么样的数据模型。最好的解决方案可能是一个算法模型,也可能是一个数据模型,亦或两者的结合。但作为一名科学家的诀窍,在于对使用各种各样的工具保持开放态度。
统计学的根基正如科学的根基一样,在于与数据打交道,并用数据检验理论。我希望在本世纪,我们的领域将回归其根源。有迹象表明这种希望并非不切实际。在过去的十年中,统计学工作明显表现出向现实世界问题靠拢、统计学家也正主动向与其他学科的合作研究伸出双手。我相信这一趋势将会继续下去,实际上,如果我们作为一个充满活力和创造力的领域生存下去,它就必须继续下去。
词汇表
由于本文中使用的某些术语可能并非所有统计学家都熟悉,我在此附加一些定义。
-
无穷测试集误差(Infinite test set error):假设损失函数 是对当 是真实响应、而 是预测响应时的误差的度量。在分类中,通常的损失是:如果 则为 1,如果 则为 0。在回归中,通常的损失是 。给定一组由 组成的数据(训练集),使用它构建 的预测函数 。假设训练集是从随机向量 的分布中独立同分布(i.i.d)抽取的。无穷测试集误差为 。这在机器学习中被称为泛化误差(generalization error)。
- 泛化误差通常通过留出数据的一部分作为测试集,或者通过交叉验证来估计。
-
预测准确性(Predictive accuracy):这指的是估计的泛化误差的大小。良好的预测准确性意味着较低的估计误差。
-
树和节点(Trees and nodes):该术语指的是 Breiman 等人(1984)的书中描述的决策树。
-
将 投放到树中(Dropping an x down a tree):当预测变量的向量被“投放”到树中时,在每个中间节点上,它都会根据 的坐标指示它是往左走还是往右走。它最终停止在叶节点(终端节点),并被赋予该节点给出的预测值。
-
装袋(Bagging):是“自助聚合”(bootstrap aggregating)的首字母缩写。从一种算法开始,使得给定任意训练集时,该算法会产生一个预测函数 。该算法可以使决策树构建、带有变量剔除的 logistic 回归等。从训练集中抽取一个自助样本,并使用该自助训练集来构建预测器 。抽取另一个自助样本,并使用第二个训练集构建预测器 。以此类推,持续 个步骤。在回归中,对所有的 取平均,得到 处的装袋预测器。在分类中,获得 的多数票(或复数票)的类别即为装袋预测器。装袋已被证明在减少方差方面十分有效(Breiman, 1996b)。
-
提升(Boosting):在分类中,这是一种比装袋更复杂的构建预测器集成的方法(Freund 和 Schapire, 1996)。它不使用随机化,而是通过改变训练集上的权重来进行。它在降低预测误差方面的表现是极其优异的(详情参见 Breiman, 1998)。
致谢
关于数据建模的许多想法,都是在与我的老朋友兼合作者 Jerome Friedman 三十年的交谈中形成的。与 Richard Olshen 关于 Cox 模型及其在生物统计学中应用的一番长谈,帮助我理解了背景。我还非常感激 William Meisel,他负责了我咨询过的几个预测项目,并帮助我实现了从概率论到算法的过渡;也要感谢 Charles Stone 针对统计学和科学的本质进行的极富启发性的探讨。我同样非常感谢编辑 Leon Gleser 的意见,这些意见促成了手稿初稿的重大重写,并最终产生了一篇与以往不同、更优秀的论文。
参考文献
略(完整文献请见原论文)。
