常用算法梳理-决策树

决策树

决策树是一种基本的分类与回归方法,通常包括三个步骤:特征选择、决策树的生成和决策树的修剪。

树由节点和有向边组成,节点分内部节点(特征或属性)和叶节点(表示一个类)

用决策树分类,从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点。重复上述过程,直到达到叶节点。

首先,构建根节点,将所有训练数据都放在根节点。选择一个最优特征,按照这一特征将训练数据集分割成子集,使各个子集有一个当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶节点。并将这些子集分到对应的叶节点中去。如果还有子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割构建相应的节点。如此递归下去,直到所有训练数据子集被基本正确分类或没有合适的特征为止。最后每个子集都有了明确的类,这就生成了一颗决策树。

决策树学习本质上是从训练数据集中归纳出一组分类规则。

与训练数据集不相矛盾的决策树可能有多个,也可能一个也没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有较好的泛化能力。

决策树学习是由训练数据集估计条件概率模型,基于特征空间划分的类的条件概率模型有无穷多个,我们选择不仅对训练数据有较好拟合,而且对未知数据有很好预测的模型。

决策树很容易引发过拟合

采用枝剪策略,对已生成的树自下而上进行枝剪,将树变得更简单,从而使他具有更好的泛化能力。

如果特征数量很多,也可以在决策树学习开始前进行特征选择(选取对训练数据具有分类能力的特征),只保留对训练数据有足够分类能力的特征。特征选择参看(http://i.cnblogs.com/PostDone.aspx?postid=5558922&actiontip=%e4%bf%9d%e5%ad%98%e4%bf%ae%e6%94%b9%e6%88%90%e5%8a%9f)

决策树的生成对应于模型的局部最优,枝剪则考虑全局最优。

信息增益表示得知特征X的信息而使得类Y的信息不确定性减少的程度,信息增益大的特征具有更强的分类能力。

决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

仍以“特征选择”博文中提到的是否批准贷款申请的例子为例,分别计算年龄、有工作、有房、信贷情况4个特征,得到的信息增益分别为0.083、0.324、0.420和0.363,所以选择有房作为最优特征。

以信息增益作为划分训练数据集的特征,存在于偏向选择取值较多的特征,使用信息增益比对这一问题进行校正。

ID3算法的核心是在决策树各个节点上使用信息增益准则进行特征选择,C4.5算法是使用信息增益比进行特征选择。

CART假设决策树是二叉树,使用基尼指数最小化准则进行特征选择。

C4.5算法

  这是以决策树的形式构建的一个分类器(分类器是数据挖掘的一个工具,根据大量需要进行分类的数据学习规则,并尝试预测新数据所属的类别)。

  eg:我们有一个包含很多病人信息的数据集(如年龄、性别、脉搏、血压、家族病史等)

  C4.5算法在生成信息树的时候使用了信息增益(准确的说是信息增益比)

  C4.5使用一个单向的枝剪过程来缓解过拟合

  C4.5算法既可以处理连续数据也可以处理离散数据

  决策树可解释性强,速度也很快

剪枝

决策树的剪枝往往通过极小化决策树整体的损失函数或代价函数来实现。

 

posted @ 2016-06-11 09:11  python挖掘  阅读(1459)  评论(0编辑  收藏  举报