14.4 训练随机森林分类器
问题描述
训练一个随机森林分类器模型。
解决方案
使用scikit-learn中的RandomForestClassifier训练随机森林分类器模型:

讨论
决策树有一个常见问题,即倾向于紧密地拟合训练数据(过拟合)。这使得随机森林这种集成学习方法被普遍应用。在随机森林中,许多决策树同时被训练,但是每棵树只接收一个自举的(bootstrapped)样本(即有放回的随机抽样,抽样次数与原始样本数相同),并且每个节点在确定最佳分裂时只考虑全部特征的一个子集。这个由随机决策树组成的森林(随机森林因此而得名)通过投票决定样本的预测分类。
将此解决方案与14.1节的进行比较,可以发现scikit-learn的RandomForestClassifier与DecisionTreeClassifier的工作方式类似:

RandomForestClassifier也使用与DecisionTreeClassifier相同的参数。例如,我们可以更改度量分裂质量的方法:

不过,作为一个森林而不是一棵单独的决策树,RandomForestClassifier有一些独特且重要的参数。首先,参数max_features决定每个节点需要考虑的特征的最大数量,允许输入的变量类型包括整型(特征的数量)、浮点型(特征的百分比)和sqrt(特征数量的平方根)。默认情况下,参数max_features的值被设置为auto(相当于sqrt)。其次,参数bootstrap用于设置在创建树时使用的样本子集,是有放回的抽样(默认值)还是无放回的抽样。第三,参数n_estimators设置森林中包含的决策树的数量。在10.4节中,我们将n_estimators作为超参数,并可视化树的数量增加对评估指标的影响。最后,由于需要训练的决策树模型数量众多,可以设置参数n_jobs = -1来指定使用所有可用的CPU核进行训练,并且该参数不仅仅对随机森林分类器有效。
延伸阅读
●《随机森林》(Berkeley Statistics,http://bit.ly/2Fxm0Ps)



本书评论