机器学习笔记7-CART决策树+剪枝

CART算法(分类+回归)

CART又名分类回归树,该算法既可以用于分类还可以用于回归。

CART树有以下几个关键点:

  • CART是一棵二叉树;
  • 当CART是分类树时,采用GINI值作为节点分裂的依据;
  • 当CART是回归树时,采用样本的最小方差作为节点分裂的依据;

CART树节点的分裂分为两种情况,连续型的数据和离散型的数据。分裂的目的是为了能够让数据变纯,使决策树输出的结果更接近真实值。那么CART是如何评价节点的纯度呢?如果是分类树,CART采用GINI值(基尼指数)衡量节点纯度;如果是回归树,采用样本方差衡量节点纯度。节点越不纯,节点分类或者预测的效果就越差。

基尼指数是信息熵中 -logP在P=1处一阶泰勒展开后的结果!所以基尼指数近似于信息熵

基尼指数和信息熵的区别:https://www.jianshu.com/p/75518e6a5c64

                                           https://blog.csdn.net/qq_39408570/article/details/89764177

参考例子,这篇博客讲的更仔细https://blog.csdn.net/e15273/article/details/79648502

分类模型:

ID3中使用了信息增益选择特征,增益大优先选择。C4.5中,采用信息增益比选择特征,减少因特征值多导致信息增益大的问题。CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,不纯度越低,特征越好。这和信息增益(比)相反。

Gini(D) =1-\sum_{k=1}^{K}{(\frac{\left |C_{k}\right |}{\left |D\right |})}^{2}      Gain(D,A) =\sum_{i=1}^{n}({\frac{\left |D_{i}\right |}{\left |D\right |}}*Gini(D_{i}))

回归模型:

采用和方差度量,度量目标是对于划分特征A,对应划分点s两边的数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小。表达式为:

 

下面举例说明:

看电视时间婚姻情况职业年龄
3未婚学生12
4未婚学生18
2已婚老师26
5已婚上班族47
2.5已婚上班族36
3.5未婚老师29
4已婚学生21

以职业这个属性来划分,总共有三种划分方法

第一种划分方法:{“学生”}、{“老师”、“上班族”}

预测是否已婚(分类):

Gain =\sum_{i=1}^{I}p_{i}Gini_{i}=\frac{3}{7}*(1-(\frac{1}{3})^{2}-(\frac{2}{3})^{2})+\frac{4}{7}*(1-(\frac{1}{4})^{2}-(\frac{3}{4})^{2})=0.4

预测年龄(回归):

Gain =\sum_{i=1}^{I}\delta_{i}=(12-17)^{2}+\cdots+(26-32.5)^{2}+\cdots =303

第二种划分方法:{“老师”}、{“学生”、“上班族”}

预测是否已婚(分类):

Gain =\sum_{i=1}^{I}p_{i}Gini_{i}=\frac{2}{7}*(1-(\frac{1}{2})^{2}-(\frac{1}{2})^{2})+\frac{5}{7}*(1-(\frac{2}{5})^{2}-(\frac{3}{5})^{2})=0.49

预测年龄(回归):

Gain =\sum_{i=1}^{I}\delta_{i}=(26-27.5)^{2}+\cdots+(12-26.8)^{2}+\cdots =827.3

第三种划分方法:{“上班族”}、{“学生”、“老师”}

预测是否已婚(分类):

Gain =\sum_{i=1}^{I}p_{i}Gini_{i}=\frac{2}{7}*(1-1)+\frac{5}{7}*(1-(\frac{2}{5})^{2}-(\frac{3}{5})^{2})=0.34

预测年龄(回归):

Gain =\sum_{i=1}^{I}\delta_{i}=(47-41.5)^{2}+\cdots+(12-21.2)^{2}+\cdots =239.3

综上,如果想预测是否已婚,则选择{“上班族”}、{“学生”、“老师”}的划分方法,如果想预测年龄,也选择{“上班族”}、{“学生”、“老师”}的划分方法。

回归树和模型树:

CART算法将数据集切分成多份易建模的模型。

回归树:叶子节点使用分段常数

模型树:叶子节点使用线性回归方程

CART树算法的剪枝

预剪枝:在创建树的时候添加一些限制条件,例如方差的差值大于某个阈值,划分数据集后每个数据集的数量也需要大于某个阈值等。

后剪枝:将数据集划分成测试集和训练集。接下来从上而下找到叶子节点,用测试集来判断将这些叶节点合并是否能降低测试误差。如果是的话就合并。

CART剪枝:参考博客https://blog.csdn.net/zhengzhenxian/article/details/79083643?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值