随机森林(Random Forest)学习笔记

引言

随机森林是一种集成学习算法,通过多个分类方法建模选择出最好的模型方法。

集成学习算法:综合多个评估器(estimator)的建模结果,汇总后得到一个综合的结果,以此来获取比单个模型更好的回归或分类表现。

常见的集成学习算法包含随机森林、梯度提升树(GBDT),Xgboost。

集成算法种类

Bagging:建立多个模型,相互独立地预测,对于预测结果进行平均计算或者多数表决原则来决定集成评估器(ensemble estimator)的结果。典型代表是随机森林。

Boosting:首先用一个模型进行预测,然后对于预测结果错误的样本,在下一个预测模型中会赋予更高的权重去进行预测。核心思想是将多个评估效果弱的模型,不断强化形成一个强大的模型。代表模型又Adaboost和梯度提升树。

集成算法库

功能
ensemble.AdaBoostClassifier AdaBoost分类
ensemble.AdaBoostRegressor AdaBoost回归
ensemble.BaggingClassifier 装袋分类器
ensemble.BaggingRegressor 装袋回归器
ensemble.ExtraTreesClassifier Extra-trees分类
ensemble.ExtraTreesRegressor Extra-trees回归
ensemble.GradientBoostingClassifier 梯度提升分类
ensemble.GradientBoostingRegressor 梯度提升回归
ensemble.IsolationForest 隔离森林
ensemble.RandomForestClassifier 随机森林内分类
ensemble.RandomForestRegressor 随机森林回归
ensemble.RandomForestEmbedding 完全随机树集成
ensemble.VotingForestClassifier 用于不适合估算器的软投票/多数规则分类器

RandomForest 建模流程

1. 实例化,建立评估模型对象

2. 通过模型接口训练模型

3. 通过模型接口提取需要的信息

from sklearn.ensemble import RandomForestClassifier 

rfc = RandomForestClassifier
rfc = rfc.fit(X_train, y_train)
result = rfc.score(x_test,y_test)

函数原型

class.sklearn.ensemble.RandomForestClassifier(n_estinators=‘10’,criterion=‘gini’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=‘auto’,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,bootstrap=True,oob_score=False,n_jobs=None,random_state=None,verbose=0,warm_start=False,class_weight=None)

参数介绍

绝大多数和决策树(Decision Tree)相同。

参数
n_estimators

森林里树的数量,通常数量越大,效果越好,但是计算时间也会随之增加。

当树的数量超过一个临界值之后,算法的效果并不会很显著地变好。 

max_features

分割节点时考虑的特征的随机子集的大小。

这个值越低,方差减小得越多,但是偏差的增大也越多。 根据经验,回归问题中使用 max_features = None (总是考虑所有的特征), 分类问题使用 max_features = "sqrt" (随机考虑 sqrt(n_features) 特征,其中 n_features 是特征的个数)是比较好的默认值。

max_depth

min_samples_split

max_depth = None 和 min_samples_split = 2 结合通常会有不错的效果(即生成完全的树)
bootstrap 在随机森林中,默认使用自助采样法(bootstrap = True), 然而 extra-trees 的默认策略是使用整个数据集(bootstrap = False)。 当使用自助采样法方法抽样时,泛化精度是可以通过剩余的或者袋外的样本来估算的,设置 oob_score = True 即可实现。

猜你喜欢

转载自blog.csdn.net/xzhu4571/article/details/125329176