和决策树模型类似,scikit-learn中的随机森林模型也提供了基于普通Decision Tree的Random Forest学习器和基于随机化Extra Tree的ExtraTrees学习器。
鉴于Decision Tree和Extra Tree差别甚小,本文以Random Forest为例进行介绍。
1. 模型的主要参数
在Random Forest中,存在两大类型的参数,分别为框架参数和单棵决策树参数
其中,单棵决策树参数参照先前介绍的决策树模型,而框架参数包括:
模型参数 | Parameter含义 | RandomForestClassifier | RandomForestRegressor |
n_estimators | 子树数量 | 随机森林中决策树的数量,其值越大模型的表现越优秀,但计算量也越大 | |
bootstrap | 有无放回采样 | 默认为True,即采用有放回式采样,从而可以不划分验证集,用这些袋外数据进行验证(见参数oob_score)。而在Extratrees中该值默认为False,即选取全量样本进行训练。 | |
oob_score | 袋外评分 | 即是否采用袋外数据进行模型的验证评估,默认为True。 |
2. 模型的主要方法
随机森林模型中涉及到众多子决策树的综合评估,所以其无法像普通Decision Tree模型一样提供
apply
方法API。
模型方法 | 含义 | 备注 |
fit | 模型训练 | 支持Decison Tree中的sample_weight参数 |
predict | 预测结果 | 返回综合各子决策树结果后的分类值或者回归值,分类值为比重最高的分类,回归值为叶子节点均值的平均值 |
predict_proba | 分类预测概率值 | 仅在classifier中有该方法,返回各分类的概率值 |
predict_log_proba | 分类预测对数值 | 仅在classifier中有该方法,返回各分类的对数概率值 |
3. 模型的主要属性
模型属性 | 含义 | 备注 |
estimators_ | 估计器列表 | 返回由n_estimators个子决策树构成的列表 |
classes_ | 样本分类结果 | 适用于classifer的单分类结果,返回各样本的分类预测值 |
n_classes_ | 样本分类结果 | 适用于classifer的多分类结果,返回各样本的多分类预测值 |
feature_importances_ | 特征权重 | 基于gini数得到各特征的特征重要性 |
oob_score_ | 含义 | 袋外数据的总的评估结果 |
oob_decision_function_ | 含义 | 每个袋外数据的评估结果 |
注意,相较于单棵决策树的feature_importances_,随机森林模型中的feature_importances_是对各子决策树结果的平均。
4. 模型的可视化
不同于单棵决策树可以进行有效的可视化,随机森林模型由于子学习器众多,因此无法进行有效的可视化。即使可以对其中的每棵决策树进行单独的可视化,但考虑到随机性的影响,意义并不大。
5. 模型的调参
(1)调整n_estimators参数
(2)按照决策树模型的调参顺序进行调整,详见决策树模型。