sklearn 决策树_sklearn之决策树

我是谁?伊布

576c1f361abbc07a5aabc03f2d520c2e.png

决策树是一种非参数的有监督学习方法,能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适用各种数据,在解决各种问题时都有良好表现,尤其是以树模型为核心的各种集成算法,在各个行业和领域都有广泛的应用。

模块sklearn.tree

53e6ce86680404e4357a620c3f9e5e06.png

sklearn基本流程:第一步,实例化,建立评估模型对象;第二步,通过模型接口训练模型;第三步,通过模型接口提取需要的信息。第一步需要参数,第二步第三步可以有属性和接口。

0cfb17eb4676ec37d5257da015bcc4a9.png

分类树

重要参数

(1)criterion:不纯度,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心大多是围绕在对某个不纯度相关指标的最优化上。不纯度基于节点来计算,树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的,也就是说,在同一棵决策树上,叶子节点的不纯度一定是最低的。

可选:输入”entropy“,使用信息熵(Entropy);输入”gini“,使用基尼系数(Gini Impurity),效果基本相同,信息熵更敏感,基尼指数计算更快,信息熵更精细,但也更容易过拟合。通常就使用基尼系数;数据维度很大,噪音很大时使用基尼系数;维度低,数据比较清晰的时候,信息熵和基尼系数没区别;当决策树的拟合程度不够的时候,使用信息熵。

决策树步骤:第一步,计算全部特征的不纯度指标,第二步,选取不纯度指标最优的特征来分枝;第三步,在第一个特征的分枝下,计算全部特征的不纯度指标;第四步,选取不纯度指标最优的特征继续分枝……直到没有更多的特征可用,或整体的不纯度指标已经最优,决策树就会停止生长。

9ecd57230826aee40cbf52e757c168f4.png

画图

c6b78adf90a0881811c1b355e3ce1ba7.png

e61cb1339fe626d1997fa44ce48b6b25.png

决策树在每次分枝时,不使用全部特征,而是随机选取一部分特征,从中选取不纯度相关指标最优的作为分枝用的节点。

(2)random_state:控制决策树的随机性,设置随机种子可以让结果保持不变。random_state用来设置分枝中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来

0102d490a42a9a39626c5b854a49e1ba.png

(3)splitter:splitter是用来控制决策树中的随机选项的,有两种输入值,输入”best",决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝(重要性可以通过属性feature_importances_查看),输入“random",决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。这也是防止过拟合的一种方式。

49f993f67a3f176c2afab67f8f735535.png

(4)剪枝参数max_depth:限制树的最大深度,超过设定深度的树枝全部剪掉。实际使用时,建议从=3开始尝试,看看拟合的效果再决定是否增加设定深度。

(5)剪枝参数min_samples_leaf:分枝结果如果有一个少于设置的值,则取消分枝。

(6)剪枝参数min_samples_split:当前节点个数如果少于设置的值,则不再进行分组。

f925846ff915caa23db29debe3013182.png

ef0b7bb278cb230e07a42045329fba7f.png

(7)max_features:限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。如果想要降维方式防止过拟合可以先用PCA、ICA降维。

(8)min_impurity_decrease:限制信息增益的大小,信息增益小于设定数值的分枝不会发生。

确认最优的剪枝参数:

bc2bbaaf9f16a983a19dcac1e138d8e5.png

def894910d648bebf4d2708bb87827ce.png

(9)目标权重参数class_weight:处理不平衡数据,对样本标签进行一定的均衡,给少量的标签更多的权重,让模型更偏向少数类,向捕获少数类的方向建模。该参数默认None,此模式表示自动给予数据集中的所有标签相同的权重。

(10)目标权重参数min_weight_fraction_leaf:基于权重的剪枝参数。

重要属性和接口

属性:feature_importances_,能够查看各个特征对模型的重要性。

接口:通用的fit、score,常用的apply、predict

所有接口中要求输入X_train和X_test的部分,输入的特征矩阵必须至少是一个二维矩阵。sklearn不接受任何一维矩阵作为特征矩阵被输入。

7d88d49dba5bad832dad9c73f03baed4.png

回归树

DecisionTreeRegressor,几乎所有参数和属性分类树是一样的,回归树中没有标签分布是否均衡的问题,因此没有class_weight这样的参数。

(1)criterion:可输入mse均方误差,父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失;可输入“friedman_mse”费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差;输入"mae"绝对平均误差MAE,这种指标使用叶节点的中值来最小化L1损失

属性:feature_importances_;接口:apply, fit, predict, score

回归树中,MSE不只是分枝质量衡量指标,也是衡量回归树回归质量的指标。回归树的接口score返回的是R平方,并不是MSE,R平方可以为正为负,R平方可以为正为负。sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“。

(2)交叉验证:用来观察模型稳定性的方法,将数据划分为n份,依次使用其中一份作为测试集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度。

f20a771113aaee32f2750816082ed0c6.png

(3)实例:一维回归的图像绘制

a6965a748818ef752eeb6f8aaff5cc5a.png

a8a553015eb36600451f4c1ae3599520.png

7ee85856c799642512a3fd7ac538b5c8.png

ravel用法

0036cc400d2e3b14bd69fc56f3e562b5.png

np.newaxis用法

983e40008aaf574dcc9ffc016e714ad7.png

用深度为2和深度为5的回归树训练

640574641785873203b439ffab453152.png

a99964480d51047660f16219e3d980ee.png

实例:泰坦尼克号幸存者预测

5957d93242996ad6a53a6447503bad33.png

08880a44bcaa25caf44b8ec98459f70d.png

模型预测结果和交叉验证结果

9b179ff3b62d2b01ada8983cb05cf9b6.png

绘制学习曲线

bdcfc92f8073aed81eb4e7d1322338d7.png

34f9800c10b148a008cc0495e77daad9.png

网格搜索

e313304fd8cffb18e4218978820030a1.png

5bfe589f3cb72abd4f7484b08003fddf.png

决策树优缺点

优点:第一,易于理解和解释,因为树木可以画出来被看见;第二,需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。但sklearn中的决策树模块不支持对缺失值的处理。第三,使用树的成本是用于训练树的数据点的数量的对数,相比于其他算法成本较低;第四,能够同时处理数字和分类数据,既可以做回归又可以做分类。第五,能够处理多输出问题;第六,是一个白盒模型,结果很容易能够被解释;第七,可以使用统计测试验证模型;第八,即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好。

缺点:第一,决策树可能创建过于复杂的树,即过度拟合;第二,决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决;第三,决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。这个问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样;第四,决策树对于XOR,奇偶校验或多路复用器问题较难学习;第五,不平衡数据需要先平衡再用决策树。

分类树天生不擅长环形数据。

最擅长月亮型数据的是最近邻算法,RBF支持向量机和高斯过程;最擅长环形数据的是最近邻算法和高斯过程;最擅长对半分的数据的是朴素贝叶斯,神经网络和随机森林。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值