一天,小迪与小西想养一只宠物。
小西:小迪小迪,好想养一只宠物呀,但是不知道养那种宠物比较合适。
小迪:好呀,养只宠物会给我们的生活带来很多乐趣呢。不过养什么宠物可要考虑好,这可不能马虎。我们需要考虑一些比较重要的问题。
小西:我也考虑了好多呀,可是还是很难去选择。我想养可爱的小兔兔,可是兔兔吃得很挑剔,又想养狗狗,可是狗狗每天都需要遛它,怕自己没有时间呀。
小迪:其实我们可以绘制一个决策树,决策树是机器学习中做判断的常用模型。原理也非常简单。
小西:决策树是什么,怎么能帮助我们作出决策呢?
小迪:别着急,听我,慢慢道来~
一、概述
决策树(Decision Tree)是有监督学习中的一种算法,并且是一种基本的分类与回归的方法。也就是说,决策树有两种:分类树和回归树。这里我们主要讨论分类树。
决策树算法的本质就是树形结构,只需要有一些设计好的问题,就可以对数据进行分类了。在这里,我们需要了解三个概念:
我们可以把决策树看作是一个if-then规则的集合。将决策树转换成if-then规则的过程是这样的:由决策树的根节点到叶节点的每一条路径构建一条规则
路径上中间节点的特征对应着规则的条件,也叶节点的类标签对应着规则的结论
决策树的路径或者其对应的if-then规则集合有一个重要的性质:互斥并且完备。也就是说,每一个实例都被 有且仅有一条路径或者规则所覆盖。这里的覆盖是指实例的特征与路径上的特征一致,或实例满足规则的条件。
二、决策树的构建准备工作
使用决策树做分类的每一个步骤都很重要,首先要收集足够多的数据,如果数据收集不到位,将会导致没有足够的特征去构建错误率低的决策树。数据特征充足,但是不知道用哪些特征好,也会导致最终无法构建出分类效果好的决策树。
决策树构建过程可以概括为3个步骤:特征选择、决策树的生成和决策树的剪枝。
1.特征选择
特征选择就是决定用哪个特征来划分特征空间,其目的在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大的差别,则称这个特征是没有分类能力的,经验上扔掉这些特征对决策树学习的精度影响不会很大。
那如何来选择最优的特征来划分呢?一般而言,随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,也就是节点的纯度(purity)越来越高。
下面三个图表示的是纯度越来越低的过程,最后一个表示的是三幅图中纯度最低的状态。
在实际使用中,我们衡量的常常是不纯度。度量不纯度的指标有很多种,比如:熵、增益率、基尼值数。
这里我们使用的是熵,也叫作香农熵,这个名字来源于信息论之父 克劳德·香农。
1.1 香农熵及计算函数
熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。
香农熵的python代码如下:
"""
函数功能:计算香农熵
参数说明:
dataSet:原始数据集
返回:
ent:香农熵的