美文网首页
10.gitchat训练营-决策树——既能分类又能回归的模型

10.gitchat训练营-决策树——既能分类又能回归的模型

作者: 风吹柳_柳随风 | 来源:发表于2019-03-10 21:40 被阅读0次

    1.什么是决策树

            决策树是一种非常基础又常见的机器学习模型。
            一棵决策树(Decision Tree)是一个树结构(可以是二叉树或非二叉树),每个非叶节点对应一个特征,该节点的每个分支代表这个特征的一个取值,而每个叶节点存放一个类别或一个回归函数。
            使用决策树进行决策的过程就是从根节点开始,提取出待分类项中相应的特征,按照其值选择输出分支,依次向下,直到到达叶子节点,将叶子节点存放的类别或者回归函数的运算结果作为输出(决策)结果。

    2.构建决策树

            决策树的作用过程是很简单的,那么决策树是如何构造的呢?
            简单讲,有以下几步:
                    1.准备若干的训练数据(假设 m 个样本);
                    2.标明每个样本预期的类别;
                    3.人为选取一些特征(即决策条件);
                    4.为每个训练样本对应所有需要的特征生成相应值——数值化特征;
                    5.将通过上面的1-4步获得的训练数据输入给训练算法,训练算法通过一定的原则,决定各个特征的重要性程度,然后按照决策重要性从高到底,生成决策树。

    3.几种常用算法

            决策树的构造过程是一个迭代的过程。每次迭代中,采用不同特征作为分裂点,来将样本数据划分成不同的类别。被用作分裂点的特征叫做分裂特征
            选择分裂特征的目标,是让各个分裂子集尽可能地“纯”,即尽量让一个分裂子集中的样本都属于同一类别。
            如何使得各个分裂子集“纯”,算法也有多种,这里我们来看几种。

    4.ID3 算法

            该算法的核心是:以信息增益为度量,选择分裂后信息增益最大的特征进行分裂
            首先我们要了解一个概念——信息熵。
            假设一个随机变量 x 有 n 种取值,分别为\{x_1,x_1,...,x_n\},每一种取值取到的概率分别是\{p_1,p_2,...,p_n\},那么 x 的信息熵定义为:
    Entropy(x) = -\sum_{i=1}^{n}p_i \log_2(p_i)
            熵表示的是信息的混乱程度,信息越混乱,熵值越大。
            设 S 为全部样本的集合,全部的样本一共分为 n 个类,则:
    Entropy(S) = -\sum_{i=1}^{n}p_i \log_2(p_i)
            其中,P_i为属于第i个类别的样本,在总样本中出现的概率。
            接下来要了解的概念是信息增益,信息增益的公式为(下式表达的是样本集合 S 基于特征 T 进行分裂后所获取的信息增益):
    InformationGain(T)=Entropy(S)−\sum_{value(T)}\frac{|S_v|}{|S|}Entropy(S_v)
            其中:

    • S为全部样本集合,|S|S的样本数;
    • T为样本的一个特征;
    • value(T)是特征T所有取值的集合;
    • vT的一个特征值;
    • SvS中特征T的值为 v 的样本的集合,|Sv|Sv的样本数。
      ID3的缺点:ID3一般会优先选择取值种类较多的特征作为分裂特征;ID3不能处理取值在连续区间的特征。

    5.C4.5

            C4.5 选用信息增益率(Gain Ratio)——用比例而不是单纯的量——作为选择分支的标准。
            信息增益率通过引入一个被称作分裂信息(Split Information)的项,来惩罚取值可能性较多的特征。
    SplitInformation(T) = -\sum_{value(T)}\frac{|S_v|}{|S|}\log{\frac{|S_v|}{|S|}}
    GainRatio(T) = \frac{InformationGain(T)}{SplitInformation(T)}
            C4.5在不能处理取值在连续区间的特征的弥补,具体做法如下:

    • 把需要处理的样本(对应整棵树)或样本子集(对应子树)按照连续变量的大小从小到大进行排序。
    • 假设所有 m 个样本数据在特征上的实际取值一共有 k(k<=m)个,那么总共有 k−1 个可能的候选分割阈值点,每个候选的分割阈值点的值为上述排序后的特征值中两两前后连续元素的中点。根据这 k-1 个分割点把原来连续的一个特征,转化为 k-1 个 Bool 特征。
    • 用信息增益率选择这 k-1 个特征的最佳划分。
              C4.5 有个问题:当某个|Sv|的大小跟|S|$的大小接近的时候:
      SplitInformation(T) → 0, GainRatio(T)→∞

    6.CART

            CART 算法的全称是: Classification and Regression Tree 分类和回归树。从这个名字一望可知,它不仅可以用来做分类,还可以用来做回归。
            CART 算法的运行过程和 ID3 及 C4.5 大致相同,不同之处在于:
                    1.CART 的特征选取依据不是增益量或者增益率,而是 Gini 系数(Gini Coefficient)。每次选择 Gini 系数最小的特征作为最优切分点。
                    2.CART 是一棵严格二叉树。每次分裂只做二分。
            这里面要特别提到概念:Gini 系数(Gini Coefficient)
    对于二分类问题,若样本属于第一类的概率是p,则:
    Gini(p) = 2p(1-p)
            这时,如果 p = 0.5, 则 Gini 系数为0.5;如果 p = 0.9, 则 Gini 系数为0.18。0.18 < 0.5,根据 CART 的原则,当 p=0.9 时,这个特征更容易被选中作为分裂特征。
            由此可见,对二分类问题中,两种可能性的概率越不平均,则越可能是更佳优越的切分点。
            回归树和分类树的区别在于最终的输出值到底是连续的还是离散的,每个特征——也就是分裂点决策条件——无论特征值本身是连续的还是离散的,都要被当作离散的来处理,而且都是被转化为二分类特征,来进行处理:

    • 如果对应的分裂特征是连续的,处理与 C4.5 算法相似;
    • 如果特征是离散的,而该特征总共有 k 个取值,则将这一个特征转化为 k 个特征,对每一个新特征按照是不是取这个值来分 Yes 和 No。

    相关文章

      网友评论

          本文标题:10.gitchat训练营-决策树——既能分类又能回归的模型

          本文链接:https://www.haomeiwen.com/subject/rloupqtx.html