机器学习------决策树------构造(CART分类与回归树)

决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
常用的算法有ID3,C4.5,CART

ID3算法

ID3算法的核心是在决策树的各个节点上应用信息增益(大)准则选择特征,递归的构建决策树。

  信息增益准则对可取值数目较多的属性有所偏好!

缺点:ID3算法只有树的生成,所以该算法生成的树容易产生过拟合。

C4.5算法

C4.5算法对ID3算法进行了改进,使用信息增益比(大)来选择特征。

  增益率准则对可取值数目较少的属性有所偏好!

CART算法

分类与回归树(classification and regression tree, CART)

决策树的生成久士递归的构建二叉决策树的过程,对回归树用平方误差最小化准则对分类树用基尼指数(小)最小化准则,进行特征选择,生成二叉树。

CART详细解释:

CART算法既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Regression Tree)

1、CART作为分类树

      CART作为分类树时,特征属性可以是连续类型也可以是离散类型,但观察属性(即标签属性或者分类属性)必须是离散类型。

CART分类树在节点分裂时使用GINI指数,GINI指数是度量数据划分或训练数据集D的不纯度为主。GINI值越小,表明样本的纯净度越高(即该样本只属于同一类的概率越高)。衡量出数据集某个特征所有取值的Gini指数后,就可以得到该特征的Gini Split info,也就是GiniGain。不考虑剪枝情况下,分类决策树递归创建过程中就是每次选择GiniGain最小的节点做分叉点,直至子数据集都属于同一类或者所有特征用光了。

2、CART作为回归树

      当数据拥有众多特征并且特征之间关系十分复杂时,构建全局模型的想法就显得太难了,也略显笨拙。而且,实际生活中很多问题都是非线性的,不可能使用全局线性模型来拟合任何数据。一种可行的方法是将数据集切分成很多份易建模的数据,然后利用线性回归技术来建模。如果首次切分后仍然难以拟合线性模型就继续切分。在这种切分方式下,树结构和回归法就相当有用。

      回归树要求观察属性是连续类型,由于节点分裂选择特征属性时通常使用最小绝对偏差(LAD)或者最小二乘偏差(LSD)法,因此通常特征属性也是连续类型。

      以最小绝对偏差(LAD)为例

      (1)先令最佳方差为无限大bestVar=inf。

      (2)依次计算根据某特征(FeatureCount次迭代)划分数据后的总方差currentVar(,计算方法为:划分后左右子数据集的总方差之和),如果currentVar

      (3)返回最佳分支特征、分支特征值(离散特征则为二分序列、连续特征则为分裂点的值),左右分支子数据集。

回归树举个例子:

原来CART回归树生成这么简单啊。。。
首先建立一个数据集,为了方便,就取少量数据,如下表,数据的创建仅作参考

 

臂长(m)年龄(岁)体重(kg)身高(m)(标签值)
0.55201.1
0.77301.3
0.921701.7

训练数据中臂长,年龄,体重为特征变量X,身高为标签值Y,下面开始种树
1、首先将第一个特征的第一个值作为切割点(0.5),则划分的两个空间记为R1,R2

 

 

 

所以对于固定了特征后,从上面的MSE得出,所以特征“臂长=0.7”为切分点。同理。对于特征年龄,也可以采取上述的方式寻找最佳切分点,这样遍历了所有的特征,寻找平方误差最小的对(j,s),j表示第j个特征,s表示第j个特征的第s个值。本例中最佳切分点为0.7,所以以此将特征空间划分为两个区域(R1,R2).
3、对于第二步得到的R1h和R2,分别再次求最佳切分点,递归操作,过程同1~2。
 

 

 

    显然该数据集包含17个样本,类别为二元的,即。则,正例(类别为1的样本)占的比例为:,反例(类别为0的样本)占的比例为:。根据信息熵的公式能够计算出数据集D的信息熵为:

 

 

 

 

 

 

 

 

二 减枝

预剪枝(pre-pruning)
后剪枝(post-pruning)

首先剪枝(pruning)的目的是为了避免决策树模型的过拟合。因为决策树算法在学习的过程中为了尽可能的正确的分类训练样本,不停地对结点进行划分,因此这会导致整棵树的分支过多,也就导致了过拟合。决策树的剪枝策略最基本的有两种:预剪枝(pre-pruning)和后剪枝(post-pruning):

预剪枝(pre-pruning):预剪枝就是在构造决策树的过程中,先对每个结点在划分前进行估计,若果当前结点的划分不能带来决策树模型泛华性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点。
后剪枝(post-pruning):后剪枝就是先把整颗决策树构造完毕,然后自底向上的对非叶结点进行考察,若将该结点对应的子树换为叶结点能够带来泛华性能的提升,则把该子树替换为叶结点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值