机器学习算法系列————决策树(一)

决策树

1.概述

决策树能够从一系列有特征和标签的数据中总结出决策规则,并且使用树状图的结构来表现,从而达到解决回归和分类问题。通俗的说,就是我们只需要问一系列问题就可以对数据进行分类。核心要解决的问题:如何从数据中找出最佳节点和最佳分支。
如何让决策树停止生长,防止过拟合。

2.划分选择,寻找最优划分属性

2.1信息熵和基尼系数

就是用来形容系统混乱程度的,系统越混乱,熵就越大。信息熵也具有相同的意义,不过描述的是随机变量的不确定性。(也就是混乱程度)
请添加图片描述
其中t代表节点,i代表标签的任意分类,p(i|t)代表标签i在节点t上的比例。当使用信息熵时,sklearn实际计算的是基于信息熵的信息增益(Information Gain),即父节点的信息熵和子节点的信息熵之差。
在这里插入图片描述
图中为Gini计算出来的结果。从数据的label可以的出来结论,数据的纯度是一个越来越高的过程,同时伴随着Gini的降低。通俗地说,就是某一个标签的占比比较多。
在这里插入图片描述
可以看出当Gini为0.5的时候,Gini是最大的,说明数据的混论程度最大。对于Entropy也是相同的。

2.2信息增益和增益比

信息增益是用划分前的信息熵减去划分后的信息熵。如果决策树使用信息增益准则来选择最优划分属性的话,在划分前会针对每个属性都计算信息增益,选择能使得信息增益最大的属性作为最优划分属性。ID3算法就是使用的信息增益划分方法,决策树是一个基础理论,实际落地的算法有多种,ID3是其中一种。
算法C4.5是算法ID3的改进版,它使用了信息增益和增益比两种选择算法,先选出信息增益高于平均水平的属性,然后再在这些属性中选择增益比最高的,作为最优划分属性。这样综合了信息增益和增益比的优点,可以取得较好的效果。
其中CART决策树使用基尼指数。CART决策树与ID3和C4.5的区别。

  • 1.划分准则不同,如刚才所说,CART决策树使用基尼指数。
  • 2.ID3、C4.5划分时,一个节点可以划分为多个子结点,子结点数量根据属性可取值的数量决定。而CART决策树是严格的二叉树结构,就是说1个节点最多划分为2子结点。
    例子
    在这里插入图片描述
    在这里分别使用信贷特征房子特征进行举例说明。
  • 1.此图为信贷特征所计算出来的信息增益信息增益比
    在这里插入图片描述
    在这里插入图片描述
  • 2.此图为房子特征所计算出来的信息增益信息增益比
    在这里插入图片描述

结果分析
如果以信息增益为特征选择标准,可以知道房子的权重最大,因此优先选择房子作为首要特征,信贷特征其次。

信息增益比则是对信息增益进行了校正,从结果中可以知道,房子特征依旧是首要特征,但是工资特征其次,而不是信息增益中的信贷。

3.决策树回归

关于数据类型,我们主要可以把其分为两类,连续型数据和离散型数据。在面对不同数据时,决策树也 可以分为两大类型: 分类决策树和回归决策树。 前者主要用于处理离散型数据,后者主要用于处理连续型数据。

决策树回归就是指CART决策树回归,因此形成的数同样是严格的二叉树形式。
决策树回归的重点就在两个地方:
重点1:寻找最优切分点;
重点2:将样本切分后,子节点的输出值怎么算。
下图为数据图
在这里插入图片描述
下图为计算图
其中只是对工资这一个特征进行了举例说明。进而根据下表中的数据再次对数据集进行计算。
在这里插入图片描述

4.小结

在这里插入图片描述

  • 1.其中ID3只能用作分类,划分准则是信息增益。
  • 2.C4.5也只能用作分类,划分准则是先寻找信息增益大于均值的,然后再根据增益率选择最优划分属性
  • 3.CART决策树既可以分类也可以回归。分类时使用的基尼指数,回归时使用误差平方和。

5 sklearn中的决策树(分类树)

sklearn官网:http://scikit-learn.org/stable/index.html

5.1 sklearn中决策树的类都在”tree“这个模块之下。

简明介绍:

  1. 高随机版本分类树
  2. 高随机版本回归树
  3. 将生成的决策树导出为DOT格式,画图专用
    请添加图片描述

5.2 sklearn的基本建模流程

from sklearn import tree #导入需要的模块
clf = tree.DecisionTreeClassifier()     #实例化
clf = clf.fit(X_train,y_train) #用训练集数据训练模型
result = clf.score(X_test,y_test) #导入测试集,从接口中调用需要的信息

5.3 sklearn中重要参数的介绍

criterion
对于分类树来说,衡量一棵树的好坏的指标叫做‘不纯度’。通常来说,不纯度越低,这颗树就越好。
不纯度的计算方式有两种:
(1)信息熵(Entropy)
(2)基尼系数(Gini Impurity)
决策树的基本流程概括为:
(1)计算全部特征的不纯度指标
(2)选取不纯度指标最优的特征来进行分支
(3)除被选之外的特征中继续计算不纯度指标
(4)选取不纯度最低的特征来进行分支
splitter
用来控制决策树中的随机选项的。
(1)best:决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝。
(2)random:决策树在分枝时会更加随机。

random_state

random_state用来设置分枝中的随机模式的参数。输入任意整数,使得长出相同的树,使得模型更加稳定。

5.4 剪枝参数的介绍

max_depth

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

min_samples_leaf

一个节点在分支后的每一个字节点都必须要包含至少min_samples_leaf训练样本,否则分支不会发生。

min_samples_split

min_samples_split限定,一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝,否则分枝就不会发生。

max_features & min_impurity_decrease

max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。

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

class_weight

完成样本标签平衡的参数。

min_weight_fraction_leaf

有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了,因此这时候剪枝,就需要搭配min_weight_fraction_leaf这个基于权重的剪枝参数来使用。

1.2.4 重要属性和接口

feature_importances_

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

1.3 sklearn中的决策树(回归树)

1.3.1 重要参数,属性以及接口

回归树衡量分支的指标有三种:

(1)输入"mse"使用均方误差mean squared error(MSE。L2损失),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准。这种指标使用叶子节点的平均值来最小化L1损失。

(2)输入“friedman_mse”使用费尔德曼均方误差。

(3)输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶子节点的中值来最小化L1损失。

在回归树中,MSE不只是我们的分枝质量衡量指标,也是我们最常用的衡量回归树回归质量的指标,同时交叉验证的指标也是MSE。但是回归树的借口score是R平方。

虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“(neg_mean_squared_error)。这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error
去掉负号的数字。

参考链接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值