一种基本的分类与回归的方法
定义在特征空间与类空间上的条件概率分布
训练时,利用训练数据,根据损失函数最小化的原则建立决策树模型
节点分为两种,内部节点和叶节点:内部节点表示一个特征,叶节点表示一个类
决策树算法:特征选择—>决策树生成—>决策树剪枝
决策树的生成只考虑局部最优,决策树的剪枝考虑全局最优。
决策树常用的有三种:ID3、C4.5、CART
特征选择
特征选择在于选取对训练数据具有分类能力的特征。
特征选区的准则时信息增益或信息增益比。
熵与条件熵:
什么是熵:是表示随机变量不确定性的度量。
令是一个取有限个值的离散随机变量,其概率分布如下
(一)
则随机变量的熵:
(二)
熵越大,随机变量的不确定性就越大,可得
即当时熵最大。
条件熵:
表示,数据集有两个特征,且称为、,都是离散随机变量,概率分布与式(一)相同,在决策树的建立过程中,需要根据特征切分数据集,再进行下一步迭代;在根据切分数据后,切分出来的每个数据集要根据下一个特征,再做切分,这时,在某个的切分结果,的熵成为条件熵,用表示,定义为给定条件下的条件概率分布的熵。
条件熵就是
上面提到的熵对的数学期望。(然而对数学期望的理解并不到位)
即为
其中, 指按照X切分后的每个子集的概率
信息增益:
不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。
特征对数据集的信息增益,定义为集合的经验熵与经验条件熵之差:
一般称熵与条件熵之差为互信息,等价于决策树中的信息增益。
由于以信息增益划分数据存在偏向于选择取值更多的特征,使用信息增益比可以对这一问题进行矫正。
信息增益比:
上式,特征对数据集的信息增益比为其信息增益与数据集关于特征的熵(与式二得计算方式相同)之比。
决策树生成
ID3算法
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归构建决策树。
终止条件:直到所有特征的信息增益均很小或没有特征可以选择为止。
若信息增益均很小怎么处理:不继续向下分支,直接按当前所得的数据的label中数量最多的类作为分类结果。但若数量最高的仍是多类呢?没查到相关资料,若有人了解希望能够交流下这个问题。
ID3相当于用极大似然法进行概率模型的选择。
生成过程:
ID3算法只有树的生成,生成的树容易产生过拟合。
C4.5算法
该算法对ID3进行了改进,使用信息增益比来选择特征。
决策树剪枝
决策树容易出现过拟合现象,原因在于在学习时过于考虑如何提高对训练数据的正确分类,从而构建出过于复杂度决策树。
解决办法:考虑决策树的复杂度,对已生成的决策树进行简化。
通过极小化决策树整体的损失函数或代价函数来实现。
设树的叶节点个数为,是树的叶节点,该叶节点有个样本点,为叶节点上的经验熵,为参数,则机器学习的损失函数可定义为
(损失函数的极小化等价于正则化的极大似然估计,所以利用损失函数最小原则进行剪枝就是用正则化的极大似然函数进行模型选择)
其中经验熵为
损失函数中,右端第一项记作
则
表示模型对训练数据的预测误差,即模型与训练数据的拟合程度
|T|表示模型的复杂程度
,控制两者之间的影响
较大的促使选择较简单的模型,较小的促使选择较复杂的模型,意味着只考虑模型与数据的拟合程度,不考虑模型的复杂度。
剪枝就是当确定时,选择损失函数最小的模型,即损失函数最小的子树。当确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度越高,反之同理。
设一组叶节点回缩到其父节点前后的整体树分别为与,对应的损失函数分别为与,如果
则进行剪枝,将其父节点变为新的叶节点。
重复上一步骤,直至得到损失函数最小的子树。
CART算法
CART生成
对回归树用平方误差最小化准则,分类树用基尼指数最小化准则。
该算法的假设:树的结构是二叉树。
回归树生成
设与为输入和输出变量,并且是连续变量 ,给定数据集
一个回归树对应着输入空间(即特征空间)的一个划分以及再划分但愿上的输出值。假设将输入空间划分为个单元,并且每个单元上有一个固定的输出值,于是回归模型可表示为
当输入空间的划分确定时,可以用平方误差
来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。
易得,单元上的的最优值是上所有的输入实例对应的输出的均值,即
重点是怎样对输入空间进行划分
选择第个变量和它的取值作为切分变量和切分点,定义两个区域:
和
然后寻找最优切分变量和最优切分点,求解:
对于固定输入变量可以找到最有且分点.
和
遍历所有输入变量,找到最优的切分变量,将输入控件划分为两个区域,接着对每个区域重复划分上述过程,知道满足停止条件。这样的回归树通常称为最小二乘回归树。
为什么要用均方差mse来作为分裂的依据呢?
只要是能衡量预测值和真实值/目标值之间的差距的数学公式,都可以用,例如信息增益、信息增益比、基尼系数等等。但是均方差有更好的好处:一阶导数和二阶导数可求并好求。
回归树分裂终止条件:没有可用的特征
分类树生成
分类树用基尼系数选择最优特征,同时决定该特征的最优二值切分点。
分类问题中,假设有个类,样本点属于第类的概率为,则概率分布的基尼指数定义为
对于二分类问题,若样本点属于第1个类的概率是,则概率分布的基尼指数为
对于给定的样本集合,其基尼指数为
这里是中属于第类的样本子集,是类的个数。
如果样本集合根据特征是否取某一可能指被分割成和两部分,即
则在特征的条件下,集合的基尼指数定义为
基尼指数表示集合的不确定性,基尼指数表示经过分割后集合的不确定性。基尼指数越大,样本集合的不确定性就越大(与熵类似)。
CART生成算法
- 在所有的可能的特征以及他们所有的可能的切分点中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。
- 依据最有特征与最优切分点,从现结点生成两个子节点,将训练数据一句特征分配到两个子节点中去。
- 对子节点递归调1、2两步,直至满足停止条件。
- 最终生成CART决策树。
停止条件;
- 节点中的样本个数小于预定阈值
- 样本集的基尼指数小于预定阈值(即样本基本属于同一类)
- 没有更多特征
CART剪枝
CART剪枝算法从“完全生长”的决策树地段减去一些子树,是模型变得简单。,从而对未知数据有更准确的预测。
剪枝算法分两步:首先从生成算法的产生的决策树低端开始不断剪枝,直到的根结点,形成一个子树序列,然后通过交叉验证方法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
具体地:
从整体树开始剪枝,对的任意内部结点,以为单节点树的损失函数是
以为根节点的子树的损失函数是
当及充分小时,有不等式
当增大时,在某一有
当再增大时,只要
与有相同的损失函数,而的结点少,因此比更可取,对进行剪枝。
为此,对中每一内部结点,计算
它表示剪枝后整体损失函数减少的程度。在中减去最小的,将得到的子树作为,同时将最小的设为,为区间的最优子树。
如此剪枝下去直至得到根节点。在这一过程中不断增加的值,产生新的区间。
然后,在剪枝得到的子树序列中通过交叉验证选区最优子树
具体方法:用独立的验证数据集,测试子树序列中各棵子树的平方误差或基尼系数。
平方误差或基尼系数最小的决策树被认为是最优的决策树。
CART剪枝算法步骤总结:
- 优点
- 决策树算法中学习简单的决策规则,建立决策树模型的过程非常容易理解,决策树模型可以可视化,非常直观。
- 速度快,准确性高
- 对数据要求相对低:
- 预处理往往更简单,比如无需去掉空白值、无需归一化等;
- 能同时处理数据型和常规型属性(比如样本可以是:男,30岁,医生,结婚。这包含了数据、常规型属性);
- 对缺失值不敏感(可赋予平均值、中位数、众数等),可以处理不相关特征数据;
- 对异常值鲁棒。
- 应用范围广,可用于分类和回归,而且非常容易做多类别的分类。
- 可以做特征选择、特征组合
- 缺点
- 很容易在训练数据中生成复杂的树结构,造成过拟合。剪枝可以缓解过拟合的负作用,常用方法是限制树的高度、叶子结点中的最少样本数量。
- 难以预测连续性的字段,即学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的,这种算法不能保证建立全局最优的决策树。
- 回归预测输出值缺少平滑性,只会是有限的几种数值。
- 不适合处理高维稀疏数据,不适合处理特征关联性较强的数据。