决策树学习是一种逼近离散值目标函数的方法,在这样的方法中学习到的函数被表示为一棵决策树。
表示法:把实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。树上的每个节点指定了对实例的某个属性(attribute)的測试,而且该节点的每个后缀分支相应于该属性的一个可能值。分类实例的方法是从这棵树的根节点開始,測试这个节点指定的属性。然后依照给定实例的该属性值相应的树枝向下移动。
然后这个过程在以新节点为根的子树上反复。
上图是一棵学习到的决策树。依据天气情况分类“星期六上午是否适合打网球”。
决策树的适用问题:
- 实例是由“属性-值”对表示的
- 目标函数具有离散的输出值
- 可能须要析取的描写叙述
- 训练数据能够包括错误
- 训练数据能够包括缺少属性值的实例
核心问题是将例子分类到各可能的离散值相应的类别(category)中,因此常被称为分类问题(classification problem)。
主要的决策树学习算法:
ID3算法:採用自顶向下的贪婪搜索遍历可能的决策树空间。
训练过程:通过自顶向下构造决策树来进行学习,构造过程是从“哪一个属性将在树的根节点被測试?”这个问题開始。
使用统计測试来确定每个实例属性单独分类训练例子的能力,分类最好的属性将被选作树的根节点,然后为根节点属性的每个值产生一个分支,反复整个过程。
算法概要:
-
A←Attributes中分类Examples能力最好的属性
-
Root的决策属性←A
-
对于A的每一个可能值vi
-
在Root下加一个新的分支相应測试A= vi
-
将训练样本排序后,依次加入到叶子节点上。
-
假设全部的训练样本都被完美的分类。那么结束
-
否则迭代运行上面的循环
这就须要用到“奥坎姆剃刀”原则:优先选择拟合数据的最简单如果。
决策树遵照这个原则:较短的树比較长的优先。
那么怎么确定一个属性可以较好的划分训练数据呢?这就用到了信息论(information theory)。
信息就是不确定性的降低。并获取新的知识。
信息是确定性的添加—-逆Shannon信息定义。
一个事件的信息量与它出现的概率最为相关。
假设一个确定发生的事件发生了。那么确定性没有不论什么变化,所以得到的信息为0。而假设小概率的事件发生了,那么将得到比可能发生的事情很多其它的信息量。
熵确定了要编码的集合S中随意成员的分类所需的最小二进制位数。
那么怎么确定一个属性可以较好的划分训练数据呢?这就用到了信息论(information theory)。
信息就是不确定性的降低。并获取新的知识。
信息是确定性的添加—-逆Shannon信息定义。
一个事件的信息量与它出现的概率最为相关。
假设一个确定发生的事件发生了。那么确定性没有不论什么变化,所以得到的信息为0。而假设小概率的事件发生了,那么将得到比可能发生的事情很多其它的信息量。
所以信息量与事件发生的概率成反比。
熵确定了要编码的集合S中随意成员的分类所需的最小二进制位数。
用熵度量例子的均一性:给定包括关于某个目标概念的正反例子集S,难么S相对这个布尔型分类的熵为:
Entropy(S) = -p+ log2p+ - p- log2p-
当中。p+是S中正例的比例,p-是S中反例的比例。
属性分类训练数据的能力的度量标准:信息增益(information gain),一个属性的信息增益是因为使用这个属性分隔例子而导致期望的熵减少。即,下式:
Values(A)是属性A全部可能值的集合。Sv是属性A的值为v的子集。
信息增益是ID3算法增长树的每一步中选取最佳拟合属性的度量标准。
决策树学习的常见问题:
- 确定决策树增长的长度
- 处理连续值的属性
- 选择一个适当的属性筛选度量标准
- 处理属性值不完整的训练数据
- 处理不同代价的属性
- 提高计算效率
避免过拟合
过拟合:给定一个如果空间H,一个如果h属于H,如果存在其它的如果h'属于H,使得在训练例子上h的错误率比h'小,但在整个实际分布上h'的错误率比h'小,那么就说H过度拟合(overfit)训练数据。
解决过拟合:
- 及早停止树增长,在ID3算法完美分类训练数据之前就停止树的增长
- 后修剪法(post-prune),即同意树过度拟合数据。然后对着个树进行后修剪。