机器学习 · 互动实验室
决策树与随机森林
看一个问题怎样切开数据,再让多棵树一起投票
01选择问题02分开样本03多树投票
看这里
照常举行取消活动黄色点:待判断的明天实心=学习样本 空心=检验样本
文字版:决策树与随机森林在做什么
决策树把预测拆成一连串的是非题:先问一个最能把两类分开的问题,把数据切成两半,再在每一半里继续问。随机森林则是训练很多棵不一样的树,让它们投票。这一页把「一棵树怎么切」和「一群树怎么投」放在同一张图上对照。
画面上正在发生什么
选「一棵决策树」,每播放一步就多问一个问题,图上多一条切线,整个平面被切成一个个矩形区域,每个区域里按多数样本定一种颜色。把最大深度往上调,切线越来越多、区域越来越碎——这时看「学习样本」和「检验样本」两个成绩:前者会一直涨,后者涨到某个深度之后反而开始掉,那一刻就是过拟合。
切到「随机森林」,边界不再是横平竖直的硬折线,而是变得柔和。因为森林里每棵树看到的样本和特征都不完全相同,它们各自切错的地方不一样,投票之后大部分错误互相抵消了。
什么时候它会骗你
- 单棵树能把训练数据切到全对。只要深度够,决策树可以给每个训练样本一个专属的小格子,学习样本上的成绩做到 100%。这个数字没有任何意义——它衡量的是背书能力,不是判断能力。
- 斜着分布的两类,树要用很多级台阶去逼近。决策树每次只能沿着某一个特征切一刀,所以边界永远是横平竖直的。切到「斜着分开的两类」这组数据,你会看到它用一串阶梯去拟合一条斜线——能做到,但很笨拙,也很容易过拟合。
- 特征重要性会偏向取值多的那一列。树在挑分裂点时,取值种类多的特征(比如连续数值、高基数的 ID)天然有更多切法可选,更容易被选中,重要性排名因此虚高。看到 ID 类的列排在前面,通常是泄漏或这种偏倚。
常见问题
- 随机森林为什么比单棵决策树稳?
- 因为它在两个地方引入了随机:每棵树用自助采样得到的不同样本训练,每次分裂只从随机选出的一部分特征里挑。这让树与树之间的错误不再一致,投票时互相抵消,整体方差大幅下降。代价是失去了单棵树「能画出来给人看」的可解释性。
- 决策树需要做特征标准化吗?
- 不需要。树只关心「这个值大于还是小于分裂点」,对特征做任何单调变换(缩放、取对数)都不会改变分裂的结果。这和 KNN、SVM 这类基于距离的方法正好相反。
- 怎么防止决策树过拟合?
- 常用手段是限制最大深度、要求叶节点至少包含若干样本、要求分裂必须带来足够的纯度提升,或者先长满再剪枝。但最要紧的是用独立数据评估——这一页把学习样本和检验样本的成绩并排显示,就是为了让过拟合当场可见。
本页为教学合成数据,两个成绩分别在学习样本与检验样本上实时计算,不代表任何真实数据集上的表现。