上一集中,我们讲解了K近邻算法,那是一个十分入门的算法,并没有显式的训练方法。这次,我们要做一个真正的机器学习算法,决策树算法。当然,它也是一个多元分类器。相比较K近邻算法对于数值型的数据处理较为舒服,因为毕竟是算距离,所以你就算是跑到天涯海角,也能算出来。但是决策树对于数值型的数据处理起来还是有些吃力,最好的话能有较少的几类标称数据才行。

好的,闲话少说。我们进入正题,同样的,我们继续举例子,我高中时候最喜欢生物了,界门纲目科属种,等等,我记得是有9层分类,这就像我们的决策树,那么我们每一次分类都会有一些特征,比如蜘蛛来说。蜘蛛是动物界,这个依据还用说么,是节肢动物门,这个分类依据就是因为属于这种动物的两侧对称,异律分节,身体以及足分节,可分为头胸腹3部分,每一体节上有一对……balabala等等,我也看不懂。然后依次往下类推了。对不对,分类上面是不是就是这么简单?这就使决策树的使用,只需要把待检测的样本的每一个特征依次比对,依照决策树依次比对即可。

什么,这就完了?这算什么机器学习决策树,这种我也会啊。别急,这只是进行实验的过程,机器学习中的重点在于这个分类器的构建,也就是这个决策树的产生。对,也就是说,机器学习,学习的是什么,是分类方法。这种分类方法不是你告诉他的,不是我告诉他的,是他自己通过训练样本自己学习而来的。这么神奇?对,这次我们讲解的是一个相对简单的决策树算法,ID3算法。

ID3算法的主要思想是,不对,先介绍一下决策树构建的顺序。决策树构建,首先要选取第一个分类的特征,那么,我们选择哪一个呢?点点豆豆,随机选择吗?不,这样的话,可能选择出来的决策树又长而且效率不高,这时候,就要用到ID3算法,为的是选择出来一个尽可能高效的分类特征,也就是区别度最大的一个。那这个所谓的区别度最大的一个特征,怎么找出来,可能你说能分得最清楚的,或者是分的最详细的等等。这些没有办法量化,不量化,就不能进行处理啊。于是,这时候,信息论可以出场了。它包含了一个描述信息无序程度的量度,叫做信息熵。什么,不明白?熵原来是物理学里的衡量能量无序程度的度量,信息熵自然就是衡量信息无序程度的度量。在数学上的表示是这样的:

好吧,好像是有点大了,不过也很值得这么大,因为它的提出是香农,而曾经计算机界的最大的实验室,贝尔实验室最后分裂了,它的缩小版就是香农实验室。而在贝尔实验室和MIT(麻省理工学院)有很多人将香农和爱因斯坦相提并论,而其他人认为这种对比是不公平的,而不公平的对象不是爱因斯坦,而是香农。当然,我们并不能讲香农和爱因斯坦谁更厉害,但是至少在计算机技术人员的眼里,香农所代表的成就是难以企及的。

这就是信息熵的表达式,看起来很简单的样子,其中Pi所代表的是第i个信息占所有信息总和的概率,而取log2则是为了单位,因为去Log2的话,单位是比特,其他的也可以。这样,一个信息集合的信息熵就计算完成了。这个H的数目越大,表示了信息的无序程度越高,而对于人的直观反映就是个体与个体之间的差异性越大。比如也许苹果和橘子的差距没有苹果和香蕉的差异大,这是因为苹果和橘子除了都是水果外,它们还都是圆形的,这就是信息熵的表现形式。

我们的储备知识足够了,现在要讲ID3算法了,它的主要思想是选择一个特征,通过这个特征,可以把信息集合的信息熵下降的最快,也就是选择差别度最大的一个特征。比如我们的动物,植物,微生物,这种分类就是最大的感觉是一样的,只不过动物界的分类是经过了成百上千年的人类经验积累而得来的。我相信,如果我们能够提供出足够多的样本数据和样本特征,计算机一定会构建出区分当今生物界的另外一套体系。

我们现在用的ID3算法是最简单的,每次选取一个特征值来进行判别。那有人可能会问了,万一我的种类超过了我的特征值,这该如何区分呢。好吧,我们现在这个算法不能够完成你这个目标,不过后面的算法也许可以了,请继续关注。现在我们把它简化了,如果最后出现特征值用完了,但是类别还没分清楚的话,我们就进行多数表决,让所属个数最多的分类来表示这个分类。这样,就可以构建出决策树了。

而机器学习中所谓的训练过程,就是拿已有的数据,让机器进行决策树的构建,而测试过程,就是让机器通过构建的决策树来进行分类。这次可是急切学习了,可不要说我懒,总是用懒惰学习。

现在,我们已经介绍了2种机器学习的方法了,在机器学习中,这2种方法是较为简单的方法,不过它已经可以做很多不可思议的事情了。比如给你足够多的女生的照片,让你判断喜欢还是不喜欢,通过一阵子的训练,机器就会知道你喜欢什么样的女生。比如给你足够多的衣服,让你去选择买什么样的,通过一阵子训练,机器就会知道你喜欢什么样的衣服,或者说,可以知道你最看重的是什么,比如品牌,还是样式还是什么,等等。当然,以后攻克癌症啊,或者是发现人类的起源啊等等这些看似梦幻的研究,最终都会有一个答案。

我在期待,我也在努力,你在哪里!

机器学习之决策树算法(1)相关推荐

  1. python决策树实例_Python机器学习之决策树算法实例详解

    本文实例讲述了Python机器学习之决策树算法.分享给大家供大家参考,具体如下: 决策树学习是应用最广泛的归纳推理算法之一,是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. ...

  2. 机器学习:决策树算法(ID3算法)的理解与实现

    机器学习:决策树算法(ID3算法)的理解与实现 文章目录 机器学习:决策树算法(ID3算法)的理解与实现 1.对决策树算法的理解 1.概述 2.算法难点 选择最优划分属性 1.信息熵 2.信息增益 2 ...

  3. 【机器学习】决策树算法

    在前一期介绍搭建结合机器学习的CI/CD管道时,无意中提到了算法分类.在受监督学习的分类中,有一个既适用于回归又适用于分类的算法,即我们今天要介绍的决策树算法(CART, Classification ...

  4. 机器学习算法——决策树算法详细介绍,并使用sklearn实现案例预测,可视化决策树

    目录 一.决策树算法简介 二.决策树分类原理 1.熵 1.1 概念 1.2 案例 2.决策树的划分依据一:信息增益 2.1 概念 2.2 案例: 3.决策树的划分依据二:信息增益率 3.1 概念 3. ...

  5. 机器学习之决策树算法前期(创建、分类及展示)

    一.什么是决策树? 决策树算法是一种逼近离散函数值的方法.它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析.本质上决策树是通过一系列规则对数 ...

  6. 机器学习3决策树算法模型

    决策树算法模型 1.什么是决策树? 2.决策树的归纳 2.1 (选择分裂特征)特征的选择 2.2 决策树的生成 2.2.1 ID3 算法 2.2.2 C4.5 算法 2.2.3 Card算法 2.2 ...

  7. 机器学习基础 决策树算法

    文章目录 一.决策树算法简介 二.决策树分类原理 1. 熵 1.1 概念 1.2 案例 2. 决策树的划分依据一----信息增益 2.1 概念 2.2 案例 3. 决策树的划分依据二----信息增益率 ...

  8. 机器学习之决策树算法-概念和学习过程

    1.      概念 决策树是通过一系列规则对数据进行分类的过程,它提供一种在什么条件下会得到什么值的类似规则的方法.决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树. ...

  9. 『机器学习』 —— 决策树算法(Decision Tree)

    文章首发地址见个人博客 决策树(Decision Tree) 1.机器学习算法中分类和预测算法的评估 准确率 速度 强壮性 可规模性 可解释性 2.什么是决策树(Decision Tree)? 决策树 ...

最新文章

  1. 基于熵权法优劣解距离法_基于优劣解距离法的火电机组单辅机运行状态评估
  2. Java老矣,尚能饭否?2020 Java生态系统报告出炉
  3. 我爱Java系列---【mysql基础约束】
  4. 这里先发布一个,自己写得unityUI的适配的方案(插播)
  5. 教师学计算机课程标准,信息技术课程标准2018
  6. php create database,sql create database 创建数据库命令
  7. 经济下行,我们该如何避免焦虑?
  8. ---调试-用try-catch语句检查错误
  9. Quartz入门到精通
  10. row_number()分页返回结果顺序不确定
  11. VBA编程_常用函数总结1
  12. Windows7 的激活命令小结
  13. Minecraft Forge 服务器开服教程
  14. python画折线统计图画区间_matplotlib-折线图、散点图
  15. 新cBSS灰度发布Git管理流程
  16. ajax java首字母检索_AJAX的拼音首字母查找对应中文的portlet
  17. 【3D点云】弱监督点云分割(论文解读 CVPR2020)
  18. xcopy 复制目录及子目录
  19. 计算机网络检查方式,一种计算机网络环路检测方法与流程
  20. DNS服务器轮询的验证

热门文章

  1. c语言中strcat作用,c语言中strcat的用法
  2. 湖北银行冲刺上市:不良率高于行业均值,有公司欠5亿元未能追回
  3. JUGO实现百万富翁问题操作示例
  4. 亚马逊被跟卖会造成什么后果?你有没有被鬼鬼祟祟的跟卖过?
  5. php 字符串排序函数,排序函数与字符串函数作业-2018年8月28日
  6. .net Tokenize stemmer
  7. 2017无盘服务器主板,2017版云更新整合版部署流程
  8. Vue.component 讲解
  9. 会员管理模块 - 会员登录功能(简单版本)
  10. jad环境变量配置_Java Jad 反编译