Python机器学习之决策树(理论说明)

机器学习第一章:决策树、随机森林、GDBT和XGBoost
主要内容:
决策树Decision Tree
* 介绍
* 熵Entropy:衡量划分子树的标准 H(S) = -P1log(P1)-P2log(P2) (以2为底)
* 信息增益 Information Gain
* 常见算法
* 过度拟合 Overfitting
* 剪枝Prune
* 增益率GainRatio
* 更多的DT应用场景
* 连续函数、多分类、回归
决策树的优化Ensemble
* bagging
* Random Forest
* Boosting
* GBDT
* XGBoost

1、决策树
* 决策树简介
决策树学习时一直逼近离散值目标函数的方法,这种方法将从一组训练数据中学习到的函数表示为一课树。决策树叶子为类别名,其他节点由实体的特征组成。
建立决策树的过程,即树的生长过程就是不断的把训练数据集进行划分的过程,每次划分对于一个属性,也对应一个内部节点,划分所选的数学应使划分后的分组“差异最大”。决策树生成算法的不同主要体现在对“差异”的衡量方法上。

* 决策树的构造
    优点;计算复杂度不高,输出结果易于理解,对于中间值的缺失不敏感,可以处理不相关特征数据
    缺点;可能会删除过度匹配的问题
    使用数据类型;数值型或者标称型数据
        标称型数据:标称型目标变量的结果值在有限目标中取值,如真与假(标称型变量主要用于分类)
        数值型数据:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001(数值型目标变量主要用于回归分析)

    伪代码:
        检测数据集中的每个子项是都属于同一类:
        if so return 类标签;
        Else
            寻找划分数据集的最好特征
            划分数据集
            创建分支点
                for每个划分的子集
                    调用函数createBranch并增加返回结果到分支节点中
            return 分支节点

    决策树的一般流程:
        1)收集数据:可以用任何方法
        2)准备数据:树构造方法只适用于标称型数据,因此数值型数据必须离散化
        3)分析数据:可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预期
        4)训练算法:构造树的数据结构
        5)测试算法:使用经验树计算错误概率
        6)使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好的理解数据的内在含义


* 信息熵的相关概念
    ** 划分数据集的最大原则是:将无序的数据变得更加有序
    ** 信息增益:在划分数据集之前之后信息发生的变化成为信息增益,获得信息增益最高的特征就是最好的选择
    ** 熵(香农熵):信息的度量方式
        待分类的事物可能划分在多个分类当中,则Xi的信息定义为L(xi) = -log(P(xi)),其中P(xi)是选择该分类的概率
    ** 信息期望值(熵):
        H(Y) = -Sum(P(yi)log(P(yi))) ; n = 1,2,3,...n
        n是分类的数目
    ** 条件信息熵:
        H(Y|X) = -Sum(P(X=xi)*H(Y|X=xi))  ;n = 1,2,3,...n
               = -Sum(P(X=xi)*P(Y|X=xi)*log(Y|X =xi))
               = -Sum(P(Y,xi)*log(Y|X=xi))
    ** 信息增益:
        IG(X) = H(Y)-H(Y|X)
    ** 信息增益率:
        gr = (H(Y)-H(Y|X))/H(X)
            注意;在决策树算法中,ID3使用信息增益,C4.5使用信息增益率

    ** Gini系数:
        Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。

        Gini(D) = 1-Sum((Pi)^2)  ; i = 1,2,3,...n
        其中,D表示数据集全体样本,Pi表示每种类别出现的概率,取个极端情况,如果数据集找那个所有的样本都为同一类,那么P0=1,Gini(D)=0,显然此时数据的不纯度最低。

        与信息增益类似,我们可以计算如下表达式:
            ΔGini(X) = Gini(D)-GiniX(D)
        即加入特征X以后,数据不纯度减小的程度。很明显,在做特征选择的时候,我们可以选择ΔGini(X)最大的那个。
    ** 信息增益做特征选择的优缺点:
        优点:
            1)信息增益考虑了特征出现和不出现的两种情况,比较全面,一般而言效果不错
            2)使用了所有样例的统计属性,减小对噪声的敏感程度
            3)容易理解,计算简单
        缺点:
            1)信息增益考察的是特征对整个系统的贡献,没有具体到类别上,所以一般只能用来做全局的特征选择,而设法针对单个类别做特征选择
            2)只能处理连续型的属性值,没法处理连续值的特征
            3)算法天生偏向选择分支多的属性,容易导致overfitting

* ID3算法
    1)对当前的样本集合,计算所有属性的信息增益
    2)选择信息增益最大的属性作为测试属性
        把测试属性取值相同的样本划为同一个样本子集
    3)若样本集的类别属性只包含单个属性,则分支为叶子节点,
        判断其属性只并标上相应的符号,然后调用,都在对子样本集递归调用本算法,直到所有数据被分类完成
* C4.5算法
    是机器学习的另一种分类决策树算法,它是基于ID3算法改进后的一种重要算法,具有以下改进点:
    1)用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,也就是熵的变化值,而C4.5使用的是信息增益率
    2)决策树构造过程中进行剪枝,因为某些具有很少元素的节点可能会使构造的决策树出现过拟合(overfitting),如果不考虑节点可能会更好
    3)对非离散(连续值)数据也能处理
    4)能够对不完整数据进行处理
* CART算法
    CART决策树是一个十分有效的非参数分类和回归算法,通过构建树,修剪树,评估树来构建决策树




* 过度拟合(overfitting)
    一棵完全决策树能非常准确的反应数据的特征,但是因失去了一般代表性而无法用于对新数据的分类或者预测,这种现象一般称为“过拟合”。
    定义:给定一个假设H,如果在假设空间上存在另一个假设H',使得在训练集上H的错误率比H'小,而在测试集H上的错误率却比H'大,那么称H过度拟合训练数据。
    原因:噪声数据导致过度拟合,缺乏代表性样本导致过分拟合
    解决方法:
        ** 预剪枝法:通过提前停止分支的生长过程来实现
        ** 后剪枝法:从一个“充分生长”树中,按照自底向上的方式修剪掉多余的分支。
* 决策树的究极进化Ensemble
    Bagging
    Random Forest
    Boosting
    AdaBoost
    XGBoost
* 随机森林Random Forest
    步骤:
        ** 从原始训练数据集中,应用bootstrap(随机采样)方法有效的随机抽取K个新的自助样本集,并由此构建K课分类回归树,每次被抽到的样本组成了K个袋外数据
        ** 设有n个特征,则每一棵树的每个节点处随机抽取m个特征,通过计算每个特征蕴含的信息量,特征中选择一个最具有分类能力的特征进行节点分裂
        ** 每棵树最大限度的生长,不做任何裁剪
        ** 将生产的多课树组成随机森林,用随机森林对先的数据进行分类,分类结果按树分类器投票决定
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值