大白话讲解决策树【案例】:如何区分西方人和东方人
来源:互联网 发布:linux创建新目录 编辑:程序博客网 时间:2024/04/29 07:55
【前言】:
决策树是一种十分常用的分类方法。它是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。
决策树有很多种算法:CHAID,CART,C4.5,C5.0。不过决策树的核心理论都其实差不多,本文将从介绍ID3的思想,方便各位读者理解决策树的核心理念。
【本文可以告诉你】:
1、 决策树最基础的原理
2、 决策树如何选择特征值的
【正文】决策树判断是否为东方人:
假设我们用有11个人,各自的情况如下:
序号
眼睛颜色
头发颜色
身高
是否为东方人
1
Black
Black
Short
Yes
2
Black
White
Tall
Yes
3
Black
White
Short
Yes
4
Black
Black
Tall
Yes
5
Brown
Black
Tall
Yes
6
Brown
White
Short
Yes
7
Blue
Gold
Tall
No
8
Blue
Gold
Short
No
9
Blue
White
Tall
No
10
Blue
Black
Short
No
11
Brown
Gold
Short
No
分类方法一:第一层用眼睛的颜色,第二层用头发的颜色进行分类。如图:(+号为东方人)
我们可以看到如果用眼睛的颜色分类,我们可以把绝大部分的人分类清楚。黑色眼睛为东方人,蓝色眼睛为西方人。如果碰到棕色的眼睛,我们需要再用头发的颜色进一步划分。头发为黑色和白色的为东方人,金色为西方人。就这样“区分东方人的决策树就完成了。“
有人会问如果我先用身高去进行划分呢?这也是可以的,如下图:
我们先用了身高,再用了头发颜色,再用眼睛颜色做了一个决策树。
问题:
那我们应该用哪颗树比较好呢?计算机又是如何去选择的呢?(这个答案就是决策树的奥秘)
对比两棵树的第一层各自的特征值,第一颗树用眼睛的颜色。
猜测准确度性从原来的6/11 上升到了 10/11。(说明:未分类前,我们全部猜测11人是东方人的正确度为6/11。通过眼睛颜色分类后,我们只有中间的3个需要猜测,另外8个都可以确定是否为东方人。所以假设棕色眼睛为东方人,我们会猜错1个人。确率升为10/11)
再对比第二颗决策树,它使用的是身高。
我们可以看到用身高分类,我们的准确度仍旧是6/11。其实没有太大改变。
也就是说:身高对于我们判断是否为东方人几乎没有任何作用,而眼睛的颜色对判断是否为东方人起了很大的作用。
那计算机是如何判断有没有作用的呢?
【关键理解部分】
数学家用了信息量的“熵”原理来衡量这个特征值是否对我们的分类有多大作用。
有一个公式介绍样本群是否为均匀分布,如下:
这个公式值的范围为(0~1),0说明样本没有杂质都是同一类的,1说明样本里2类的数目相同。
来一个【例子】理解起来就很方便了:
1)假设,我们11个样本里面全部都是东方人。即东方人x=11,西方人y=0;我们代入公式:i=-1*0+0*无穷大=0
2)假设,我们12个样本里面一半是东方人,一半西方人。即东方人x=6,西方人=6;我们代入公式:i=-0.5*(-1)+(-0.5)*(-1)=1
这个公式就可以告诉我们一个样本里面的类别分布情况。了解了这个我们可以看一下我们刚刚真实的数据的i是多少?(可以自己算一下。)
i= -5/11*LOG2(5/11)-6/11*LOG2(6/11)=0.99403
我们来计算一下分类后的i为多少?
I1=0;i2=0.917;i3=0 则分类后的加上权重:i=4/11*i1+3/11*i2+4/11*i3=0.25
我们可以看到11个样本的i从原来的0.994到了0.25,那么用眼睛颜色分类就是解决了0.744的不确定性。这0.744我们就成为information gain。计算机通过计算information gain 来确定哪个字段效果更好。
所以回到我们原来的案例,如果用身高去做第一层分类,我们会发现它得到的information gain 比眼睛颜色小,所以计算机就会选择眼睛颜色做第一层。
这就是ID3的核心思想,这也是很多决策树的重要思想。后续c4.5 C5.0 也是基于该模型的改进,改进内容如下:
1、 ID3只能用类别型变量的字段
2、 不允许空置
3、 没有考虑砍树(过拟合)
4、 喜欢多类型变量(这个要说明一下,如果我们把序列号作为ID3的特征字段的话,它就会直接输出每个序号对应的东方人和西方人。这样对于以后进入的数据就没有任何的预测功能。如果您全部能理解ID就知道为什么会出现这个状况,更多内容会在下一篇决策树优化案例介绍)
总结:
ID3是理解决策树的开始,理解了它的原理后续的一些决策树就会迎刃而解。同样理解了决策树的原理后,你在使用决策树你就理解各种各样的现象。不只是简单的使用软件出结果。
非常欢迎各位给我提意见。
参考文献:
《数据挖掘:概念与技术》
- 大白话讲解决策树【案例】:如何区分西方人和东方人
- 牛根生:聪明人和笨蛋如何区分
- 大白话讲解如何给github上项目贡献代码
- 大白话讲解如何给github上项目贡献代码
- 大白话讲解如何给github上项目贡献代码
- 大白话讲解ROC曲线
- 大白话讲解遗传算法
- 大白话讲解SVM
- OFDM大白话讲解
- 大白话讲解BP算法
- 大白话讲解EM算法
- 大白话讲解Promise
- 大白话讲解卡方鉴定【案例】播放的背景音乐对于卖酒有什么样的销售影响?
- 大白话讲解数据挖掘【案例】潜客模型的数据框架
- 大白话讲解Promise(一)
- 大白话讲解Promise(一)
- 大白话讲解Promise(一)
- 大白话讲解Promise(一)
- VS2010 C++ 学习笔记(五) 析构函数 深拷贝浅拷贝 小练习
- 全面认识UML组件图
- hdu 1190 生日蛋糕(dfs+剪枝)
- 【CCF系列】有趣的数
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系
- 大白话讲解决策树【案例】:如何区分西方人和东方人
- graph slam tutorial : 从推导到应用1
- 莫比乌斯反演 模板啊
- 黑马程序员 异常
- Java使用Derby数据库
- HDU 1078 FatMouse and Cheese
- 详解Spring MVC 4常用的注解
- 一群猴子排成一圈问,为啥子我这个段子要短些,请鉴证一下合理不?
- Unity Action Game Demo(2)NGUI实现摇杆