随机森林回归参数详解

随机森林回归参数详解

类型 参数
弱分类器数量 n_estimators
弱分类器的训练数据 bootstrap, oob_score, max_samples, max_features, random_state
弱分类器结构 criterion, max_depth, min_samples_split,
min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes,
min_impurity_decrease
其他 n_jobs, verbose, ccp_alpha

黑体参数在这篇博文中有解释https://editor.csdn.net/md/?articleId=135768073,具体的就不赘述了。

下面我们来看看绿体的参数。

不过首先还是要说一下随机森林回归中criterion参数

criterion可选的有:squard_error(平方误差),absolute_error(绝对误差),poisson(泊松误差)

平方误差:
∑ i = 1 n ( y i − y i ^ ) 2 \sum_{i=1}^n(y_i-\hat{y_i})^2 i=1n(yiyi^)2
y i y_i yi表示真实值, y i ^ \hat{y_i} yi^表示预测值

绝对误差:
∑ i = 1 n ∣ y i − y i ^ ∣ \sum_{i=1}^n|y_i-\hat{y_i}| i=1nyiyi^
泊松误差:
2 ∑ i = 1 n ( y i l o g ( y i y i ^ ) − ( y i − y i ^ ) ) 2\sum_{i=1}^n(y_ilog(\frac{y_i}{\hat{y_i}})-(y_i-\hat{y_i})) 2i=1n(yilog(yi^yi)(yiyi^))

平方误差比绝对误差更敏感,计算更快

泊松误差可以用来预测点击量,客户/离职人数,销售量等

feature_importances_是基于特征对criterion下降量的总贡献量,因此不同的criterion可能得到不同的特征重要性。不过选择criterion的唯一指标就是最终的交叉验证结果。

n_estimators:弱评估器的数量,重要参数,一般首要要调的参数。

随机森林回归参数详解_第1张图片
n_estimators默认100,个人电脑一般能容忍200-1000左右。

bootstrap:布尔值,是否有放回抽样。

如下图所示,在一个含有m个样本的原始训练集中,我们进行随机采样。每次采样一个样本,并在抽取下一个样本之前将该样本放回原始训练集,也就是说下次采样时这个样本依然可能被采集到,这样采集max_samples次,最终得到max_samples个样本组成的自助集

随机森林回归参数详解_第2张图片
样本被抽中的概率为:
1 − ( 1 − 1 m ) m a x _ s a m p l e s 1-(1-\frac{1}{m})^{max\_samples} 1(1m1)max_samples
一般情况下,max_samples = m
即:

1 − ( 1 − 1 m ) m 1-(1-\frac{1}{m})^m 1(1m1)m
当样本数量足够大的时候,上面的由洛必达法则可以得出一个样本被抽中的概率为0.632。即有37%袋外的数据。

bootstrap=True的时候,可以使用oob_score(是否使用袋外数据进行验证)和max_samples(自助集的大小)

max_samples表示自助集的大小,可以输入整数、浮点数或None,默认为None。

输入整数m,则代表每次从全数据集中有放回抽样m个样本

输入浮点数f,则表示每次从全数据集中有放回抽样f*全数据量个样本

输入None,则表示每次抽样都抽取与全数据集一致的样本量(X.shape[0])

max_features:特征的随机抽样

在随机森林中max_features的用法与决策树中完全一致,其输入也与决策树完全一致:

输入整数,表示每次分枝时随机抽取max_features个特征

输入浮点数,表示每次分枝时抽取round(max_features * n_features)个特征

输入"auto"或者None,表示每次分枝时使用全部特征n_features

输入"sqrt",表示每次分枝时使用sqrt(n_features)

输入"log2",表示每次分枝时使用log2(n_features)

一般情况下,log2返回的值比sqrt返回的值更小,如果想树之间差异更大,选log2。

无论对数据进行怎样的抽样,我们能控制的都只是建立单棵树时的数据而已,在总数据量有限的情况下,单棵树使用的数据量越大,每一颗树使用的数据就会越相似。每棵树的结构也会越相似,bagging的效果难以发挥,模型也很容易变得过拟合。因此,当数据量足够时,我们往往会消减单棵树使用的数量。

random_state:随机抽样的模式

设置随机数种子,可以重复抽样的结果,令本该“随机”的过程变成固定过程。

如在1,2,3,4,5中抽三个数,每次抽样结果肯定是不一样的,第一次可能是123,第二次可能是142,如果我们设置了随机数种子,那么我们每次抽的都是一样的。

注意:

  1. 不同库的随机种子遵循不同的规则,即使不同库的随机种子设置一样,也不会得到一样的结果;
  2. 当数据量足够大的时候,随机种子对模型几乎没有影响。但数据量比较小的时候,我们可以把随机种子当参数进行调整,一切以模型的结果为准。

你可能感兴趣的:(机器学习,机器学习,随机森林,回归,算法)