机器学习系列之决策树
2014-10-06 12:19
134 查看
决策树是一种基本的分类与回归方法,其可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,其主要优点是具有可读性、分类速度快。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的修剪。我们重点说一下特征选择。
一、特征选择
在决策树中,叶子节点代表已经确定的类别,非叶节点表示特征,那么如何利用这些特征来构建一棵最优的决策树呢?实际上从所有可能的决策树中选取最优决策树是一个NP完全问题,因此在实际应用中我们通常采用启发式的方法来构建决策树,这样得到的决策树是次最优的。
在选择特征构建决策树上,我们通常采用信息增益或信息增益比作为指标来决定选择哪个特征,其对应的决策树算法分别称为ID3和C4.5,至于为什么叫这么奇葩的名字,我也不太清楚了。
提到信息就不得不提熵,熵是衡量信息量的一个指标,那么信息增益其实就是指的熵的变化量。对于当前样本集合D以及特征A,特征A对集合D的信息增益g(D,A)为集合D的经验熵与选择A作为分支特征下的集合D的条件经验熵H(D|A)之差,即
假设有K个类Ck,特征A有n个不同的取值
,根据特征A的取值将D划分为n个子集D1,D2,...,Dn,子集Di中属于类Ck的样本集合为Dik,则
使用信息增益作为选择划分数据特征的标准存在偏向于选择取值较多的特征的问题,而是用信息增益比可以对这一问题进行校正。信息增益比是指特征A对集合D的信息增益g(D,A)与集合D关于特征A取值的熵
之比,即
其中
为
需要注意,对于熵而言,log一般默认都是取2为底的。
二、 决策树的生成
决策树的生成其实就是按照信息增益或信息增益比的标准递归的选择最优特征,并根据该特征对训练数据集进行分割,使得对各个子数据集都有一个最好的分类的过程。具体的算法请参考《统计学习方法》,这里不再赘述。
三、 决策树的剪枝
由于上面的生成算法只考虑了对样本的拟合程度,因此很容易发生过拟合的现象,为了解决过拟合问题,我们需要对生成的决策树进行剪枝,即从中裁剪掉一些子树或叶节点,并将这些字数或叶节点的父节点作为新的叶节点,从而简化分类树模型。
决策树的剪枝往往通过极小化决策树整体的损失函数来实现。设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有Nt个样本点,其中属于第k类的样本点有
个,
为叶节点上的经验熵,
为参数,则决策树的损失函数可以定义为
其中经验熵为
参考资料
统计学习方法, 李航 著
一、特征选择
在决策树中,叶子节点代表已经确定的类别,非叶节点表示特征,那么如何利用这些特征来构建一棵最优的决策树呢?实际上从所有可能的决策树中选取最优决策树是一个NP完全问题,因此在实际应用中我们通常采用启发式的方法来构建决策树,这样得到的决策树是次最优的。
在选择特征构建决策树上,我们通常采用信息增益或信息增益比作为指标来决定选择哪个特征,其对应的决策树算法分别称为ID3和C4.5,至于为什么叫这么奇葩的名字,我也不太清楚了。
提到信息就不得不提熵,熵是衡量信息量的一个指标,那么信息增益其实就是指的熵的变化量。对于当前样本集合D以及特征A,特征A对集合D的信息增益g(D,A)为集合D的经验熵与选择A作为分支特征下的集合D的条件经验熵H(D|A)之差,即
假设有K个类Ck,特征A有n个不同的取值
,根据特征A的取值将D划分为n个子集D1,D2,...,Dn,子集Di中属于类Ck的样本集合为Dik,则
使用信息增益作为选择划分数据特征的标准存在偏向于选择取值较多的特征的问题,而是用信息增益比可以对这一问题进行校正。信息增益比是指特征A对集合D的信息增益g(D,A)与集合D关于特征A取值的熵
之比,即
其中
为
需要注意,对于熵而言,log一般默认都是取2为底的。
二、 决策树的生成
决策树的生成其实就是按照信息增益或信息增益比的标准递归的选择最优特征,并根据该特征对训练数据集进行分割,使得对各个子数据集都有一个最好的分类的过程。具体的算法请参考《统计学习方法》,这里不再赘述。
三、 决策树的剪枝
由于上面的生成算法只考虑了对样本的拟合程度,因此很容易发生过拟合的现象,为了解决过拟合问题,我们需要对生成的决策树进行剪枝,即从中裁剪掉一些子树或叶节点,并将这些字数或叶节点的父节点作为新的叶节点,从而简化分类树模型。
决策树的剪枝往往通过极小化决策树整体的损失函数来实现。设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有Nt个样本点,其中属于第k类的样本点有
个,
为叶节点上的经验熵,
为参数,则决策树的损失函数可以定义为
其中经验熵为
参考资料
统计学习方法, 李航 著
相关文章推荐
- 机器学习系列:(五)决策树——非线性回归与分类
- Spark2.0机器学习系列之5:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析
- 机器学习系列05——决策树(Decision tree)
- 机器学习系列:(五)决策树——非线性回归与分类
- Spark2.0机器学习系列之3:决策树及Spark 2.0-MLlib、Scikit代码分析
- 【机器学习系列之六】决策树中的特征选择及树的剪枝()
- 机器学习系列----决策树
- 决策树与随机森立案(python code)---------------------------机器学习系列(二)
- python机器学习案例系列教程——决策树(ID3、C4.5、CART)
- 机器学习系列-决策树
- 机器学习必看系列--决策树1
- 决策树与随机森林算法(理论)-----------------------机器学习系列(二))
- Spark2.0机器学习系列之3:决策树
- Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析
- 周志华《机器学习》课后习题解答系列(五):Ch4 - 决策树
- Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解
- 机器学习系列:(十)从感知器到人工神经网络
- 回归算法(python code)----------机器学习系列(一)
- 机器学习系列博客
- 机器学习(一):决策树算法及使用python构造一个决策树