zoukankan      html  css  js  c++  java
  • 决策树初探

    决策树是一种常用的监督学习方法,它根据输入的训练集各样本的特征向量和标签从上到下建立一棵树,每个非叶结点是一个特征,每个叶结点是一个标签,结点之间的边是特征的一个取值。决策的过程就像程序流经层层嵌套的if-else语句,最后进到一个不再细分的块(叶结点)里,从而预测出样本的归类。

    决策树的优点是简单实用、速度快、白盒决策(即人可以理解模型的决策过程,相应的像深度学习模型的决策过程人就无法理解),缺点是、、启发式建树往往找不到最优解;决策过程很“硬”,只根据信息增益来选择特征,且特征用过就不能“回头”,特征向量很大时问题可能更明显;容易造成过拟合。

    建树的过程,本质上就是不断挑选特征作为“分叉标准”。我们当然希望能找出一颗“全局最优”的决策树,但很遗憾这是一个NP完全问题。因此只好退而求其次,采用启发式的学习方法,即每次都在当前剩下的特征里挑选一个“最能将训练集正确划分”的特征作为下一个结点,挑选的标准是来自信息论的“信息增益”等概念。所谓信息增益,即在获得这个信息之后,整个系统的混乱未知程度(熵)下降的大小。

    决策树有三种生成算法,ID3、C4.5和CART,前两种是针对分类问题的,第三种既可以用于分类问题,也可用于回归问题。

    一、ID3算法

    采用信息增益作为特征选取的标准。伪代码如下:

    1.初始有一个样本分组,即训练集全体样本;每组有一个对应的特征集合,初始样本分组对应的特征集合为全体特征。

    2.若分组里绝大部分样本都处在同一个分类,或分组对应的特征集合为空,则创造一个叶结点,以样本投票决定该结点的标签名;

    3.逐个计算特征集合里各特征的信息增益,若最大的信息增益未达到阈值,则创造叶结点;若达到了阈值,则以信息增益最大的特征为非叶结点,按特征取值将样本分组,并将该特征从特征集合里剔除,剩下的特征集合作为各新分组的对应特征集合。然后每组递归执行2、3步。

    二、C4.5算法

    与ID3几乎完全一样,唯一的区别是把信息增益换成了信息增益比,原因是信息增益的计算方法有利于取值较多的特征。信息增益比用特征本身的经验熵去除它所带来的信息增益,矫正了上述问题。

    三、CART算法

    CART全称Classification And Regression Tree,既可用于分类问题,也可用于回归问题。

    CART最大的特点是,它构建的是二叉树。以分类树为例,其生成算法如下:

    1.对结点上的特征集上的每个特征A及其每个取值a,根据样本对于A=a的测试结果为“true"或"false"将样本分为两组,并计算其基尼指数。

    2.依基尼指数最小的特征相应的切分点,从现结点生成两个子节点,将现结点上的样本分配到子节点内。

    递归执行1、2直到满足停止条件。停止条件包括:样本个数小于阈值、样本集基尼指数小于阈值(基本属于同一类)、没有更多特征可选等。

  • 相关阅读:
    程序人生系列之新闻发布系统 1217
    $("expr","expr")
    jQuery 插件开发by:ioryioryzhan
    jQuery插件开发全解析 by gaojiewyh
    前端水好深
    网页设计师一定要知道的网站资源
    jQuery end()方法 by keneks
    前端书籍 by 小精灵
    emacs命令速查 摘
    jquery要怎么写才能速度最快? by 大白
  • 原文地址:https://www.cnblogs.com/leegent/p/5344367.html
Copyright © 2011-2022 走看看