随机森林回归参数详解
类型 | 参数 |
---|---|
弱分类器数量 | 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=1∑n(yi−yi^)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=1∑n∣yi−yi^∣
泊松误差:
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=1∑n(yilog(yi^yi)−(yi−yi^))
平方误差比绝对误差更敏感,计算更快
泊松误差可以用来预测点击量,客户/离职人数,销售量等
feature_importances_是基于特征对criterion下降量的总贡献量,因此不同的criterion可能得到不同的特征重要性。不过选择criterion的唯一指标就是最终的交叉验证结果。
n_estimators:弱评估器的数量,重要参数,一般首要要调的参数。
n_estimators默认100,个人电脑一般能容忍200-1000左右。
bootstrap:布尔值,是否有放回抽样。
如下图所示,在一个含有m个样本的原始训练集中,我们进行随机采样。每次采样一个样本,并在抽取下一个样本之前将该样本放回原始训练集,也就是说下次采样时这个样本依然可能被采集到,这样采集max_samples次,最终得到max_samples个样本组成的自助集
样本被抽中的概率为:
1 − ( 1 − 1 m ) m a x _ s a m p l e s 1-(1-\frac{1}{m})^{max\_samples} 1−(1−m1)max_samples
一般情况下,max_samples = m
即:
1 − ( 1 − 1 m ) m 1-(1-\frac{1}{m})^m 1−(1−m1)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,如果我们设置了随机数种子,那么我们每次抽的都是一样的。
注意: