上一篇我们说到,为了解决单个决策树容易发生过拟合的问题,我们经常会用多棵树来代替。
这种将多个机器学习模型合并的方法,我们叫做集成。这一篇我们将主要介绍两种集成方法,分别是随机森林和梯度提升决策树。
随机森林
随机森林(Random Forest),顾名思义,它由很多棵决策树构成,而且每棵树彼此都不同。
下面来看下构造随机森林所需的步骤:
1.确定森林中树的个数
2.从数据集中采用有放回抽样,建立一个与原始数据同样大小的新数据集。
3.在每个节点处,都使用特征的一个子集来划分。
4.由2、3步所保证,随机森林中所有树木都不相同。
最后,我们将所有决策树的预测结果进行平均,就是最终的结果。
实战
加载随机森林模型
还是使用我们常用的乳腺癌数据集
接下来开始训练模型
最后来看下模型的精度
可以看到精度为95.1%,比单个决策树的泛化能力还是要强一些的。
模型的重要参数
1.n_estimators
该参数控制树的个数,我们总是希望树越多越好。树越多,模型的表现也就越好。但树越多,模型训练的时间也就越长,我们需要在时间和性能这两者之间寻找一个平衡点。
2.max_features
该参数指我们在划分时需要考虑的特征数。该值越大,那么各个树之间的差别越小,容易发生过拟合;该值越小,各个树的差别越大,会降低过拟合,但各个树的深度也越大。我们也需要找到一个平衡点来处理二者的关系。
模型的优缺点
通常来说,随机森林具有决策树所有的优点,而且其泛化能力比决策树还要强。它不需要数据的预处理,也不需要调节大量参数,就可以得到很好的效果,在实际应用中也很广泛。
但对于具有很多特征的数据来说,随机森林的表现并不如线性模型那么好。因为它要耗费大量的资源(内存、性能)去拟合数据,花费的时间会长的多。
梯度提升决策树
与决策树不同的是,梯度提升决策树(Gradient Boosting Decision Tree,GBDT)并没有一次性构造完所有的树。它在构造下一棵树时,会纠正前一棵树的错误,再进行构造。
GBDT的深度通常很小,一般在5以下,这样会加快模型运行速度。
实战
首先,加载GBDT模型
还是用我们之前的癌症数据集来训练模型
然后看下模型的泛化能力
模型的重要参数
1.n_estimators
该参数控制树的数量。树越多,模型越复杂,越容易发生过拟合。
2.max_depth
该参数控制树的深度,深度越大,树的复杂度也越大,一般来说深度不超过5.
3.learning_rate
学习率,该参数控制对前一棵树纠错的力度。学习率越大,纠正能力越强。
模型的优缺点
GBDT的优点跟随机森林类似,也是无需进行数据的预处理。
但GBDT的参数较多,需要仔细调整;而且对于特征特别多的数据,表现也不是很好。
领取专属 10元无门槛券
私享最新 技术干货