决策树

一、算法流程:

在这里插入图片描述

决策树的生成是个递归的过程,显然能发现三种导致递归返回的情况:
1、当前节点所包含的样本全部属于同一类,无需划分 。这时将结点化为叶子结点,样本属于该类别。
2、属性集为空或者数据集在当前属性集上所有取值相同,无法划分 。这时将结点化为叶子结点并将样本归属于多数类。
3、当前节点所包含的样本集合为空,不能划分。这时将结点化为叶子结点并将样本归属于父节点的多数类。

二、划分选择

信息熵:
在这里插入图片描述

1.信息增益:

在这里插入图片描述

例题:根据西瓜数据集建立决策树。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后分别对剩下的五个属性按照此方法计算,得到最终如下的决策树:

在这里插入图片描述

2.C4.5——增益率

在这里插入图片描述

3.CART 基尼系数

在这里插入图片描述
其中,
在这里插入图片描述

三、剪枝处理

1.预剪枝
在这里插入图片描述
预剪枝控制了决策树的生长,可以按照上图的方法进行(测试样本的分类错误率最小时停止),也可以通过设定信息增益阈值或者通过信息增益的统计显著性分析来进行。降低了过拟合的风险并显著减少了决策树的训练时间开销和测试时间开销。但是,由于缺乏全局观念,预剪枝可能导致欠拟合。
2.后剪枝
在这里插入图片描述
后剪枝欠拟合风险很小,泛化能力高于预剪枝决策树,但训练时间开销比未剪枝决策树和预剪枝决策树要大得多。

四、选择最佳划分的度量

对于离散属性,直接采用前面所述的信息增益、C4.5、CART方法构造决策树即可。但是,对于连续属性,我们可以采用二分法对连续属性进行处理:
1.给定样本集D上连续属性a的n个不同取值,按从小到大排序;
2.对连续属性求出可能的n-1个划分点集合T;
3.对T中的每个划分点计算对应的信息增益;
4.取使信息增益最大的划分点为真实的划分点

例题:对“密度”和“含糖率”属性进行划分。
在这里插入图片描述
在这里插入图片描述
对于缺失值,我们先忽略其缺失性,最终信息增益乘上一个缩放因子即可。
例题:对西瓜数据集构造决策树。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、随机森林

1.对样本数据进行自举重采样,得到多个样本集;
2.用每个重采样样本集作为训练样本构造一个决策树;
3.得到所需数目的决策树后,代入测试样本对这些树的输出进行投票,以得票最多的类作为随机森林的决策。

补充:斜决策树

在这里插入图片描述

代码演示:

>>> from sklearn.datasets import load_iris
>>> from sklearn import tree
>>> X, y = load_iris(return_X_y=True)
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(X, y)
>>> tree.plot_tree(clf) 

在这里插入图片描述

>>> from sklearn.datasets import load_iris
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.tree import export_text
>>> iris = load_iris()
>>> decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2)
>>> decision_tree = decision_tree.fit(iris.data, iris.target)
>>> r = export_text(decision_tree, feature_names=iris['feature_names'])
>>> print(r)
|--- petal width (cm) <= 0.80
|   |--- class: 0
|--- petal width (cm) >  0.80
|   |--- petal width (cm) <= 1.75
|   |   |--- class: 1
|   |--- petal width (cm) >  1.75
|   |   |--- class: 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值