统计学习方法(机器学习)——5、决策树

决策树


1、决策树模型与学习

决策树模型

        分类决策树模型是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点。内部节点表示一个特征或者属性,叶结点表示一个类。
        用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果将实例分配到其子节点;每一个子节点对应着该特征的一个取值。如此递归分配,直到到达叶结点,最后将实例分到叶结点所在的类中。下图是一个决策树的示意图,圆和方框分别表示内部结点和叶结点。
在这里插入图片描述

决策树模型与if-then规则

        将决策树看成一个 i f − t h e n if-then ifthen规则的集合:由决策树的根节点到叶结点的每一条路径构建一条规则,而叶结点的类对应着规则的结论。决策树的路径或其对应的 i f − t h e n if-then ifthen规则集合有一个重要的性质:互斥且完备,即每一个实例都被一条路径或一条 i f − t h e n if-then ifthen规则所覆盖,且只被这一条覆盖。

决策树模型与条件概率分布

        决策树还表示给定特征条件下类的条件概率分布。这一条件概率分布定义在特征空间的一个划分上,将特征空间划分为互不相交的单元或区域,每个单元定义一个类的概率分布,这样就构成了一个条件概率分布。如下图所示,为两个特征时的特征空间的划分:
在这里插入图片描述

决策树学习

        假定给定训练数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } D=\{(x_1, y_1), (x_2, y_2), ..., (x_N,y_N)\} D={ (x1,y1),(x2,y2),...,(xN,yN)},其中 x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) T x_i=(x_i^{(1)}, x_i^{(2)},..., x_i^{(n)})^T xi=(xi(1),xi(2),...,xi(n))T为输入特征向量, n n n为特征个数, y i ∈ { 1 , 2 , . . . , K } y_i\in\{1, 2, ..., K\} yi{ 1,2,...,K}为类标记, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N为样本容量。学习的目标是根据给定的训练集构建一个决策树模型,使其能够对实例进行正确分类。
         决策树学习本质上是从训练集中归纳出一组分类规则。与训练集不相矛盾的决策树可能有多个,也可能一个也没有,我们需要找到一个与训练集矛盾最小的决策树,同时具有良好的泛化能力。
        决策树用损失函数表示这一目标,损失函数通常是正则化的极大似然函数。从所有可能的决策树中选取最优决策树是NP完全问题, 现实中决策树的学习算法通常采用启发式的方法,近似求解。
        决策树学习的算法通常是一个递归选择最优特征,并根据该特征对训练集进行分割,使得对各个子数据集也有一个最好分类的过程:

  • 构建根节点,将所有训练数据都放在根节点
  • 选择一个最优特征,按照这一特征将训练集分割成自己,使得各个子集达到当前条件下最好的分类
    – 如果这些子集已经能够被基本分类正确,则构建叶结点,并将这些子集分到对应的叶结点中;;
    – 如果还有子集不能被基本分类正确,就对这些子集选择新的最优特征,继续分割。

如此递归下去,直到所有训练数据子集都被基本正确分类,或没有合适的特征为止,最后每个子集都被分到叶结点上。
        以上方法可能发生过拟合线性,我们需要对已生成的决策树进行自下而上的剪枝,去掉过于细分的节点,使其回退到父节点甚至更高的结点,然后将父节点改为新的叶结点
        如果特征数量很多,在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。
        决策树学习算法包含特征选择、决策树的生成与决策树剪枝过程。决策树的生成对应于模型的局部选择,剪枝对应于模型的全局选择。


2、特征选择——信息增益

熵的概念

        特征选择在于选取对训练数据具有分类能力的特征,即决定用哪个特征来划分特征空间,这样可以提高决策树的学习效率。
        关于信息增益,先给出熵与条件熵的概念。
        熵是表示随机变量不确定性的度量。设 X X X是一个取有限个的离散随机变量,其概率分布为
P ( X = x i ) = p i ,      i = i , 2 , . . . , n P(X=x_i)=p_i,\;\;i=i,2,..., n P(X=xi)=pi,i=i,2,...,n
则随机变量 X X X的熵定义为:
H ( X ) = − ∑ i = 1 n p i l o g p i H(X)=-\sum\limits_{i=1}^np_ilogp_i H(X)=i=1npilogpi
式中的对数通常以2为底或以 e e e为底,此时熵的单位分别称为比特或纳特。由定义知,熵只依赖于 X X X的分布,与 X X X的取值无关,所以也可将 X X X的熵记作 H ( p ) H(p) H(p),即:
H ( p ) = − ∑ i = 1 n p i l o g p i H(p)=-\sum\limits_{i=1}^np_ilogp_i H(p)=i=1npilogpi
        熵越大,随机变量的不确定性越大


信息增益

        设有随机变量 ( X , Y ) (X,Y) (X,Y),其联合概率分布为
P ( X = x i , Y = y j ) = p i j ,          i = 1 , 2 , . . . , n ;      j = 1 , 2 , . . . , m P(X=x_i,Y=y_j)=p_{ij},\;\;\;\;i=1, 2, ..., n;\;\;j=1, 2, ..., m P(X=xi,Y=yj)=pij,i=1,2,...,n;j=1,2,...,m
        条件熵 H ( Y ∣ X ) H(Y|X) H(YX)表示在已知随机变量 X X X的条件下随机变量 Y Y Y的不确定性。随机变量 X X X给定的条件下随机变量 Y Y Y的条件熵 H ( Y ∣ X ) H(Y|X) H(YX)定义为 X X X给定条件下 Y Y Y的条件概率分布的熵对 X X X的数学期望:
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i) H(YX)=i=1npiH(YX=xi)
这里, p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i), i=1, 2, ..., n pi=P(X=xi)i=1,2,...,n
        当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵与经验条件熵。信息增益表示得知特征 X X X的信息而使得类 Y Y Y的信息的不确定性减少的程度。

定义 信息增益
        特征 A A A对训练数据集 D D D的信息增益 g ( D , A ) g(D,A) g(D,A)定义为集合 D D D的经验熵 H ( D ) H(D) H(D)与特征 A A A给定条件下 D D D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)之差,即:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)
        一般地,熵与条件熵之差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。根据信息增益准则的特征选择方法是:对训练集 D D D,计算其每个特征的信息增益,选择信息增益最大的特征。

  • 设训练数据集为 D D D, ∣ D ∣ |D| D表示其样本容量。
  • 设有 K K K个类 C k , k = 1 , 2 , . . . , K C_k, k=1, 2, ..., K Ck,k=1,2,...,K ∣ C k ∣ |C_k| Ck为属于类 C k C_k Ck的样本个数, ∑ k = 1 K ∣ C k ∣ = ∣ D ∣ \sum\limits_{k=1}^K|C_k|=|D| k=1KCk=D
  • 设特征 A A A n n n个不同取值 { a 1 , a 2 , . . , a n } \{a_1, a_2, .., a_n\} { a1,a2,..,an},根据特征 A A A的取值将 D D D划分为n个子集 { D 1 , D 2 , . . , D n } \{D_1, D_2, .., D_n\} { D1,D2,..,Dn} ∣ D i ∣ |D_i| Di D i D_i Di的样本个数, ∑ i = 1 n ∣ D i ∣ = ∣ D ∣ \sum\limits_{i=1}^n|D_i|=|D| i=1nDi=D
  • 记子集 D i D_i Di中属于类 C k C_k Ck的样本集合为 D i k D_{ik} Dik,即 D i k = D i ∩ C k D_{ik}=D_i\cap C_k Dik=DiCk ∣ D i k ∣ |D_{ik}| Dik D i k D_{ik} Dik的样本个数。

算法:信息增益算法

输入:训练数据集 D D D和特征 A A A
输出:特征 A A A对训练数据集 D D D的信息增益 g ( D , A ) g(D,A) g(D,A)

(1)计算数据集 D D D的经验熵 H ( D ) H(D) H(D)
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum\limits_{k=1}^K\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} H(D)=k=1KDCklog2DCk
(2)计算特征 A A A对训练数据集 D D D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值