随机森林调参方法

一、默认参数
打印随机森林学习器的默认参数配置:

1、bootstrap=True

2、criterion='mse'

3、max_depth=None

4、max_features='auto'

5、max_leaf_nodes=None

6、min_impurity_decrease=0.0

7、min_impurity_split=None

8、min_samples_leaf=1

9、min_samples_split=2

10、min_weight_fraction_leaf=0.0

11、n_estimators=10

12、n_jobs=1

13、oob_score=False

14、random_state=None

15、verbose=0

16、warm_start=False

二、重要参数
1、系统参数
(1)random_state(随机发生器种子数)
如果是int,random_state是随机数发生器使用的种子; 如果是RandomState实例,random_state是随机数生成器; 如果为None,则随机数生成器是np.random使用的RandomState实例。

2、决策树参数
(1)max_features(最大特征数)
划分特征时的最多特征数,可以是多种类型的值。默认为“None”,即划分时考虑所有特征数。

其他值:“log2”——最多考虑log2N个特征;“sqrt”/“auto”——最多考虑sqrt(N)个特征;int(n)——可填任意大于1且不大于特征数量的整数。

一般而言,当样本特征数较少(<50)时,使用默认配置即可。

(2)max_depth(决策树最大深度)
默认为“None”,即决策树建立子树时不限制子树的深度。在样本量较少或特征数较少的情况下可以使用默认配置。否则,推荐取值10-100之间。

(3)min_samples_split(内部结点再划分所需最小样本数)
当某节点的样本数少于min_samples_split时,不会继续再尝试选择最优特征来进行划分。 默认为2,如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大该值。

(4)min_samples_leaf(叶结点最少样本数)
当某叶结点数目小于样本数,则和兄弟结点一起被剪枝。默认为1。当样本量不大时,可以使用默认配置。否则推荐增大该值。

(5)min_weight_fraction_leaf(叶结点最小样本权重和)
该值限制了叶结点所有样本权重和的最小值,如果小于该值,则会和兄弟节点一起被剪枝。 默认为0,即不考虑权重问题。当样本存在较多缺失值,或分类树样本的分布类别偏差很大时,将引入样本权重,此时需要考虑该值。

(6)max_leaf_nodes(最大叶结点数)
该值能够防止过拟合,默认为“None”,即不限制最大叶结点数。但特征不多时,使用默认配置即可。否则需要设置该值,具体数值通过交叉验证获得。

(7)min_impurity_split(结点划分最小不纯度)
该值限制了决策树的增长,当某结点的不纯度小于阈值,则该结点不再生成子结点,一般推荐使用默认值1e-7。

3、Bagging框架参数
    Bagging框架中各弱学习器之间没有依赖,因此随机森林的调参难度低于梯度提升树。

(1)n_estimators(弱学习器最大迭代次数)
    即弱学习器的个数。一般而言,该值太小易发生欠拟合,太大则成本增加且效果不明显。一般选取适中的数值,默认为10。

(2)oob_score (是否采用袋外样本评价模型)
    默认为False。推荐使用True,因为这样可以反映模型拟合后的泛化能力。

(3)criterion(特征评价标准)
    分类和回归模型的损失函数不同:分类模型默认为基尼指数,也可选择信息增益;回归模型默认为均方差(mse),也可选择绝对值差(mae)。一般而言选择默认配置即可。

三、调参
一般采用网格搜索法优化超参数组合。这里将调参方法简单归纳为三条:1、分块调参(不同框架参数分开调参);2、一次调参不超过三个参数;3、逐步缩小参数范围。这里以n_estimators参数为例(省略数据和模型的导入):

#导入网格搜索模块
from sklearn.model_selection import GridSearchCV
rfr_best = RandomForestRegressor()
params ={'n_estimators':range(10,20,1)}
gs = GridSearchCV(rfr_best, params, cv=4)
gs.fit(X_train,Y_train)
 
#查验优化后的超参数配置
print(gs.best_score_)
print(gs.best_params_)

————————————————
版权声明:本文为CSDN博主「Caesar1993_Wang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Caesar1993_Wang/article/details/80337103

你可能感兴趣的:(随机森林,java,python)