前面几篇我们探讨了决策树算法,集成学习方法,今天我们就来探讨下基于bagging集成的决策树算法——随机森林(Random Forest)。随机森林虽然简单,但它是最强大的机器学习算法之一,也是实际应用中非常常用的算法之一,是我们必须要掌握的算法。
首先让我们简单的回顾下决策树算法,因为它是随机森林的基础。
1)决策树
决策树最大的特点就是直观,易解释。大家生活中在某一个时刻也在无意或有意的使用它,比如我们之前举的借钱的栗子。
决策树算法根据特征选择的方式不同,可以分为ID3算法,C4.5算法,CART算法。在CART算法中,使用Gini指数做特征选择,选择Gini指数最小的特征以及其对应的切分点作为最优特征与最优的切分点,循环反复直到满足停止条件。
由于决策树几乎不对训练数据做任何的假设,在不添加任务约束,树结构将会根据训练数据的特性自由生长,达到百分百的正确率。为了提高决策树的泛化能力,决策树使用了剪枝的方法。但是剪枝在减少模型方差的同时,也减小了模型的偏差(准确度)。那么有没有其他方法,在降低模型方差的同时,又不降低显著降低模型偏差?非常巧,上一篇我们提到的bagging集成方法正好有这个特性。
使用bagging集成多颗决策树(CART树)就叫做随机森林。
2)随机森林
我们在上篇在探讨bagging集成学习方法时,提到bagging集成方法有效的前提条件是,基模型之间必须保持低相关性,低相关性才能保证基模型之间的差异性,有差异性的基模型组合在一起才能成为一个更强大模型。
为了让CART树有更大差异性,随机森林除了对样本进行随机过采样,增加训练集的随机性之外,还在树的生成时引入了额外的随机,即特征随机。在树的生成时,选择随机采样的特征中的最好的特征作为分裂节点,这样使得每棵树有更大的差异性。
下面我们总结下随机森林的算法过程:
输入:数据量为 m m m的训练集 D D D, T T T颗CART树
输出:最终的随机森林 f ( x ) f(x) f(x)
1)对训练集 D D D进行 m m m次随机过采样,得到样本量为 m m m<