从零开始学人工智能(16)--Python · 决策树(四)· 树

浏览: 646

作者:射命丸咲    Python 与 机器学习 爱好者

知乎专栏:https://zhuanlan.zhihu.com/carefree0910-pyml 

个人网站:http://www.carefree0910.com 

往期阅读:

从零开始学人工智能(12)--Python · 决策树(零)· 简介

从零开始学人工智能(13)--Python · 决策树(一)· 准则

从零开始学人工智能(14)--Python · 决策树(二)· 节点

从零开始学人工智能(15)--Python · 决策树(三)· 节点

本章用到的 GitHub 地址:https://github.com/carefree0910/MachineLearning/blob/master/Zhihu/CvDTree/one/CvDTree.py

本章用到的数学相关知识:https://zhuanlan.zhihu.com/p/24498143?refer=carefree0910-pyml


这一章就是朴素实现的最后一章了,我们会在这一部分搭建一个比较完整的决策树框架

上一章我们也提过,我们主要还需要做的只有一个:剪枝

同样的,为了简洁(懒),我们采用普通的剪枝算法:

  • 取出待剪枝的节点

    image.png
  • 根据定义计算剪枝前(_old)的混乱程度和剪枝后(_new)的混乱程度

    image.png
  • 选出剪枝后混乱程度降低的 node、调用 node 的 prune 函数来剪枝、剪枝后把被剪掉的 node 从备选 node 列表中删去、然后再次调用整个决策树的剪枝算法

    image.png

这些就是剪枝算法的全部了,不知是否比你想象中的要简洁一些?当然了、这是通过牺牲效率来换取的简洁,好的做法应该是:

  • 找到决策树“从下往上”的次序

  • 依次判断每个 Node 是否应该剪枝

这样做的话算法复杂度会降低不少、但实现起来也会稍微复杂一点。如果有时间的话(啧)会在后序章节中进行补充

最后放一下在数据集上运行的结果。在 Python · 决策树(零)· 简介 这一章中,我用到了这么两张图:

image.png



它们其实都是在另一种剪枝算法下的最终结果。如果按这一章的算法(令惩罚因子 alpha = 1)来做,最终结果是这样的:


image.png


此时的正确率大约是 99.4878 %,可以看到这一章的剪枝算法(在惩罚因子 alpha = 1 时)把原先对应第 19 维数据的第二层 Node 中取值为 w 的子树给剪掉了。

以上及之前的各章节加总即是一个比较朴素的决策树的所有实现,它有如下功能:

  • 支持任意形式的离散数据、不必将数据预处理成数值形式

  • 支持可视化最终的决策树模型

  • 支持通过准确率来评估模型的好坏


这不算是一个很完善的决策树、但基本的雏形已经有了,而且由于抽象做得比较好、它的可拓展性会比较强。接下来(如果有时间的话)我们会继续做如下事情:

  • 利用 np.bincount 来加速我们的算法

  • 让我们的决策树支持输入样本权重和支持连续型特征

  • 将 C4.5 算法整合到这个框架中

  • (争取)把 CART 算法也整合到这个框架中

希望观众老爷们能够喜欢~

公众号后台回复关键词学习

回复 人工智能          揭开人工智能的神秘面纱

回复 贝叶斯算法      贝叶斯算法与新闻分类

回复 机器学习          R&Python机器学习

回复 阿里数据          阿里数据系列课程

回复 Python             Python机器学习案例实战

回复 Spark               征服Spark第一季

回复 kaggle             机器学习kaggle案例

回复 大数据             大数据系列视频

回复 数据分析          数据分析人员的转型

回复 数据挖掘          数据挖掘与人工智能

回复 机器学习          R&Python机器学习

回复 阿里数据          阿里数据系列课程

回复 R                      R&Python机器学习入门

推荐 1
本文由 人工智能爱好者社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册