机器学习理论决策树算法第一卷

决策树算法内容来至于《统计学习与方法》李航,《机器学习》周志华,以及《机器学习实战》Peter HarringTon,相互学习,不足之处请你们多多指教python

本卷的大纲为算法

        1 决策树的概念机器学习

        2 特征选择,信息熵,条件熵ide

        3 决策树的生成函数

        4 决策树的剪枝 性能


1 决策树的概念

        决策树是一颗基于分类与回归的方法,本章主要讨论分类的决策树。决策树的模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。学习

         决策树的学习过程包括:特征选择决策树的生成,和决策树修剪测试

         决策树的优势:模型具备可读性,分类速度快,学习时,利用训练数据,根据损失函数最小化的原则创建决策树模型,预测时,对新的数据,利用决策树模型进行分类。spa

         决策树由结点和有向边组成,结点有两个类型:内部结点和叶节点,内部结点表示一个特征或者属性,叶结点表示一个类别。code

         决策树能够转换为if-then模型,内部结点的特征对应规则的条件,叶节点表示对应规则下的结论。

         决策树的损失函数一般是正则化的最大似然函数。决策树学习的策略是以损失函数为目标函数的最小化。

决策树构建的过程:

       (1)开始构建根结点,将全部训练数据都放在根结点上。

       (2)选择一个最优特征,按照这个特征将训练数据集分割成子集,使得各个子集有一个在当前条件下的最好分类。

       (3)若是这个子集已经基本上正确分类,那么构建叶节点。

       (4)若是还有子集不能被基本正确分类,那么就对这些子集选着新的最优特征,继续对子集进行分割。递归下去直到全部训练数据的子集被基本正确分类。最后每一个子集都被分到叶节点上。造成一

个决策树。

          决策树学习的过程包括特征选择,决策树的生成,以及决策树的剪枝,因为决策树表示一个条件几率分布,因此深浅不一样的决策树对应不一样复杂度的几率模型,决策树的生成对应模型的局部选择

决策树的剪枝对应模型的全局选择,决策树的生成只考虑局部最优,相对的,决策树的剪枝表示全局最优 


 2 特征选择,信息熵,条件熵

        特征选择在于选取对训练数据具备分类特征的特征,提升决策树的学习效率,特征选择准则基于信息增益信息增益比。

 2.1信息熵

        信息熵的概念:熵表示随机变量不肯定性的度量,熵越大,随机变量的不肯定性就越大。信息熵的定义以下:

        设X是有限个离散随机变量,其几率分布为:

 

        随机变量X的熵定义为: 

 

一般,若是5.1中的对数以2为底,则信息熵的单位为比特,以天然对数为底,则信息熵的单位为钠特(nat).

当随机变量只取二个值的时候,X的分布为

P(x=1) = p

P(x=0) = 1-p

H(x)=-plog2p-(1-p)log2(1-p)

此时熵的曲线为:

       对应的Python代码为:

#!/usr/bin/python
#-*-encoding:utf-8 -*-

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import  math

mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

def entropy(p):
    return -p*np.log2(p) - (1-p)*np.log2(1-p)

if __name__=="__main__":

    p = np.linspace(0,1,200)
    y = entropy(p)
    fig = plt.figure(facecolor='w')
    plt.title(u" 信息熵曲线")

    plt.plot(p,y,'g-',linewidth=2,label=u'信息熵曲线')
    plt.legend(loc='upper right')
    plt.grid(True)
    plt.show()

 2.2条件熵

设随机变量(x,y),其联合几率分布为

条件熵的H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不肯定性

当熵和条件熵有数据估计(特别是极大似然估计)获得时,所对应的熵为经验熵,对应的条件熵为经验条件熵

2.3 信息增益

信息增益表示得知特征X的信息而使得类Y的信息的不肯定性减小的程度

信息增益的定义以下:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即

通常的,熵H(Y)和条件熵(Y|X)之差称之为互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息

根据信息增益选取特征的方法是:对数据集(或者子集)D,计算其每一个特征的信息增益,并比较他们的大小,选择信息增益最大的特征。

2.4信息熵增益比:

信息熵增益做为划分训练数据集的特征,存在偏向与特征选取比较多的特征的问题,使用信息熵增益比能够对这个问题进行矫正,信息熵增益比的定义以下:

特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D关于特征A的值的熵HA(D)之比:

其中:


3决策树的生成

决策树主要有ID3生成算法C4.5生成算法,ID3算法的核心在于决策树各个节点上运用信息增益选择决策树C4.5选择信息熵增益比为准则选择决策树

3.1 ID3算法

ID3决策树算法的核心是在决策树的各个节点上运用信息熵增益做为选择特征,递归的构建决策树,具体算法流程是:

从根节点开始,对结点计算全部可能的特征的信息增益,选择信息增益最大的特征做为节点的特征,由该特征的不一样取值创建子节点,在对子节点递归的调用上面的方法,构建决策树,直到全部的特征

信息增益均很小或者没有特征能够选择为止,获得最后一个决策树。ID3至关于用极大似然法进行几率模型的估计

3.2 C4.5算法

C4.5算法决策树算法的核心是在决策树的各个节点上运用信息熵增益比做为选择特征,递归的构建决策树,具体算法流程是:

从根节点开始,对结点计算全部可能的特征的信息增益比,选择信息增益比最大的特征做为节点的特征,由该特征的不一样取值创建子节点,在对子节点递归的调用上面的方法,构建决策树,直到全部的

征的信息增益比均很小或者没有特征能够选择为止,获得最后一个决策树。


4决策树的剪枝

决策树生成的算法递归的产生决策树,直到不能继续下去为止,这样产生的决策树每每对训练数据的分类很准确,对未知的测试数据分类不许确,出现过拟合的状况,过拟合的缘由在于学习时候过多

考虑如何提升训练数据的正确分类,构造了过于复杂的决策树,解决和个问题是对决策树进行剪枝。

决策树剪枝的策略有预剪枝和后剪枝。主要考察剪枝先后验证集的精度。或者极小化决策树总体的损失函数。重点关注:后剪枝

4.1后剪枝

策略:极小化决策树总体的损失函数或者是代价函数来实现,等价于正则化极大似然估计。设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有NT个样本,其中k类的样本点有Ntk个k=1,2,3,4……k,决策树的损失函数为

C(T)表示模型对训练数据的预测偏差,即模型对训练数据的拟合程度,|T| 表示模型的复杂程度,参数α≥0 控制二者之间的影响,一般较大的α 促使选择简单的模型树,较小的α 促使选择复杂的模型树

α=0表示自是考虑模型和训练数据的拟合程度,不考虑模型的复杂度。

剪枝就是当α肯定时候,选择损失函数最小的模型,即损失函数最小的子树,当α肯定时子树越大,每每训练数据拟合越好,可是模型的复杂程度也越高,反之,子树越小,模型复杂度越低,损失数正好平衡两者的关系。

4.2 树的剪枝算法

输入:生成算法产生的整个树T,参数α

输出:修剪后的子树T

算法流程:

(1)计算每一个结点的经验熵

(2)递归向上的从树的叶节点进行回缩

(3)若是父节点的损失函数C(T)小于子节点的损失函数C(T),则父节点变回新的叶节点。

(4)返回2继续执行,直到不能继续为止,获得损失函数最小的子树T

优势:后剪枝决策树一般比预剪枝决策树保留更多的分支通常状况下后剪枝决策树的欠拟合的风险很小,泛化性能每每优于预剪枝的决策树可是后剪枝决策树须要在彻底生成决策树后进行,自底向上对树中每一个非叶节点进行考察,所以训练的时间开销要比未剪枝决策树和预剪枝决策树都要大得多

 


 相互学习,不足之处,请多多指教!