从前,小夕种了一棵树,种在了小夕的小屋后面~

为什么要种这棵树呢?因为呀,它可以帮小夕总结历史经验,然后帮小夕对当前的局势做出决策~这样小夕就可以安心给大家写文章啦~

这棵树是这样的。

一开始,小夕买了一颗小树苗,把它栽到地上。

然后呢,小夕不给它浇水,也不给他浇肥料,而是让他吃历史经验。比如呢,今天,小夕让它帮小夕识别出图片中的生物是喵还是驴。所以呢,这里的历史经验就是一大堆喵和驴的图片,并且小夕给它标注好了每张图片是喵还是驴。

可是由于树没有眼睛呀,不能直接观察图片。所以呢,小夕帮它把图片转化成了特征,也就是用几个特征来描述每张图片。

于是小夕选了如下几个特征来描述每张图片:

1、头是否是长条形

2、身上有没有毛

3、有没有发现胡须

4、丑不丑

5、萌不萌

所以,比如小夕就会对下面这张图片:

转化为[False True False False True]特征向量(即,不是长条头、有毛、没发现胡须、不丑、萌)

然后小夕一口气给上千张图片提取完了特征,当然,这些图片都是标注好类别的。

小夕就把它们丢给小夕心爱的小树苗啦~

诶?那小树苗要怎么生长呢?

小夕问小树苗:

小树小树,你接下来要怎么长呢?

小树苗喝了口水,说:

我每一步的生长都是非常慎重的,我从不会多长个枝丫或者少长个枝丫。每个样本这不是有五个特征嘛,我呢,就会从中挑选出最有价值的一个特征,来作为我第一次生长的分支。”

小夕接着问:

“那小树要怎么挑选特征呢?

小树苗说:

“你看啊,比如你挑出来的第二个特征,“身上有没有毛”,这就是很糟糕的特征。为什么呢?我们就来看“有没有毛”这个特征。我数了一下,在所有有毛的动物中,50%的动物是喵,50%的动物是驴。而在所有没有毛的动物中,也是50%的动物是喵,50%的动物是驴。所以“有没有毛”这个特征的任何一个取值下,所有类别的样本数一样,是完全等概率的,这样的特征完全无法用来做分类啊。因为不管这个特征的值是什么,它所映射的各个类别都是等概率的。所以这个类别是最糟糕的。”

小树苗喝了口水,接着说:

但是你用的第三个特征,“有没有胡须”,就非常棒。我统计了一下,有胡须的动物中,喵占了92%,驴占了8%。而没有胡须的动物中,喵占了20%,驴占了80%。这样,如果给我一张未知类别的样本,只需要看“有没有胡须”这个特征的话,基本就可以判断出这个样本的类别是什么了!比如说这个样本的这个特征的值恰好是“没有胡须”,那么我就有80%的把握说这是一头驴!当然,如果恰好这个样本的特征的值是“有胡须”,我就有92%的把握说这个样本时一只喵!这么棒的特征,当然是首选的啦!所以,我下面要长的枝丫就是叫做“有没有胡须枝丫”!

小夕:

我可能买了一棵假树苗。

我。。。应该懂你的意思了。你说的选择最优特征的方法实际就是计算条件熵的过程。对于你说的“有没有毛”这个很糟糕的特征,由于这个特征的每个取值下,各个类别都是完全等概率分布的,所以是最无序的,最随机的特征,我们称为“条件熵最大的特征”。熵最大就是1,所以计算出的“有没有毛”这个特征的条件熵肯定是1。

而你说的“有没有胡须”这个特征,它的每个取值下,类别分布很随机,也就是说很有序(想象一下,最有序的状态就是每个取值下,所有样本都是同一个类别,多么有序啊。而类别等概率分布的时候,就是每个特征下鱼龙混杂的时候,啥类别都有,乱糟糟的),这种很有序的特征,计算出的条件熵肯定很小。最有序的情况下,条件熵就是0啦。

小树:

好了。但是,我的分类目标是达到100%的准确率。所以,我要进一步挑选特征了!

基于有胡须的那个分支,我会将这个分支里的样本重新计算各个特征的条件熵(当然胡须这个特征除外),像之前一样选择条件熵最大的特征作为下一个枝丫!

一直重复这个过程,直到哪一个枝丫下的全部样本都是同一个类别了,这个枝丫就不再继续分裂了。

最终,小树长成了大树。

这时,小夕忙着给大家写文章呢,但是小夕的一个好闺蜜小娅拿着一张图片过来了,她想让小夕帮她看看这是驴还是喵。

但是小夕很忙呀,没空理她,就让她拿着图片问后院的决策树啦~

然后小娅去问决策树这是啥,决策树说:“它有胡须吗?”

小娅说:“有!”

树:“它萌吗?”

小娅:“一点也不萌!”

树:“它是长脸吗?”

小娅:“是长脸!”

树:“那这就是只驴!”

留下一脸懵逼的小娅在树下凌乱( ̄∇ ̄)

这棵神奇的树叫什么呢?

这棵树的专业说法叫“ID3决策树”,为什么是ID3呢?因为它是通过计算条件熵来选择最优特征的。其他经典决策树如C4.5决策树、CART决策树等与ID3的区别仅在于最优特征选择的算法。

然后对本文总结一下,本文经过了如下步骤,这也是一个简单的机器学习/数据挖掘任务的经典流程。

1、对已标注类别的数据集进行数据预处理与特征提取

2、训练决策树(分类器/机器学习模型)

3、对未知类别的数据集进行数据预处理与特征提取

4、利用决策树对未知类别样本的类别做出决策

想要详细了解ID3决策树选择最优特征的过程(即计算条件熵)的同学,可以Google或者百度一下“条件熵”或者查阅《数据挖掘导论》等机器学习相关的书籍;

想要详细了解如何代码实现ID3决策树的同学,可以搜索各种CSDN博客或者查阅《机器学习实战》等侧重代码实现的书籍;

对于如何提高决策树的泛化能力(防止过拟合)等优化技巧,或者其他类型的决策树,可以看《数据挖掘导论》等经典书籍~

从前,小夕种了一棵树相关推荐

  1. 燕教授助力公益,已种下60000棵树,修复荒漠78万平方米

    2022年燕教授又对中国绿化基金会百万森林项目捐赠了20万元,这是燕教授与中国绿化基金会百万森林项目战略合作的第三年:累计捐赠600000元,种下60000棵树,修复荒漠78万平方米. (燕教授202 ...

  2. canvas画图入门,关于我在植树节前种了一棵树这件事

    <canvas></canvas>标签是HTML5新增的用于画图的标签,实际上canvas只是绘制出一个画布,实际的画图使用JavaScript进行操作. canvas绘图操作 ...

  3. 蚂蚁森林在沙漠种植了5552万棵树,原来我也在做一件改变世界

    我爱你中国,心爱的母亲! 我为你流泪,也为你自豪! 汪峰--<我爱你中国> 原来我正在做一件改变世界的大事! 马云真是一个不可捉摸的人:当有人教唆我们去网上偷菜娱乐时,他却鼓励我们上支付宝 ...

  4. 蚂蚁森林师生执念种上万棵树

    不惜歌者苦,不伤知音稀 至善林/黑水书生 惊闻S1云杉二十四节气车发车计划恢复从前,作为一个"元老"树友,我十分不忍与不舍.于是再度提笔,投稿征文活动,讲述我与S1云杉永动车的缘分 ...

  5. “种一棵树最好的时间是十年前,其次是现在。”

    "种一棵树最好的时间是十年前,其次是现在."这是东北大学秦皇岛分校ACM俱乐部的教主王和兴老师最常说的一句话.经过长达一个多月的努力奋斗,NEUQ-ACMclub2018暑期编程训 ...

  6. 动用人工智能种“一棵树” 蚂蚁森林背后的高科技你想都想不到

    阿里巴巴95公益周还没有结束,截至9月7日下午5点,蚂蚁森林明星公益林已经累计浇水8亿多克,种下了5782棵樟子松!这距离页面上线才3天多一点时间.期间支付宝公益挑战也顺利完成. 一年多的时间里,蚂蚁 ...

  7. 种一棵树最好的时间是十年前,其次是现在

    作者 | http://www.wuage.me 地址 | 伍阿哥 声明 | 本文是 伍阿哥 原创,已获授权发布,未经原作者允许请勿转载 前言 最近经常被朋友问到的两个问题. 问题一:"从事 ...

  8. 把树分成森林 matlab,20170106RF_Matlab 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,包括两个方面:数据的随 269万源代码下载- www.pudn.com...

    文件名称: 20170106RF_Matlab下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 441 KB 上传时间: 2017-01-06 下载次数: 0 ...

  9. 马云现身敦煌种梭梭树:蚂蚁森林即将突破1亿棵树

    [TechWeb] 4月22日,马云现身甘肃敦煌,原本参加中国绿公司年会对接座谈会的马云特意参绕路110公里来看梭梭树,他说,年轻人参与种树,一点点开始很不容易,后代会因为这个发生很大的变化. 201 ...

最新文章

  1. html资源文件记载进度条,用进度条显示文件读取进度《 HTML5:文件 API 》
  2. SpringMVC之请求参数的获取方式
  3. FPGA 和ASIC开发的区别
  4. JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
  5. ENVI帮助研究人员发现金矿
  6. 用tsmmc.MSC方式在xp和Win7集中管理多台Win2003服务器
  7. 前端开发 标签的属性和值 0228 需演练
  8. Linux下如何设置和查看环境变量
  9. Centos 7 安装 memcached
  10. 在Ubuntu 14.04(Trusty Tahr)上安装Plesk
  11. Hibernate学习笔记之EHCache的配置
  12. Supervisor使用说明
  13. Qt捕捉窗口关闭事件
  14. cad打印去掉边框_CAD打印的时候如何去掉打印线框?
  15. 调研之路 --- MXF
  16. canvas图片合成模糊变清晰的方法
  17. App Store 上架审核指北【翻译】
  18. 大话Ajax,详解~
  19. qtcreater 调试时进入 disassembler 汇编界面--项目无中文路径
  20. 梧桐数据宣布获得千万级Pre-A轮融资

热门文章

  1. c++11标准:匿名函数(匿名表达式)lambda
  2. SVN或其他网盘类软件同步图标不显示的异常
  3. 制作jffs2根文件系统
  4. Linux 终端(TTY)
  5. String Table MFC
  6. 简单线性回归(Simple Linear Regression)和多元线性回归(Multiple Regression)学习笔记
  7. java拆分单元格_Java 拆分Excel单元格数据为多列
  8. 二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)
  9. LeetCode 2040. 两个有序数组的第 K 小乘积(嵌套二分查找)
  10. 03.结构化机器学习项目 W2.机器学习策略(2)