机器学习——决策树分析
决策树一种分类与回归的方法。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then原则的集合。决策树通常由特征选择,决策树生成、决策树修剪三步组成。决策树是一种树形结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一个熵值下降最快的树,到叶子结点处的熵值为零。此时每个叶子结点中的实例都属于同一类。决策树学习算法的优点是:1它可以自学习,在学习过程中,不需要使用者了解过多的背景知识,只需要对训练实例进行较好的标注,就能够进行学习。2.分类模型具有可读性,分类速度快。3能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
算法缺点:1决策树是基于规则的算法,在产生规则时利用的是局部贪婪的方法,而且每次仅采用一个属性进行分析构造决策树,因而产生大量的规则,数据集大,规则复杂,效率明显下降,而且无法保证全局最优。2.在决策数学习中,由于分类器过于复杂,会过于适应噪声,产生过拟合现象。3忽略了数据集属性之间的相关性。
数学基础:熵:
熵:是表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为:P(X)=p,则随机变量X的熵定义为:
熵越大随机变量的不确定性越大,若随机变量退化为定值,熵为0。
联合熵和条件熵:条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X)=H(X,Y)-H(Y)
![](https://img-blog.csdn.net/20160310110737034?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
信息增益:表示得知特征A的信息而使得类Y的信息的不确定性减少的程度。特征A对训练集D的信息增益g(D,A),定义为集合D的经验熵H(D)(当熵和条件熵中的概率由最大似然估计得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵)与特征A给定的条件下D的经验条件熵H(D|A)之差,
g(D,A)= H(D)-H(D|A)
决策树基础:
if-then规则:由决策树的根结点到叶节点的每一条路径构建一条规则:路径上内部结点的特征对应着规则的条件,而叶节点的类对应着规则的结论。决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备,这就是说每一个实例都被一条路径或者一条规则覆盖,而且只被一条路径或一条规则索覆盖。
决策树与条件概率分布:决策树还表示给定特征条件下的条件概率分布。这一条件概率分布定义在特征空间的一个划分上。将特征空间划分为互不相交的单元或者区域,并在每个单元定义一个类的概率分布就构成了一个条件概率分布。X为所表示特征的随机变量,Y为表示类的随机变量,那么这个条件概率分布表示为P(Y|X)。
决策树学习:本质上是从训练数据集中归纳出一组分类规则。决策树学习是由训练集估计条件概率模型,基于特征空间的划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据集有很好的拟合,而且对位置数据有很好的预测。决策树学习策略是以损失函数为目标函数的最小化。决策树学习算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着对决策树的构建。
决策树实现三部曲:
特征选择:特征选择的准则是信息增益或者信息增益比。特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树的学习效率。信息增益准则的特征选择方法是:对训练数据集D,计算每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
信息增益的算法:
输入:训练数据集D和特征A:
输出:特征A对训练数据集D的信息增益g(D,A)
(1)计算数据集D的经验熵H(D)
![](https://img-blog.csdn.net/20160310154725116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)计算特征A对数据集D的经验条件熵H(D|A)
(3)计算信息增益
g(D,A)=H(D) -H(D|A)
决策树生成:从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子节点,再对子节点递归地调用以上方法,构建决策树,直到所有的特征的信息增益很小或者,没有特征可以选择为止。决策树的构建是一个递归的过程,所以需要确定停止条件,否则过程不是结束。一种直观的方式是当每个子节点只有一种类型的记录时停止,但是这样往往会导致过拟合现象。因此另一种可行 的方式是当前结点中的记录低于一个最小的阈值,那么就停止分割,将max(p(i))对应的分类作为当前叶节点的分类。
决策树的剪枝:决策树的剪枝往往通过极小化决策树整体的损失函数或者代价函数来实现。
树的剪枝算法:
(1)计算每个结点的经验熵
(2)递归地从树的叶节点向上回缩。
设一组叶节点回缩到其父节点之前与之后的整体树分别为A和B,对应的损失函数为C(A)和C(B),如果C(A)<C(B)则进行剪枝,即将父节点变为新的叶节点。
(3)返回(2),直到不能继续为止,得到损失函数最小的子树A。
过渡拟合:
采用上面算法生成的决策树在事件中往往会导致过滤拟合。也就是该决策树对训练数据可以得到很低的错误率,但是运用到测试数据上却得到非常高的错误率。过渡拟合的原因有以下几点:
1噪音数据:训练数据中存在噪音数据,决策树的某些节点有噪音数据作为分割标准,导致决策树无法代表真实数据。
2缺少代表性数据:训练数据没有包含所有具有代表性的数据,导致某一类数据无法很好的匹配,这一点可以通过观察混淆矩阵(Confusion Matrix)分析得出。
3.多重比较。举个列子,股票分析师预测股票涨或跌。假设分析师都是靠随机猜测,也就是他们正确的概率是0.5。每一个人预测10次,那么预测正确的次数在8次或8次以上的概率为
= 0.0547,只有5%左右,比较低。但是如果50个分析师,每个人预测10次,选择至少一个人得到8次或以上的人作为代表,那么概率为
= 0.9399,概率十分大,随着分析师人数的增加,概率无限接近1。但是,选出来的分析师其实是打酱油的,他对未来的预测不能做任何保证。上面这个例子就是多重比较。这一情况和决策树选取分割点类似,需要在每个变量的每一个值中选取一个作为分割的代表,所以选出一个噪音分割标准的概率是很大的。
CART算法:
由两步组成:(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;(2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
算法实现源码:http://www.cnblogs.com/wsine/p/5180321.html
参考文献:
《统计机器学习》