sklearn中决策树的类都在tree这个模块下,这个模块共包含5个类
tree.DecisionTreeClassifier
tree.DecisionTreeRegressor
tree.export_graphviz
tree.ExtraTreeClassifier
tree.ExtraTreeRegressor
一.DecisionTreeClassifier 1.重要参数①criterion:用来决定不纯度的计算方法的,sklearn提供了两种选择
输入“entropy”,使用信息熵
输入“gini”,使用基尼系数
比起基尼系数,信息熵对不纯度更加敏感,对不纯度的惩罚更强
但在实际使用中,信息熵和基尼系数的效果基本相同
②random_state & splitter
random_state:用来设置分枝中的随机模式的参数,默认none,在高维度时随机性会表现更明显,低维度的数据随机性几乎不会显现
splitter:用来控制决策树中的随机选项的,有两种输入值,输入“best”,决策树在分枝时虽然随机,但还是会优先选择更重要的特征进行分枝;输入“random”,决策树在分枝时会更加随机,树会更深,对训练集的拟合将会降低,这也是防止过拟合的一种方式
当你预测到你的模型会过拟合,用这两个参数来帮助你降低过拟合的可能性
2.剪枝参数①max_depth
限制树的最大深度,超过设定深度的树枝全部剪掉
这是使用的最广泛的剪枝参数,在高维度低样本量时非常有效。实际使用时,建议从 3 开始尝试,看看拟合效果再决定是否增加设定深度
②min_samples_leaf & min_samples_split
分枝会朝着满足每个子节点都包含min_samples_leaf个样本的方向去发生
一般搭配max_depth使用,在回归树中有神奇的效果,可以让模型变得更加平滑,这个参数的数量设置得太小会引起过拟合,设置得太大就会阻止模型学习数据,一般来说,建议从 5 开始使用
min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生
③max_features & min_impurity_decrease
max_features是用来限制高维度数据的过拟合的剪枝参数,其方法是直接限制可以使用的特征数量而强行使决策树停下的参数,在不知道决策树中各个特征重要性的情况下,强行设定这个参数可能会导致模型学习不足
min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分值不会发生
④如何确认最优的剪枝参数?
超参数的学习曲线:一条以超参数的取值为横坐标,模型的度量指标为纵坐标的曲线,它是用来衡量不同超参数去之夏模型的表现的线
3.目标权重参数class_weight & min_weight_fraction_leaf
完成样本标签平衡的参数
4.重要属性和接口决策树最常用的接口有fit,score,apply和predict
apply中输入测试集返回每个测试样本所在的叶子节点的索引
predict输入测试集返回每个测试样本的标签
注意:所有接口中要求输入X_train和X_test的部分,输入的特征矩阵必须至少是一个二维矩阵,sklearn不接受任何一维矩阵作为特征矩阵被输入
二.DecisionTreeRegressor几乎所有参数,属性及接口都和分类树一模一样
需要注意的是,在回归树中,没有标签分布是否均衡的问题,因此没有class_weight这样的参数
criterion:回归树衡量分枝质量的指标,支持的标准有三种
①输入“mse”使用均方误差,这种方法通过使用叶子节点的均值来最小化L2损失
②输入“fridman_mse”使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分枝中的问题改进后的均方误差
③输入“mae”使用绝对平均误差,这种指标使用叶节点的中值来最小化L1损失
在回归树中,MSE不只是我们的分枝质量衡量指标,也是最常用的衡量回归树回归质量的指标
回归树的接口score返回的是R平方,并不是MSE
虽然均方误差永远为正,但是sklearn中使用均方误差作为评判标准时,确是计算“负均方误差”,因此真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字



