机器学习(三) 决策树

作者: 晓迦 | 来源:发表于2019-05-11 11:11 被阅读0次

决策树是最经典的机器学习模型之一。它的预测效果容易理解,易于向业务部门解释,可以做分类问题和回归问题。
本篇文章主要做以下几个方面的归纳总结:

  • 3.1 决策树的算法原理
  • 3.2 怎样进行特征选择
  • 3.3 决策树的创建过程
  • 3.4 决策树的剪枝处理
  • 3.5 sklearn调用以及相关参数解释

3.1 决策树的算法原理

算法思想:从决策到决策树

3.1.1 决策

什么是决策?
我们在生活中经常会依靠各种信息做出各种决策,比如说选择大学,选择专业,找工作,找对象。
以找工作为例,假如我们要对“我们是否要找一份数据分析相关的工作?”这样的问题进行决策时,通常会进行一系列的判断或者“子决策”:我们先看”这份工作是自己喜欢的吗?”,如果是自己喜欢的,则我们再看“它的待遇好吗?”,如果待遇不错,我们再判断“它是否有前景呢?”,最后我们得出最终结论:我们要从事一份数据分析相关的工作。

决策的过程为我们理解决策树的建立提供了很大的帮助。计算机是通过数据来对事情做出预测,下面给一个更加直观的例子如图:



通过给出10组数据来构建决策树判断是否能偿还贷款债务。
依据决策画出决策树如下:


3.1.2 决策树

对于是否有能力偿还贷款债,我们根据年收入、房产信息、婚姻情况来判断他是否有能力偿还贷款。
分别对年收入、房产信息、婚姻情况三个特征进行测试,并根据测试结果决定行为的类别。每选择一个特征进行测试,数据集就被划分成多个子数据集。接着继续在子数据集上选择特征,并进行数据集划分,直到创建一个完整的决策树。
问题来了,在决策树的创建过程中,要先对哪个特征进行分裂?怎样进行特征的选择呢?

3.2 怎样进行特征选择

遍历所有的特征,分别计算,使用这个特征划分数据集前后信息熵的变化值,然后选择信息熵变化幅度最大的那个特征,来优化作为数据集划分的依据。即选择信息增益最大的特征作为分裂节点。
特征选择标准除了信息增益,还有增益率基尼不纯度

3.2.1 信息增益

信息熵主要解决的是信息量化的问题。一条信息的信息量和它的不确定性有直接的关系。一个问题不确定性越大,要搞清楚这个问题,需要了解的信息量就越多,其信息熵就越大。
信息熵计算公式:


信息增益:
信息增益指的是当按照这个特征划分之后,信息熵下降的量。在特征选择的过程中,选信息增益最大的特征。

ID3算法使用信息增益作为特征选择指标的决策树构建算法。

3.2.2 增益率

由于权重的存在,信息增益准则对包含数目较多的属性有偏好。为了减少这种不“客观”的判定,选择增益率来作为划分指标。


C4.5算法是使用增益率作为特征选择指标的决策树构建算法。
3.2.2 基尼不纯度

信息熵是衡量信息不确定性的指标,也是衡量信息纯度的指标。除此之外,基尼不纯度也是衡量信息不纯度的指标,其计算公式如下:


CART算法是使用基尼不纯度来作为特征选择指标的决策树构建算法。

3.3 决策树的创建过程

  • 计算数据集划分前的信息熵
  • 遍历所有未作为划分条件的特征,分别计算根据每个特征划分数据集后的信息熵。
  • 选择信息增益最大的特征,并使用这个特征作为数据划分节点来划分数据。
  • 递归地处理被划分后的所有子数据集,从未被选择的特征里继续选择最优数据划分特征来划分子数据集。
    递归过程结束的条件:
  • 所有的特征都使用完了
  • 划分后的信息增益足够小了

3.4 决策树的剪枝过程

使用决策树模型拟合数据时,容易造成过拟合。解决过拟合的方法是对决策树进行剪枝处理。决策树的剪枝有两种思路:预剪枝和后剪枝。

3.4.1 预剪枝

预剪枝是在构造决策树的同时进行剪枝。在决策树的构建过程中,如果无法进一步降低信息熵的情况下,就会停止创建分支。为了避免过拟合,可以设置一个阈值,即使还可以继续降低信息熵,但如果信息熵的减少量低于这个阈值,也停止创建分支。
其他的预剪枝算法:如限制叶子节点的样本个数等。

3.4.1 后剪枝

后减枝是指决策树构造完成之后进行剪枝。剪枝的过程是对拥有同样父节点的一组节点进行检查,判断如果将其合并,信息熵的增加量是否小于某一阈值。如果小于阈值,则这一组节点可以合并一个节点。

3.5 sklearn调用以及相关参数解释

scikit-learn 使用 sklearn.tree.DecisionTreeClassifier类实现决策树分类算法。其中几个典型的参数类型解释如下:

  • criterion: 特征选择算法。
  • splitter: 创建决策树分支的选项,一种是选择最优的分支创建原则,另外一种是从排名靠前的特征中,随机选择一个特征来创建分支,这个方法和正则项的效果类似,可以避免过拟合的问题。
  • max_depth: 指定决策树的最大深度。通过指定该参数,用来解决模型的过拟合问题。
  • min_samples_split: 这个参数指定能创建分支的数据集大小。默认为2,如果一个节点的样本个数小于这个数值,则不再创建分支。
  • min_samples_leaf: 创建分支后的节点样本数量必须大于等于这个数值。
  • max_samples_nodes: 限制最大的样本节点个数。
  • min_impurity_split: 可以使用该参数来指定信息增益的阈值。

总结

决策树的建立过程就是信息熵减少的过程。
怎样来选择要划分的特征?决策树的停止指标?为了避免过拟合,采取了哪些剪枝方法?调用sklearn时,需要调整的参数有哪些?参数的含义?
弄懂上面这些,应该达到了一个调参侠的入门标准吧。

文章参考:机器学习(6)——决策树
《scikit-learn 机器学习》

相关文章

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

  • 6.machine_learning_Decision_Tree

    1 机器学习决策树 1.1机器学习中的决策树模型 ① 树模型不用做scaling ② 树模型不太需要做离散化 ③ ...

  • 机器学习 | 决策树及若干基础问题

    决策树 1.构造决策树 学习决策树就是学习一系列if/else问题,是我们能够以最快的速度得到正确答案。在机器学习...

  • ID3、C4.5、CART决策树生成算法总结

    简介 决策树模型是最常见的机器学习方法之一,也是入门机器学习必须掌握的知识。决策树模型呈现树形结构,在分类问题中,...

  • 机器学习之决策树(Decision Tree)及其Python

    机器学习之决策树(Decision Tree)及其Python代码实现

  • 机器学习(三)决策树

    概述 决策树是一个有监督学习的一种算法,可以实现分类和回归任务。决策树算法的本质是树形结构,可以看作是遵循if-t...

  • 机器学习(三) 决策树

    决策树是最经典的机器学习模型之一。它的预测效果容易理解,易于向业务部门解释,可以做分类问题和回归问题。本篇文章主要...

  • 机器学习笔记(6):决策树

    本文来自之前在Udacity上自学机器学习的系列笔记。这是第6篇,介绍了监督学习中的决策树模型。 决策树 决策树是...

  • python决策树(二叉树、树)的可视化

    问题描述 在我学习机器学习实战-决策树部分,欲可视化决策树结构。最终可视化结果: 解决方案 决策树由嵌套字典组成,...

  • 决策树算法

    决策树 决策树也是经常使用的数据挖掘算法,其不用了解机器学习的知识,就能搞明白决策树是如何工作的。 决策树算法能够...

网友评论

    本文标题:机器学习(三) 决策树

    本文链接:https://www.haomeiwen.com/subject/fpmtaqtx.html