决策树算法调参

scikit-learn决策树算法类库内部实现是使用了调优过的CART树算法,既可以做分类,又可以做回归。

1、特征选择标准:

DecisionTreeClassifier:可以选择gini(基尼系数,默认)或entropy(信息增益)。

DecisionTreeClassifier:可以使用mse(均方差,默认)或mae(平均绝对误差)。

通常都是选择默认值。

2、特征划分点选择标准splitter:可以使用best(默认,在特征的所有划分点中寻找最优点)或random(随机在局部划分点寻找局部最优划分点)。如果样本数据量不大,使用best。如果样本数据量太大,使用random。

3、划分时考虑的最大特征数max_features:可以使用很多种类型的值,默认是"None",意味着划分时考虑所有的特征数;如果是"log2"意味着划分时最多考虑log2N个特征;如果是"sqrt"或者"auto"意味着划分时最多考虑√N个特征。如果是整数,代表考虑的特征绝对数。如果是浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数。其中N为样本总特征数。一般来说,如果样本特征数不多,比如小于50,我们用默认的"None"就可以了。

4、决策树最大深max_depth: 默认是不限制,数据少或者特征少的时候可以不管这个值。常用的可以取值10-100之间。

5、内部节点再划分所需最小样本数min_samples_split: 如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。样本数量大,这个值也要增大。

6、叶子节点最少样本数min_samples_leaf: 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。样本数量大,这个值也要增大。

7、叶子节点最小的样本权重和min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重。

8、类别权重class_weight:只适用于分类。可以自己指定,或者用balanced(算法自己设计权重,样本量越少的类别权重越高),默认为None。

9、最大叶子节点数max_leaf_nodes: 通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。

10、节点划分最小不存度min_impurity_split:这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,MSE,MAE)小于这个值则节点不在生成子节点。

11、数据是否排序presort:一个布尔值,默认False。如果样本量少或者限制了一个深度很小的决策树,可以设置为True,让划分点选择更加快,决策树建立更加快。关键是这种情况下,即使设为False,速度也不慢。所以这个值一般不用管。

 

 

 

 

你可能感兴趣的:(算法)