5.随机森林
特征¶
在机器学习里,用来描述研究对象(比如一只猫,或者你要预测的房价、股票走势等)的属性或者信息点,就叫做特征 (Features)。
如果你的数据是一个表格,那么每一列通常就代表一个特征(比如“用户年龄”、“商品价格”、“房屋面积”)。每一行代表一个样本(比如一个用户、一个商品、一个房子)。
决策树¶
想象一下你玩“20个问题”的游戏,你想猜我心里想的是什么动物。
你可能会先问:“是哺乳动物吗?” 我回答“是”。
然后你可能会问:“是食肉动物吗?” 我回答“不是”。
接着你问:“体型比狗大吗?” 我回答“是”。
... 就这样,你通过一系列问题,一步步缩小范围,最后猜出答案。
决策树就是这样一个过程。它从一个根节点 (root node) 开始,包含所有的数据。然后,它会尝试找到一个最好的特征和一个最好的分裂点 (split point),把数据分成两拨(或者多拨),让分裂后的目标数据尽可能地“纯粹”。每一次分裂,都希望能让分裂后的子节点内部的数据尽可能属于同一类别(对于分类任务),或者数值尽可能相近(对于回归任务)。
标准¶
树怎么知道哪个分裂点好呢?它需要一个量化指标。
当树尝试一个分裂点(比如“面积 < 80平米”)时,它会把数据分成两组。对于第一组(面积 < 80平米),它会计算这组数据的目标值(比如房价)的平均绝对误差MAE。第二组(面积 >= 80平米)也做同样的操作。
一个好的分裂,会使得分裂后两个子节点的内部 MAE 之和(或者加权平均MAE)比分裂前的父节点的 MAE 要小很多。
- MAE:平均绝对误差,每一组内部的数据,相较组内平均值(对于MAE,有时取中位数)的差值,取平均数
- MSE:平均平方误差,每一组内部的数据,相较组内平均值(对于MSE,取平均值)的差值的平方值,取平均值
何时停止¶
递归分裂:分裂后,数据被分到两个(或多个)新的子节点。然后,决策树会对每个子节点继续寻找最佳分裂点,直到满足某些停止条件,比如:
- 节点中的样本数量太少(比如少于5个)。
- 树达到了预设的最大深度。
- 分裂后,MAE(或其他标准)的降低程度非常小,不值得再分了。
- 节点内所有样本的目标值都一样了(回归任务中不太可能,分类任务中可能)。
当停止分裂时,这个节点就变成了叶子节点 (leaf node)。对于回归树,这个叶子节点的预测值通
如何预测¶
假设我们现在有一棵已经训练好的回归决策树, 当一个新的数据样本(包含所有特征 X 的值)需要被预测时,它会从这棵树的根节点开始向下进行tree walk。
在每一个内部节点,根据训练出的分裂规则,比如“WtrCmtRatio < 0.5?”。 模型会检查这个新样本的 WtrCmtRatio 特征值,走到它的叶节点。 这个过程会一直重复,直到它到达一个叶子节点。
叶节点取值的关键在于这棵树是怎么被训练出来的。在训练过程中, 每个叶子节点最终都会包含一部分原始训练集里的样本(这些样本都满足了从根节点到该叶子节点的所有分裂条件)。 这个叶子节点的预测值,通常就是当初掉入这个叶子节点的所有训练样本的目标值 (y) 的平均数。
所以,一旦新的数据样本通过上述的路径选择到达了某个叶子节点,这棵决策树对这个新样本的预测值,就是这个叶子节点预存的那个平均值。
随机森林¶
随机森林 = 多个决策树的集合 (Ensemble)
它不是只种一棵树,而是种下一大片“森林”,森林里的每一棵树都是一棵决策树。当需要做预测的时候,随机森林会让森林里的每一棵树都对新数据进行预测,然后把所有树的预测结果综合起来,得到最终的预测。
- 对于回归任务,通常是取所有树预测值的平均值。
- 对于分类任务,通常是采取少数服从多数的投票 (majority vote)。
为什么随机森林通常比单棵决策树效果好呢?关键在于“随机”这两个字:
样本随机 (Bootstrap Sampling / Bagging):¶
森林里的每一棵树都不是用全部的原始训练数据来训练的。
对于要建的每一棵树,都会从原始训练数据中有放回地随机抽取一部分样本(Bootstrap Sampling)。“有放回”意味着同一个原始样本可能被抽中多次,也可能一次都没被抽中。这样,每棵树学习的数据集都有点不一样,使得每棵树都有自己的“特长”和“偏见”。
特征随机 (Random Feature Subspace):¶
在单棵决策树分裂节点时,它会考虑所有可用的特征来找到最佳分裂点; 但在随机森林里,当每棵树的某个节点需要分裂时,它不会考虑所有的特征,而是从所有特征中随机选择一部分特征,然后再从这一小部分选中的特征里找到最佳分裂点。
这样做进一步增加了森林中树的多样性。如果某个特征特别强,在普通的决策树里可能每次分裂都会优先用它。但在随机森林里,这个强特征可能在某些树的某些节点分裂时根本没机会被选中,这样其他特征也有了表现的机会,使得整个森林更加鲁棒。