决策树的构建以及ID3算法、C4.5算法、CART算法

决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。

一、决策树构建过程

1 构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。

2 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。

3 如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。

4 每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。

二、每次划分时的属性选择

如何切分特征(选择节点)问题:

根节点的选择该用哪个特征呢?接下来呢?如何切分呢?

想象一下:我们的目标应该是根节点就像一个老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了。

目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推

熵:

熵是表示随机变量不确定性的度量(解释:说白了就是物体内部的混乱程度,比如杂货市场里面什么都有那肯定混乱呀,专卖店里面只卖一个牌子的那就稳定多啦)

公式: H(X)=-Σpi * logpi, i=1,2, .., n0     

一个栗子:

A集合[1,1,1,1,1,1,1,1,2,2]

B集合[1,2,3,4,5,6,7,8,9,1]

显然A集合的熵值要低,因为A里面只有两种类别,相对稳定一些,而B中类别太多了,熵值就会大很多。(在分类任务中我们希望通过节点分支后数据类别的滴值大还是小呢?)

信息增益:

表示特征X使得类Y的不确定性减少的程度(分类后的专一性,希望分类后的结果是同类在一起)

如何决策一个节点的选择呢?

下面介绍一个决策树的构造方法,下面的图来自这个视频4-决策树构造实例_哔哩哔哩_bilibili

决策树的构建以及ID3算法、C4.5算法、CART算法_第1张图片

 首先找到划分根节点的属性,分别计算4个属性的信息增益

决策树的构建以及ID3算法、C4.5算法、CART算法_第2张图片

 先算出关于天气这个属性,各个值的熵

决策树的构建以及ID3算法、C4.5算法、CART算法_第3张图片

 然后再算出关于天气的信息增益

决策树的构建以及ID3算法、C4.5算法、CART算法_第4张图片

 同理计算其他三个特征的信息增益,选择信息增益最大的特征划分根节点,,,,然后一次划分每个子树,直至不能划分(即每个叶子节点的熵为0,或者到达了预设条件)

三、ID3算法、C4.5算法、CART算法

  • ID3算法(信息增益准则):根据信息增益最大来选取最优划分特征。

ID3往往选择分类水平多的特征作为划分特征;不能处理连续变量,需要对连续变量进行离散化;对缺失值敏感;没有剪枝设置,容易过拟合。

  • C4.5算法(信息增益率准则):先从候选划分特征中找出信息增益高于平均水平的特征,再从中选择信息增益率最高的作为最优划分特征。

C4.5算法中,增益率准则可分类水平少的特征有所偏好,校正了ID3算法中的不足。增加了连续变量处理手段,将连续变量处理为N-1个二分方案,找到增益率最大的切分点。

  • CART算法(Sklearn使用该算法)

分类树:Gini准则

回归树:对到达叶节点的样本使用平均值作出预测,用最小平方误差来选择最优切分点和最优划分变量

四、决策树剪枝

  • 预剪枝:决策树生成中,每个节点划分前进行估计,如果不能带来决策树预测泛化能力的提升,则停止划分并将当前节点标记为叶节点。训练开销和测试开销小,但是可能带来欠拟合。
  • 后剪枝:先训练完一棵完整的树,自底向上对非叶节点进行考虑,如果该非叶节点替换为叶节点后带来决策树预测泛化能力的提升,则将子树替换为叶节点。训练开销大,欠拟合风险小,泛化能力强。

你可能感兴趣的:(文章,决策树,机器学习,算法)