使用流程 & 参数总表

=============================

9个主要参数:n_estimators,Criterion,两个随机性相关的参数(random_state,splitter),五个剪枝参数(max_depth,min_samples_split,min_samples_leaf,max_feature,min_impurity_decrease)
1特殊参数(目标权重参数): class_weight & min_weight_fraction_leaf
一个属性:feature_importances_
四个接口:fit,score,apply,predict

参数调节顺序:

0 根据情况决定
Criterion&random_state

-> 1 n_estimators

-> 2 max_depth & min_samples_leaf

-> 3 其他三个剪枝参数

基于经验,图原作者对各个参数对模型的影响程度做了一个排序。在我们调参的时候,大家可以参考这个顺序。

机器学习随机森林 R代码 随机森林算法参数设置_机器学习随机森林 R代码

调参思路:

数据少的情况下每个参数学习曲线画一下确定一下大致范围

数据大网格搜索效果不一定有自己跑的高,因为参数多说不定还没有参数少的时候结果好,下面这个例子就是这样.所以建议是少量的重要特征叠加测试然后,逐渐增加

重要参数及其详细说明

评估器参数:n_estimators

说明:

决定森林中树的数量,即评估器的数量

作用:

数量越多效果越好,但是相对的计算成本和过拟合可能性都会升高

参数推荐:

根据样本来,可以考虑样本数量开平方

模式参数: random_state

说明:

随机模式的设置

作用:

如果不固定下来,每次模型跑出来分数都不一样(不考虑训练集,测试集划分问题)

参数推荐:

随意

注意点

分类树中,一个random_state只控制生成一棵树,而随机森林中的random_state控制的是生成森林的模式,整个森林的random_state值是不变的,但是森林中的每颗树的random_state值是不同的。

纯度参数1:criterion

说明:
确定不纯度的计算方法,帮忙找出最佳节点和最佳分枝,不纯度越低,决策树对训练集的拟合越好.
分类模式
有"gini"(基尼系数)和"entropy"(信息增益)可选
回归模式
有’mse’,'friedman_mse’和’mae’可选,默认的是R2

作用:

不同的计算方法计算时间和效果不同

分类模式
“gini”:通过基尼系数计算
“entropy”:通过信息增益计算
回归模式
‘mse’:通过使用叶子节点的均值来最小化L2损失
‘friedman_mse’:使用弗里德曼针对潜在分枝中的问题改进后的均方误差
‘mae’:使用叶节点的中值来最小化L1损失

参数推荐:
分类模式
数据维度低时->两者差别不大,‘gini’运算快
数据维度高/噪音大时->‘gini’
拟合程度低时->‘entropy’
实际可以两者都试试
回归模式
一般使用’mse’或’friedman_mse’

分支参数: splitter

说明:

控制决策树分支模式的选项
有"best"和"random"可选

作用:

“best”:选择优先选择更重要的特征进行分支
“random”:随机特征分支

参数推荐:

模型效果过拟合时推荐"random"

注意点:

1两者在低维度时几乎没有差别

剪枝参数: max_depth

说明:

限制树的最大深度,超过设定深度的树枝全部剪掉

作用:

对模型效果和过拟合都有巨大的影响

参数推荐:

建议从=3开始尝试,看看拟合的效
果再决定是否增加设定深度。

注意点:

1两者在低维度时几乎没有差别

剪枝参数2: min_sample_leaf

说明:

节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本

作用:

抑制过拟合

参数推荐:

建议从=5开始使用。如果叶节点中含有的样本量变化很大,建议输入浮点数作为样本量的百分比来使用。
对于类别不多的分类问题,=1通常就是最佳选择
跑学习曲线一般是从最小值1开始向上增加10或20.面对高维度高样本量数据,如果不放心,也可以直接+50,对于大型数据,可能需要200~300的范围如果调整的时候发现准确率无论如何都上不来,那可以放心大胆调一个很大的数据,大力限制模型的复杂度
注意点:

1一般搭配max_depth使用,在回归树中有神奇的效果,可以让模型变得更加平滑

剪枝参数3: min_samples_split

说明:

节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝

作用:

抑制过拟合

参数推荐:

跑学习曲线一般是从最小值1开始向上增加10或20.面对高维度高样本量数据,如果不放心,也可以直接+50,对于大型数据,可能需要200~300的范围如果调整的时候发现准确率无论如何都上不来,那可以放心大胆调一个很大的数据,大力限制模型的复杂度

剪枝参数4: max_features

说明:

一般被当做max_depth使用,用作树的”精修“.用来限制高维度数据的过拟合的剪枝参数

作用:

直接限制可以使用的特征数量而使决策树停止分裂

参数推荐:

除非对数据很熟悉,或者经验丰富否则不推荐使用

注意点:

1在不知道决策树中的各个特征的重要性的情况下,强行设定这个参数可能会导致模型学习不足。如果希望通过降维的方式防止过拟合,建议使用PCA,ICA或者特征选择模块中的降维算法。

剪枝参数5: min_impurity_decrease

说明:

限制信息增益的大小

作用:

信息增益小于设定数值的分枝不会发生。

参数推荐:

待定

注意点:

1待定

目标权重参数: class_weight & min_weight_fraction_leaf

说明:

完成样本标签平衡的参数

作用:

给少量的标签更多的权重,让模型更偏向少数类,向捕获少数类的方向建模

参数推荐:

该默认None,表示自动给与数据集中的所有标签相同的权重。
对数据熟悉可自行调整

注意点:

1有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了,因此这时候剪枝,就需要搭配min_weight_fraction_leaf这个基于权重的剪枝参数来使用。另请注意,基于权重的剪枝参数(例如min_weight_fraction_leaf)将比不知道样本权重的标准(比如min_samples_leaf)更少偏向主导类。如果样本是加权的,则使用基于权重的预修剪标准来更容易优化树结构,这确保叶节点至少包含样本权重的总和的一小部分。

重要属性和接口:

决策树最常用的接口还有apply和predict。apply中输入测试集返回每个测试样本所在的叶子节
点的索引,predict输入测试集返回每个测试样本的标签。

#apply返回每个测试样本所在的叶子节点的索引
clf.apply(Xtest)
#predict返回每个测试样本的分类/回归结果
clf.predict(Xtest)