大白话讲解决策树【案例】:如何区分西方人和东方人
2015-08-15 21:47
771 查看
【前言】:
决策树是一种十分常用的分类方法。它是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。
决策树有很多种算法:CHAID,CART,C4.5,C5.0。不过决策树的核心理论都其实差不多,本文将从介绍ID3的思想,方便各位读者理解决策树的核心理念。
【本文可以告诉你】:
1、 决策树最基础的原理
2、 决策树如何选择特征值的
【正文】决策树判断是否为东方人:
假设我们用有11个人,各自的情况如下:
分类方法一:第一层用眼睛的颜色,第二层用头发的颜色进行分类。如图:(+号为东方人)
我们可以看到如果用眼睛的颜色分类,我们可以把绝大部分的人分类清楚。黑色眼睛为东方人,蓝色眼睛为西方人。如果碰到棕色的眼睛,我们需要再用头发的颜色进一步划分。头发为黑色和白色的为东方人,金色为西方人。就这样“区分东方人的决策树就完成了。“
有人会问如果我先用身高去进行划分呢?这也是可以的,如下图:
我们先用了身高,再用了头发颜色,再用眼睛颜色做了一个决策树。
问题:
那我们应该用哪颗树比较好呢?计算机又是如何去选择的呢?(这个答案就是决策树的奥秘)
对比两棵树的第一层各自的特征值,第一颗树用眼睛的颜色。
猜测准确度性从原来的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是理解决策树的开始,理解了它的原理后续的一些决策树就会迎刃而解。同样理解了决策树的原理后,你在使用决策树你就理解各种各样的现象。不只是简单的使用软件出结果。
非常欢迎各位给我提意见。
参考文献:
《数据挖掘:概念与技术》
决策树是一种十分常用的分类方法。它是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。
决策树有很多种算法: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是理解决策树的开始,理解了它的原理后续的一些决策树就会迎刃而解。同样理解了决策树的原理后,你在使用决策树你就理解各种各样的现象。不只是简单的使用软件出结果。
非常欢迎各位给我提意见。
参考文献:
《数据挖掘:概念与技术》
相关文章推荐
- hdu1541-Stars(树状数组)
- 整型信号量与记录型信号量
- Python多线程(1)——介绍
- 全面认识UML组件图
- 树形dp入门[POJ1655][HDU1520][HDU1561][HDU1011][POJ1155][ZOJ3626]
- 刀哥多线程之调度组gcd-12-group
- @property在内存管理中的参数问题
- sem_open中信号量命名
- 26个Jquery使用小技巧
- @property在内存管理中的参数问题
- LRU Cache
- 几种自动执行js代码的方式
- 数据结构——线索二叉树
- 刀哥多线程之一次性代码gcd-11-once
- EOJ 2521 Guarding the Farm
- 关于CLASSPATH
- 《云革命》读书笔记
- 黑马程序员——Java概述
- [Java第一个游戏]JFrame文本框下贪吃蛇
- gcc编译器简介