随机森林是什么?让很多棵决策树一起投票
随机森林(Random Forest)是一种集成学习算法,它通过训练大量的决策树,再把它们的预测结果组合起来,得到最终的结果。它由美国统计学家 Leo Breiman 在 2001 年系统地提出,结合了他此前提出的 Bagging 方法,以及何天琴(Tin Kam Ho)在 1995 年提出的随机决策森林、随机子空间等思想。“随机森林”这个名称也曾由 Breiman 和 Adele Cutler 注册为商标。
从决策树说起
决策树是一种直观的模型:它像一连串的“是非题”,比如判断一个人是否会购买某件商品时,先问“年龄是否小于 30 岁”,再根据回答问“收入是否高于某个数”,一步步往下走,最终得出结论。决策树简单易懂,但有一个明显的缺点:它很容易过拟合。一棵长得很深的决策树,可能会把训练数据中的偶然细节也当成规律记住,对训练数据的微小变化非常敏感,换一批数据,长出来的树可能就完全不同,在新数据上的表现也不稳定。
随机森林怎么做
随机森林的思路是“集思广益”:与其依赖一棵不太稳定的树,不如种一大片“森林”,让很多棵树一起来做决定。为了让这些树各不相同、能够相互弥补,随机森林引入了两种随机性。第一,对样本随机抽样:每棵树都从原始的训练数据中有放回地随机抽取同样数量的样本来训练,这样每棵树看到的数据都有所不同,这就是 Bagging 方法。第二,对特征随机选择:在每棵树的每一个分叉处,不是从全部特征中挑选最好的那个,而是先随机选出一部分特征,再从这一部分中挑选最好的。这进一步增加了树与树之间的差异,避免所有的树都依赖同样几个区分力最大的特征而长得相似。
预测时,对于分类问题,每棵树投出一票,得票最多的类别就是最终结果;对于回归问题,取所有树预测值的平均。单棵树可能犯错,但许多棵各不相同的树一起投票,个别树的错误会相互抵消,整体的结果就更准确、更稳定。
优点
准确率高,在很多任务上都能取得不错的效果;不容易过拟合,对噪声和异常值比较稳健;几乎不需要复杂的数据预处理,不需要对特征进行标准化,能同时处理数值型和类别型的特征;超参数不多,使用默认的设置往往就能得到较好的结果;各棵树可以并行地训练,速度较快;还能给出每个特征的重要性,帮助理解哪些因素对预测影响最大。另外,由于每棵树训练时都有一部分样本没有被抽到,可以用这些“袋外样本”来评估模型的效果,相当于自带了一个验证集。
局限和应用
随机森林由成百上千棵树组成,模型比较大,预测速度不如单棵树快;整体的可解释性不如单棵决策树直观;在一些任务上,精心调参的梯度提升树(如 XGBoost、LightGBM)效果往往更好。尽管如此,随机森林因为简单、稳健、效果可靠,被广泛用于金融风控、医学诊断、生物信息学、遥感图像分类、推荐系统等领域,常常是处理表格数据时首先尝试的基线模型之一。