决策树

    xiaoxiao2021-04-13  31

     

     概要

    是一种分类算法,它基于特征对实例进行分类。决策树的学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。

     

    应用场景:

       分类。

     

    优点:

    模型具有可读性、准确性高。 分类速度快。

     

    缺点:

    处理缺失值有困难存在过拟合的问题。对噪声敏感。

     

     

    关于特征选择

    计算每一个特征的信息增益(或信息增益比),选择其中值最大的一个特征来进行分裂。

     

    ID3算法:

    ID3算法采用了信息增益准则来进行特征的选择,其步骤如下:

    第一步:输入训练数据集D,特征集A,阀值e

    第二步:若D中所有实例都属于同一类Ck,则决策树T为单节点树,并将Ck作为该节点的类标记,返回决策树T。

    第三步:若特征集A为空集,那么T为单节点树,并将D中的实例数最大的类Ck作为该节点的类标记,返回T。

    第四步:若第二步与第三步都不满足,则计算特征集A中各个特征对D的信息增益,选择信息增益最大的特征Ag。

    第五步:如果Ag的信息增益小于阀值e,则T为单节点树,并将D中的实例数最大的类Ck作为该节点的类标记,返回T。

    第六步:若Ag的信息增益大于等于阀值e,对Ag的每一个可能值ai都分在一个子节点Di,将Di中实例数最大的类作为该子节点的标记。由结点与其子结点构成了树T,返回T。

    第七步,对第i个结点,以Di为-训练数据集,A-{Ag}为特征集,递归地调用第二步–>第六步,得到树Ti,返回Ti。

     

     

    C4.5决策树生成算法伪代码:

     

    # ==============================================

    # 输入:

    #       数据集

    # 输出:

    #       构造好的决策树(也即训练集)

    # ==============================================

    def创建决策树:

        '创建决策树'

       

        if (数据集中所有样本分类一致):

           创建携带类标签的叶子节点

        else:

           寻找划分数据集的最好特征

           根据最好特征划分数据集

           创建分支节点

           for 每个划分的子集:

                  创建决策子树(递归方式)

         Return分支节点

     

     

     

     

    CART回归决策树算法:略。

     

    CART分类决策树生成算法:

     

    输入:训练数据集D,停止计算的条件。

    输出:CART决策树。

    根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树:

    1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,利用式Gini(D,A)=(|D1|/|D|)Gini(D1)+(|D2|/|D|)Gini(D2)计算A=a时的基尼指数。

    2)在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子节点,将训练数据集依特征分配到两个子节点中去。

    3)对两个子节点递归地调用(1)(2),直至满足停止条件。

    4)生成CART决策树。

    算法停止的条件是结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同一类)或者没有更多特征。

    转载请注明原文地址: https://ju.6miu.com/read-668967.html

    最新回复(0)