经典与统计学习

决策树(decision tree)

/ dih-SIZH-un tree /

决策树做预测的方式,就像一位谨慎的医生或一名海关人员——抛出一连串「是/否」问题,每一问都把范围收窄一点,直到得出判决。体温高于38°C吗?是的话,有咳嗽吗?也有的话,就预测为流感。这是计算机依据数据为自己搭起的一张流程图,你可以从上到下逐字读完这棵成形的树,原原本本地看清它为什么这样判。

机器以贪心的方式逐题搭树。每一步,它都扫遍所有特征,挑出那一刀切得最好、能把样本分成更「纯」的两组——比如那一刀把几乎所有垃圾邮件甩到一边、把几乎所有正常邮件留在另一边。然后它在每个分支内部重复同样的事,一次次地继续切,直到各组足够干净,或触到某个停止规则。每个分支末端是一片叶子,里面存着抵达此处的所有样本的最终答案。

它最大的美德是透明:在医学、信贷这类领域里,能解释一个决定,有时和做出这个决定同样重要。树还能同时处理数字和类别,几乎不需要数据预处理。但单独一棵树是脆弱的——任由它疯长,它会把训练数据连同噪声一起背下来,这是过拟合的经典例子;而且数据上一点点小变动,就能把整棵树重新洗牌。正是这份脆弱,使得人们很少单用一棵,而是把许多棵合起来,组成随机森林或提升集成。

一家银行的放贷树:先按「收入 > 4万美元?」分叉——「否」向左走向「拒绝」。「是」向右走,再按「现有负债 > 收入的一半?」分叉——「是」倾向拒绝,「否」抵达一片标着「批准」的叶子。任何一位申请人,都能沿着三个问题的单一路径,被追溯到答案。

一张可读的「是/否」分叉流程图——透明正是它的卖点。

一棵不加限制、任意生长的孤树几乎总会过拟合——最后把过去解释得天衣无缝,把未来预测得一塌糊涂。给它剪枝(砍掉弱分支)或限制深度能让它保持诚实;把许多棵组合起来,则是森林与提升彻底解决这个问题的办法。

又称
classification treeregression treeCART决策树決策樹