【机器学习算法基础+实战系列】决策树算法

决策树是一种基本的分类和回归模型,也就是说既可以用于分类也可以用于回归。这里以分类为例。
决策树的学习算法包含三个步骤:特征选择,决策树的生成,决策树的剪枝

特征选择

特征选择在于选取对训练数据具有较好分类能力的特征,如果选取的特征进行分类的结果与随机分类的结果没有很大的差别,那么就不能说这个特征具有很好的分类能力。从经验上来讲,扔掉这些特征,对决策树的学习在精度上不会有影响。
通常特征选择的准则我们采取的是信息增益或者信息增益比。

熵:

首先我们给出熵的定义:熵表示的随机变量的不确定性。
(X) 是一个取有限个值的离散随机变量,其概率分布为:$$P(X=x_{i})=p_{i}, i = 1,2,3,...,n$$
则随机变量的熵定义为: $$ H(X) = -sum_{i=1}^{n}p_{i}logp_{i}$$
通常条件下,式子中的对数我们以2或者e为底数。若(p_{i} = 0, 则定义0log0=0)。 由定义公式我们可以知道熵只依赖于X的分布,而与X的取值无关。所以我们也可以将这个式子改写成:$$ H(p) = -sum_{i=1}^{n}p_{i}logp_{i}$$
熵越大,随机变量的不确定性就越大,从定义我们可以知道:(0leq H(p) leq logn)

条件熵

条件熵 (H(Y|X)) 表示在已知随机变量X的条件下随机变量Y的不确定性。公式如下:

[H(Y|X) = sum_{i=1}^{n}p_{i}H(Y|X=x_{i})$$. 在这里$p_{i}=P(X=x_{i}), i = 1,2,...,n.$ ### 信息增益 信息增益表示的是在得知特征X的信息之后而使得Y的信息不确定性减少的程度。 正规定义:特征A对于训练数据集D的信息增益$g(D,A)$,定义为集合D的经验熵$H(D)$与特征A给定条件下D的经验条件熵$H(D|A)$之差。也就是 $$g(D,A) =H(D)-H(D|A)]

一般条件下,熵H(Y) 与条件熵(H(Y|X))之差称之为互信息。

显然的,对于数据集D来说,信息增益是依赖于特征的,不同的特征往往会具有不同的信息增益。从定义上来看,我们可以知道信息增益越大,
减少的不确定性越大,那么这个特征的分类效果越好。
所以如果我们选择信息增益准则来作为特征选择方式,我们需要做的就是,对于训练数据,在每一步,计算每个特征的信息增益,并且比较他们的大小,
最终选择信息增益最大的那个特征。

信息增益比(或者信息增益率)

正如上面所说的,我们可以使用信息增益准则来作为我们的特征选择方式,但是它有一个缺点,就是一个特征,它的类别数目取得越多,那么他的信息增益可能就会越大。
换句话讲,信息增益准则会对类别数目较多的特征具有一定的偏袒性。为了解决这个问题,我们采取的方式是使用信息增益比。

[g_{R}(D,A) = frac{g(D,A)}{H(D)} ]

基尼系数

基尼系数代表了模型的纯度,基尼系数越低,纯度越高,特征的分类效果越好。

决策树的生成

ID3算法

ID3算法的核心是在决策树的各个节点上应用信息增益准则选择特征,递归的构建决策树。
具体方法是从根节点开始,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点的分类特征,有该特征的不同取值建立子节点,再对子节点
递归的调用以上的方法,构建决策树,直到所有的特征的信息增益都足够的小或者没有特征可以选择为止,最后得到一个决策树。

ID3算法的不足:
(a) ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途.
(b) ID3采用信息增益大的特征优先建立决策树的节点.正如我们上面所说的,采取信息增益会对类别数目较多的特征具有一定的偏袒性。
(c) 容易过拟合
(d) ID3算法对于缺失值的情况没有做考虑

C4.5算法

C4.5算法 针对ID3的四个缺点进行了改进。
对于第一个问题,不能处理连续特征, C4.5的思路是将连续的特征离散化。比如m个样本的连续特征A有m个,从小到大排列为(a_{1},a_{2},...a_{m}),则C4.5取相邻两样本值的平均数,一共取得(m-1)个划分点.其中第i个划分点(T_{i})表示为:T_{i} = frac{a_{i}+a_{i+1}}{2}.对于这(m-1)个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。
比如取到的增益最大的点为(a_{t}),则小于(a_{t})的值为类别1,大于(a_{t})的值为类别2,这样我们就做到了连续特征的离散化。要注意的是,与离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。

对于信息增益偏袒性问题,我们采取的是信息增益比。

对于缺失值处理的问题,主要需要解决的是两个问题,一是在样本某些特征缺失的情况下选择划分的属性,二是选定了划分属性,对于在该属性上缺失特征的样本的处理。
对于第一个子问题,对于某一个有缺失特征值的特征A。C4.5的思路是将数据分成两部分,对每个样本设置一个权重(初始可以都为1),然后划分数据,一部分是有特征值A的数据D1,另一部分是没有特征A的数据D2. 然后对于没有缺失特征A的数据集D1来和对应的A特征的各个特征值一起计算加权重后的信息增益比,最后乘上一个系数,这个系数是无特征A缺失的样本加权后所占加权总样本的比例。
对于第二个子问题,可以将缺失特征的样本同时划分入所有的子节点,不过将该样本的权重按各个子节点样本的数量比例来分配。比如缺失特征A的样本a之前权重为1,特征A有3个特征值A1,A2,A3。 3个特征值对应的无缺失A特征的样本个数为2,3,4.则a同时划分入A1,A2,A3。对应权重调节为2/9,3/9, 4/9。
对于第4个问题,C4.5引入了正则化系数进行初步的剪枝。

原文地址:https://www.cnblogs.com/lzida9223/p/9256645.html