机器学习(其三)决策树

本文详细介绍了决策树的学习过程,包括决策树的定义、基本步骤、CART决策树、剪枝处理、连续值和缺失值处理等。通过实例展示了决策树在分类任务中的应用,并探讨了过拟合问题。此外,还提到了Python中的sklearn库实现决策树的方法。
摘要由CSDN通过智能技术生成

机器学习(其三) 决策树

前言

由于某些原因,前2个部分的文章还没做出来,以后会补上,但是前后并没有关联性.编号只是一个编号而已.从哪一篇开始看都是可以的.
另外文中引用了他人的文章,会在参考资料部分标明,如有版权.转载等问题我会删掉那部分内容.
最后本人也是刚刚入门机器学习这一领域,如有问题欢迎探讨,希望大家看完都能有点收获.
运行环境是Anaconda3.
其中python版本为3.6.4
skearn版本0.19.1
(感觉很多人写文章都不说运行环境,写的很用心但是别人却运行不了,这太可惜了.)

决策树是什么?

决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,如下图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作为分支(branch),它可以达到另一个判断模块或者终止模块。我们还可以这样理解,分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。如下图所示的决策树,长方形和椭圆形都是结点。长方形的结点属于内部结点,椭圆形的结点属于叶结点,从结点引出的左右箭头就是有向边。而最上面的结点就是决策树的根结点(root node)。这样,结点说法就与模块说法对应上了,理解就好。
这里写图片描述

决策树的基本步骤

使用决策树做预测需要以下过程:
  1. 收集数据:可以使用任何方法。比如想构建一个相亲系统,我们可以从媒婆那里,或者通过参访相亲对象获取数据。根据他们考虑的因素和最终的选择结果,就可以得到一些供我们利用的数据了。
  2. 准备数据:收集完的数据,我们要进行整理,将这些所有收集的信息按照一定规则整理出来,并排版,方便我们进行后续处理。
  3. 分析数据:可以使用任何方法,决策树构造完成之后,我们可以检查决策树图形是否符合预期。
  4. 训练算法:这个过程也就是构造决策树,同样也可以说是决策树学习,就是构造一个决策树的数据结构。
  5. 测试算法:使用经验树计算错误率。当错误率达到了可接收范围,这个决策树就可以投放使用了。
  6. 使用算法:此步骤可以使用适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。

    ID3决策树和C4.5决策树

假设我们要对一个西瓜是不是一个好瓜进行判别,这个西瓜表示为一个向量

x⃗ =(x,x,x) x → = ( x 色 泽 , x 根 蒂 , x 敲 声 )
其中有一个瓜为
x1=(绿,,) x 1 → = ( 青 绿 , 蜷 缩 , 浊 响 )

那么用这个瓜来构建一个决策树应该考虑些什么问题呢?最重要的是如何选择色泽,根蒂,敲声这3个属性的先后顺序.
直观的经验告诉我们,应该首先对最重要的属性进行判别.比如说我们判别一个生物是不是鱼,我们首先判断的大概是它会不会游泳,而不是能不能吃.如果会游泳再判断它是否有鱼的其他特性.
在信息论中我们用信息增益来描述这个属性的重要度.
计算信息增益首先要计算信息熵(information entropy),也叫香农熵

信息熵计算如下:

Ent(D)=|y|k=1pklog2pk E n t ( D ) = − ∑ k = 1 | y | p k l o g 2 p k

其中

D D :表示当前样本集合
p k :在当前样本集D中第k类样本所占的比例为
pk(k=1,2,...,|y|) p k ( k = 1 , 2 , . . . , | y | )

|y| | y | :在当前样本集D中总的类别总数

信息增益(information gain)为:

Gain(D,a)=Ent(D)Vv=1|Dv||D|Ent(Dv) G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V | D v | | D | E n t ( D v )
其中
|D| | D | 为属性a的可取值范围的全集的元素数量,一般和样本集大小一样
|Dv| | D v | 为属性a的第v个取值的样本个数

列举《机器学习》中的例子来讲解

编号 色泽 根蒂 敲声 纹理 肚部 触感 好瓜
1 青绿 蜷缩 浊响 清晰 凹陷 硬滑
2 乌黑 蜷缩 沉闷 清晰 凹陷 硬滑
3 乌黑 蜷缩 浊响 清晰 凹陷 硬滑
4 青色 蜷缩 沉闷 清晰 凹陷 硬滑
5 浅白 蜷缩 浊响 清晰 稍凹 软粘
6 青绿 稍蜷 浊响 清晰 稍凹 软粘
7 乌黑 稍蜷 浊响 稍糊 稍凹 软粘
8 乌黑 稍蜷 浊响 清晰 稍凹 硬滑
9 乌黑 稍蜷 沉闷 稍糊 稍凹 硬滑
10 青绿 硬挺 清脆 清晰 平坦 软粘
11 浅白 硬挺 清脆 模糊 平坦 硬滑
12 浅白 蜷缩 浊响 模糊 平坦 软粘
13 青绿 稍蜷 浊响 稍糊 凹陷 硬滑
14 浅白 稍蜷 沉闷 稍糊 凹陷 硬滑
15 乌黑 稍蜷 浊响 清晰 稍凹 软粘
16 浅白 蜷缩 浊响 模糊 平坦 硬滑
17 青绿 蜷缩 沉闷 稍糊 稍凹 硬滑
以上表中的数据计算色泽的信息增益,流程如下:

它有3个可能的取值:{青绿,乌黑,浅白}.如果用色泽对测试样本集进行划分可以得到3个子集分别为
D1(=绿),D2(=),D3(=) D 1 ( 色 泽 = 青 绿 ) , D 2 ( 色 泽 = 乌 黑 ) , D 3 ( 色 泽 = 浅 白 )

优先计算根节点的信息熵Ent(D)
从表中的西瓜数据集为例,该数据集包含17个训练数据样例,用以学习一颗能预测没剖开的是不是好瓜的决策树,显然
|y|=2 | y | = 2 .(好瓜,坏瓜两个类别)在决策树学习开始时,根节点包含D中的所有样例,其中正例占
p1=817 p 1 = 8 17 ,反例占
p2=917 p 2 = 9 17 ,根据公司计算根节点的信息熵为
Ent(D)=2k=1pklog2pk=8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值