决策树

决策树(decision tree)

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。

决策树可能有多种建立方式:

clipboard.png

clipboard.png

如何选择最优的决策树?

先引入一个信息熵(information entropy)的概念:

信息熵是度量样本集合纯度常用的一种指标,他的值越小,则当前样本集合S的纯度越高。Ent(S)的最小值为0,最大值为log(C)

clipboard.png

当前样本集合中第i类样本所占比例为pi。

信息增益(information gain)

假定离散属性A有个V可能的取值,若使用A对样本集合S进行划分,会产生V个分支节点,其中第v个分支节点包含了S中所有在属性A上取值为Sv的节点,记为|Sv|。我们可以根据上式计算出|Sv|的信息熵,再根据样本数的不同赋值权重,即样本数越多的分支节点的影响越大,于是可以计算出属性A对样本集S进行划分所获得的信息增益:

clipboard.png

一般而言,信息增益越大,则意味着使用属性A来进行划分所获得的纯度提升越大。我们选择当前集合下信息增益最大对应的属性来进行划分。

剪枝(pruning)

剪枝是决策树学习算法中对付“过拟合”的主要手段。在决策树学习中,为了尽可能正确分类样本,结点划分过程将被不断重复,有时造成分支过多,导致出现因训练样本学得太好了,以至于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。

预剪枝(prepruning)

在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。

方法:

判断决策树泛化性能是否提升可使用留出法:即预留一部分数据用作“验证集”以进行性能评估,以对划分前后的泛化性能进行估计。如果划分后验证集精度下降,则禁止划分。

优缺点:

预剪枝虽然使决策树降低了过拟合的风险,减少了训练时间和测试时间的开销。但有些分支的当前划分虽然不能提升泛化性能,甚至可能导致泛化性能暂时下降,但在其基础上的后续划分可能导致性能显著提高。预剪枝是贪心算法,带来了欠拟合的风险。

后剪枝(postpruning)

方法:

先在训练集生成一颗完整的决策树,然后自底向上的对非叶结点进行考察,若将该节点对应的子树替换为叶结点能提升泛化性能,则将该子树替换为叶结点。

优缺点:

一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往由于预剪枝决策树。但后剪枝过程是生成完全决策树之后进行的,且需要由底向上对非叶结点进行逐一考察,其训练时间开销相对较大。

你可能感兴趣的:(决策树)