基于决策树的鸢尾花分类

2018-11-08 02:32徐彧铧
电子制作 2018年20期
关键词:鸢尾花剪枝决策树

徐彧铧

(浙江省衢州第二中学,浙江衢州,324000)

0 引言

图像识别技术,要运用目前流行的机器学习算法,而目前流行的机器学习算法就有十几种,比如支持向量机、神经网络、决策树。机器学习是人工智能发展的重要一部分,它涉及的学科很多,应用也相当广泛,它通过分析、研究、设计让计算机学习知识,从而提高完善自身的性能。但是神经网络学习的速度较慢,传统的支持向量机则不能解决分类多的问题。

本文针对鸢尾花的特征类别少以及种类少的特点,采用决策树算法对课题进行展开,对比与其他人利用支持向量机、神经元网络模型来进行研究,该系统具有模型简单、便于理解、计算方便、消耗资源少的优点。

1 决策树模型和学习

本文采用决策树算法对鸢尾花进行分类,先建立决策树的模型并进行学习训练,在决策树的训练过程中采用是信息论的知识进行特征选择,对选定的特征采用分支的处理,然后再对分支过后的数据集如此反复的递归生成决策树,在一颗决策树生成完后对决策树进行剪枝,以减小决策树的拟合度,来达到一个对鸢尾花较高的分类准确率。

要对鸢尾花进行分类首先需要大量的鸢尾花数据集作为本文的实验数据,本文采用的数据集是来自加州大学欧文分校UCI数据库中的鸢尾花数据集。该数据集中鸢尾花的属性有四个,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度,鸢尾花的类别则有三种,分别是Iris Setosa,Iris Versicolour,Iris Virginica,用简写Se、Ve和Vi表示这三种花,具体数据如图1所示。

■1.1 信息论

美贝尔电话研究所的数学家香农是信息论的创始人,1948年香农发表了《通讯的数学理论》,成为信息论诞生的标志。信息论的诞生对信息技术革命以及科学技术的发展起到重要作用。信息论中有两个概念信息增益及信息增益率,都是用于衡量原始数据集在按照某一属性特征分裂之后整体信息量的变化值。这样,本文就可以通过这种指标寻找出最优的划分属性,数据集在经过划分之后,节点的“纯度”越来越高,这里的纯度值得是花朵的类别,当某一节点中花朵全为一类时,该节点已经达到最纯状态,无需再进行划分,反之继续划分。

图1 鸢尾花数据集

信息熵用于描述信源的不确定性。即发生每个事件都有不确定性,为了使不确定性降低,我们需要引入一些相关的信息进行学习,引入信息越多,那么得到的准确率越高,信息熵越高,信源越不稳定。例如一束鸢尾花,它可能是Se,可能是Vi,也有可能是Ve,我们利用数据库中的各种鸢尾花的花瓣长度、花瓣宽度、花萼长度和花萼宽度来预测鸢尾花的类别,引入的鸢尾花种类越多,信息熵就越高。

样本集合D的信息熵Ent(D)以下面的公式进行计算,其中集合里第k类样本所占的比例是pk,k的取值范围是从1到y,y值得是总共有y类样本,通过式(1)可以计算得到原始样本集的信息熵。

1.1.2 信息增益

信息增益即在一个条件下,信源不确定性减少的程度。信息增益用于度量节点的纯度。信息增益对可取值数目较多的属性有所偏好。在鸢尾花数据集的D集合中,属性a取到某一取值情况的概率乘该取值情况的信息熵得到的值记为 Dv,其中V指的是该属性a可以取值的个数,则属性a的信息增益为:

通过式(2)可以计算得到对于原始总的数据集来讲,分别采用四种不同的属性值计算过后得到的信息增益,比较信息增益大小可以得到最优的分裂属性。在进行分裂之后,对于分裂过后的子集,首先判断其同一子集里的所有样本点是不是都属于同一类花,如果是的则不需要进行再次的分裂,如果不是的则表明改点依旧信息不纯,需要进一步分裂。

1.1.3 信息增益率

信息增益率用于度量节点的纯度。由于信息增益对可取值数目较多的属性有所偏好,因为对于一个有多值的属性,它的信息增益是很高的,利用信息增益率可以减少这种现象的产生。它的计算过程如式(3)所示,字母的意义和信息增益中一样。

通过信息增益率的计算同样可以得到原始的鸢尾花数据集中按照某一属性进行划分之后的信息增益率,选择产生最大值的属性作为分裂的标准。同样地,分裂后的子集中也是采用相同的递归方式形成新的子集,直到所有末端分支的子集里所有的样本都为同一类型的花朵为止。

■1.2 决策树生成算法

1.2.1 ID3算法与C4.5算法

决策树生成常用的基本算法是ID3算法和C4.5算法。

ID3算法是一种采用信息增益的方法构造决策树,这种算法该算法开始时,所有的数据都在根节点上,属性都是离散的,停止分割的条件是一个节点上的数据都是属于同一个类别或者没有属性可以再对属性进行分割了。

C4.5算法是应用信息增益率进行的,克服了用信息增益选择属性时偏向选择取值多的属性的不足。C4.5算法能够完成对连续属性的离散化处理,由于在本文所研究的对象中,对于萼片长度、萼片宽度、花瓣长度、花瓣宽度这些数据实际是上都是一些连续的小数值,因此如果不采用离散化的操作,这样直接进行处理就会导致属性的取值数量太多的情况,极易造成过拟合的现象。若不是离散的就将它离散化,离散化采用的是一种设置区间的形式对数据离散化。利用分裂信息计算,得到值越大,表示按照该属性值进行划分越优,根据计算出的值再对数据分区间。

数据的离散化是一个比较复杂的过程,一般都是设置一个阈值将其分成两部分。首先对属性的取值进行升序排序,得到排序结果之后,任意两个属性取值之间都有可能的作为分裂点,计算每个可能的分裂点的分裂信息,即式(3)中的IV(a)。选择IV(a)最大的点作为该特征的最佳分裂点,这样就获得了该属性的分裂点的取值情况,就可将连续的数值离散化成为两类不同的数值。

1.2.2 CART算法

CART是分类树也是回归树。它的根节点和每一个非叶子节点都有两个分支,是一棵二叉树。由于本文所讨论的是对鸢尾花的分类问题,因此这里只考虑当CART是分类树的情况,这时CART采用基尼值作为节点分裂的依据,基尼值越小,节点越纯,决策树的正确率越高。分类树的作用是通过一个对象的特征来预测该对象所属的类别且预测结果是离散的。GINI值的计算公式:其中I表示总共的类别树,i表示每一种类别的个数。

在鸢尾花数据集D中,根据一类属性分为两类,分别是D1,D2。在D数据集中,A属性的基尼值则为D1发生的概率乘D1的基尼值加D2发生的概率乘D2的基尼值,式5就表示了数据集D按照某一属性值A进行二分类之后的结果。

但是实际中,鸢尾花的所有属性值都不是只有两种值得取值情况,因此,需要对属性设置一个阈值,使其变成两类值,具体的阈值选取方法完全等同于C4.5中对连续属性值的处理方法。

■1.3 决策树的剪枝

决策树的剪枝分为预剪枝和后剪枝。剪枝的目的在于解决数据噪音、训练数据量少、过拟合等问题,使决策树更高效。

预剪枝就是在构造决策树的过程中,先对每个叶子节点统计里面每个样本类别的个数,选取该叶子节点中样本类别个数最多的类别作为该叶子节点的类别。然后在节点划分前进行估计,先计算目前模型A对新样本预测的准确率,若当前结点划分得到一个较为复杂的模型B之后,模型B对相同的新样本预测的准确率并没有提升,则不对当前结点进行划分并且将当前结点标记为叶结点,表示该节点纯度较高,不需要再进行划分,达到了预剪枝的效果,简化模型。

后剪枝是在决策树生成后进行的,自底向上对非叶子节点进行考察,如果原始模型是A,并计算目前模型对新样本预测的准确率。在将这个非叶子结点的子节点去掉之后,即将该非叶子去掉之后得到的一个简单的模型B,再计算模型B对相同的新样本预测的准确率,发现准确率提升了,就直接把该非叶子结点的子树都删掉,这样就达到了后剪枝的效果,简化模型提高正确率。

2 总结与展望

本文通过决策树的算法,将鸢尾花数据库中的数据进行学习来建立该模型,再通过信息论中的信息熵来描述信源的不确定性,信息增益与信息增益率来度量节点的纯度,从而进行特征选择,再生成决策树,在决策树生成过程中和生成后剪枝,对比分析了ID3算法、C4.5算法、以及CART算法在鸢尾花分类任务上的可行性。解决了传统手工分类效率低、准确率低等缺点。

针对鸢尾花数据集中属性值一般都是连续值得情况,本文讨论了如何采用分裂信息对某一种属性值得取值情况进行分析以计算获得一个最优的分裂点,并还分析了算法可能出现过拟合的问题,针对过拟合本文讨论了如果从源头以及结果解决过拟合的方法,分别是预剪枝和后剪枝,以达到决策树更高的准确率。

但由于客观条件以及时间的限制,本文还有以下几个方面需要改进:本文仅仅运用决策树算法通过鸢尾花的不同属性判断出了鸢尾花的类别,为未来更复杂的模型提供了帮助、奠定了基础。但随着科技的进步与发展,本作者希望日后可以通过图片判断出鸢尾花的年龄等一系列更详细的信息。

猜你喜欢
鸢尾花剪枝决策树
人到晚年宜“剪枝”
基于YOLOv4-Tiny模型剪枝算法
鸢尾花
信息时代基于决策树对大学生情绪的分类
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
鸢尾花为什么会成为法国的国花?
简述一种基于C4.5的随机决策树集成分类算法设计
我有鸢尾花一样的灵魂(外一首)
鸢尾花
剪枝