专栏首页人工智能从零开始学人工智能-Python·决策树(四)·树

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

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

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

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

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

本章用到的数学相关知识:

https://zhuanlan.zhihu.com/p/24498143?refer=carefree0910-pyml

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

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

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

取出待剪枝的节点

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本文来自企鹅号 - 天善智能媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EM算法原理总结

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM),...

    企鹅号小编
  • 为什么大疆无人机做的好?和这些传感器有关系

    无人机的飞行感知技术主要用作两个用途,其一是提供给飞行控制系统,由于飞行控制系统的主要功能是控制飞机达到期望姿态和空间位置,所以这部分的感知技术主要测量飞机运动...

    企鹅号小编
  • 本周网络空间态势摘要

    1. 美国国会将在2018年推出多项网络安全法案 据外媒报道,美国众议院将数据泄露和消费者保护问题视为2018年的首要议程。众议院金融服务小组委员会主席布莱恩•...

    企鹅号小编
  • EM算法原理总结

        EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(H...

    刘建平Pinard
  • EM算法原理总结

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM),...

    企鹅号小编
  • 策略模式

    在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的...

    刘晓杰
  • 隐马尔可夫模型

    原文地址:http://www.cnblogs.com/jacklu/p/6225073.html

    用户7043923
  • Aibee获6000万美元A轮融资,成立一年融资额达1亿美元

    11 月 27 日,人工智能整体解决方案企业 Aibee 宣布获得 6000 万美元 A 轮融资,此轮融资由红星美凯龙、红杉资本中国基金共同领投,联想创投等机构...

    AI科技大本营
  • WePY开发小程序(二):项目入口及注册页面、组件

    该app.wpy文件中 <config> 代码块用于注册页面信息 ,如下图表示有一个index的page

    听着music睡
  • 从游戏开发公司HR角度看游戏软件开发技术人员招聘

    笔者在一家西安游戏开发公司担任HR,一直在负责公司的游戏软件开发技术人员招聘,面过的游戏开发人员几十个,有软件公司的技术总监,有知名软件公司数年经验者,也有更多...

    西安弈聪软件公司

扫码关注云+社区

领取腾讯云代金券