APP下载

鸢尾花数据集剖析人工智能经典算法

2021-09-24冀晓亮

科技与创新 2021年18期
关键词:鸢尾花决策树增益

王 慧,冀晓亮

(对外经济贸易大学统计学院,北京100029)

人工智能涉及到的算法很多,普通的学习者在入门阶段,很容易被各种名称复杂、变化多样的算法吓退。为此,本文整理了几类常见的计算机统计学习方法(机器学习算法),并阐述了原理。为了方便读者查找和学习源代码,所有的数据均使用UCI的鸢尾花数据集进行实现。机器学习算法分类如图1所示。

1 监督学习

在人工智能中,占比较大的问题就是监督学习。在给定作为训练的样本中,每个样本输入的x都对应着确定的结果y,所以需要训练一个映射模型(即x→y的映射关系f),并在给定未知样本x′后,对结果y′进行预测。

如果预测的结果是离散值(较多情况下为类别类型,比如衣服是否满足用户品味、零件是否合格等),则称其为分类问题;如果预测结果是连续值(比如股票价格、环境温度和湿度变化、人的体重变化等),则叫作回归问题。

用于解决分类问题的最经典算法包括朴素贝叶斯、支持向量机、逻辑回归等算法,还有用于解决回归问题的逻辑回归、线性回归等算法。

2 非监督学习

对于某些问题,样本中并没有给出标准/非标准答案,只是给出了一些样本或数据,需要自己从样本中提取某些通用的规则,这种问题称为非监督学习。聚类算法、关联规则等诸多的机器学习算法均归于非监督学习。按照以上介绍的顺序,使用经典的鸢尾花数据集,将这些算法的应用和原理作详细介绍。以下按照监督学习中的分类和回归、非监督学习中的聚类降维和关联分析的顺序进行阐述。

3 几种用于人工智能的核心算法

首先探讨描述几种经典的机器学习种算法:KNN、决策树、逻辑回归(线性回归)、朴素贝叶斯、SVM、随机森林、PCA、Kmeans、Boosting。

另外,提及人工智能,笔者们也对神经网络的深度学习算法——BP算法,作了一些探索。

3.1 KNN算法(K近邻算法)

KNN算法中的距离常通过欧氏距离或者夹角余弦来计算。但在大数据的工程应用中,因为欧氏距离的运算量较大,可以采用曼哈顿距离等来代替(事实上,工程中为了减少运算量级经常这么做)。KNN主要分为以下几个步骤:①距离测量。计算给定对象与训练集中其他对象之间的距离。②找邻居。找到最近距离的K个训练对象。③作出分类。根据K个近邻归属的主要类别,来对测试对象分类。

用人工智能领域常用的Python语言对UCI数据集中的鸢尾花数据进行分析和计算。因为这套数据最容易获取,且最具有代表性。

按照统计可看到,鸢尾花的数据有4个维度(花瓣和花萼的长和宽),这4个维度都可以用来进行

KNN分类。鸢尾花数据4个维度的KNN分类如图2所示。

KNN算法运行结果如图3所示。

3.2 回归算法

回归算法常见的有线性回归和逻辑回归算法。线性回归根据历史数据拟合一条模拟线段,从而预测未知数据的分类或近似数值。逻辑回归算法思想类似,是一种广义的线性回归模型。但其使用S型曲线来拟合数据,将线性函数的结果映射到了Sigmoid函数中。Sigmoid函数常被用作神经网络的激活函数,变量映射的值域是(0,1)之间,如图4所示。

图4 Sigmoid函数图

事实上鸢尾花种类有3种,如图5所示。

从图5中可以看到,圆点种类的setosa鸢尾花较为显著地区别于X形种类和十字形种类的versicolor和virginica鸢尾花。

图5 鸢尾花种类图

而选择使用Logistic Regression分类器,由于Iris数据集涉及到3个目标分类问题,逻辑回归模型是二分类模型,用于二分类问题。所以,它也可以被用于多分类,被推广为多项逻辑回归模型(multi-nominal logistic regression model),公式如下:

式(1)(2)中:k=1,2,…,K-1;K为分类的种类集合。

使用逻辑回归对鸢尾花进行分类后,其结果如图6所示。

如图6所示,选取花萼的长和宽作为特征值,经过逻辑回归后划分为3个区域,左上角部分为圆点种类,对应setosa鸢尾花;右上角部分为十字形种类,对应virginica鸢尾花;中间下部分为X形种类,对应versicolor鸢尾花。散点图为各数据点真实的花类型,3个区域的数据点所预测出的花的类型与训练数据的真实结果是基本相符的,部分鸢尾花出现了交叉。这个分类结果显然达不到所想要的效果。为此,笔者们选取花萼和花瓣的长度为特征再次运行程序,得到的结果如图7所示。

图6 选取花萼的长和宽作为特征分类图

图7 选取花萼和花瓣的长度为特征分类图

从图7中可以看到,选取不同的特征对分类器的影响显著。

3.3 决策树

决策树同时可以用来解决分类或回归问题,分别称之为分类树或回归树。其中,分类树的输出是一个标量,而回归树的一般输出为一个实数。

通常情况下,决策树利用损失函数最小的原则建立模型,然后再利用该模型进行预测。决策树学习通常包含3个阶段:特征选择、树的生成、树的修剪。

3.3.1 特征选择

建立决策树之前最重要的一步就是特征选择。如果特征是随机选择的,那么决策树的学习效率会大大降低。举例说明,银行采用决策树来解决信用卡审批问题,判断是否向某人发放信用卡可以根据其年龄、工作单位、是否有不动产、历史信贷情况等特征决定。而选择不同的特征,后续生成的决策树就会不一致,这种不一致最终会影响到决策树的分类效率。

通常在选择特征时,会考虑到两种不同的指标,分别为信息增益和信息增益比。为此需要提到信息论中的另一个十分常见的名词——熵。

熵(Entropy)是表示随机变量不确定性的度量。简单来讲,熵越大,随机变量的不确定性就越大。而特征A对于某一训练集D的信息增益g(D,A)定义为集合D的熵H(D)与特征A在给定条件下D的熵H(D/A)之差。

简单来讲,每一个特征针对训练数据集的前后信息变化的影响是不一样的,信息增益越大,即代表这种影响越大,而影响越大,就表明该特征更加重要。

3.3.2 生成算法

当了解信息增益的概念之后,就可以学习决策树的生成算法了。其中,最经典的就数QUINLAN提出的ID3算法,这个算法的核心理论即源于上面提到的信息增益。

ID3算法建立决策树是通过递归的方法。首先从根节点开始,为节点计算每个个体特征的信息增益,选择信息增益最大的特征作为节点特征。接下来,对特征施加判断条件以建立子节点。然后用信息增益来判断子节点,直到所有特征的信息增益很小或没有特征为止。就这样,一颗完整的决策树被一步步建立起来。

每个对象首先被视为一个簇,随后这些原子簇被合并成越来越大的簇,直到满足某个终端条件为止。

决策树算法在实际的使用过程中有两个技巧,一个是要尽量减少树的高度,这样可以减少运算的数量级。为此要把强过滤条件尽量放在顶层。另一个技巧在于减枝,减枝在同等数据规模的情况下可以大幅减少运算次数。为了达到这个目的,在通常情况下,可以把复杂逻辑的判断尽量放在第一步去运算。

除了从信息增益演化而来的ID3算法,还有一种常见的算法叫C4.5。C4.5算法同样由QUINLAN发明,但它使用了信息增益比来选择特征,这被看成是ID3算法的一种改进。

D3和C4.5算法简单高效,但是他们均存在一个缺点,那就是用“完美去造就了另一个不完美”。这两个算法从信息增益和信息增益比开始,对整个训练集进行的分类,拟合出来的模型针对该训练集是非常完美的。但是,这种完美就使得整体模型的复杂度较高,而对其他数据集的预测能力就降低了。

1984年,BREIMAN提出了CART算法,使这个过程变得可以一步到位。CART算法本身就包含了决策树的生成和修剪,并且可以同时被运用到分类树和回归树。这是CART算法和ID3及C4.5算法的最大区别。

使用决策树预测鸢尾花数据集的代码较为简单,不做赘述。代码运行结果如表1所示。决策树如图8所示。

图8 决策树

表1 决策树运行结果

3.4 SVM

支持向量机(support vector machines)是一种二分类模型,定义为特征空间中间隔最大的线性分类器。SVM还包括核技巧,这使得它本质上是一个非线性分类器。

SVM的学习策略是间隔最大化,可以形式化为求解凸二次规划问题,也可等价于正则化的合页损失函数的最小化问题。SVM的学习算法是求解凸二次规划的最优化算法。

基于这个原则,SVM算法认为分类器A在性能上优于分类器B,其依据是A的分类间隔要大于B,如图9所示。

图9 分类器A、B结果图

这里涉及到一个“分类间隔”的问题,它是SVM独有的概念。如果决策面的方向保持不变,并且在移动决策面时不会发生样本错分,则在决策面的两侧会发现两个极限位置(如果超过该位置,就会发生错分),如图9中虚线所示。

决策面的方向和离原决策面最近的几个样本的位置决定了虚线的位置,而位于两条平行虚线正中间的分界线,是在当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是当前最优决策面的分类间隔。显然每个方向都有一个最优决策平面可以正确地分离数据集(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),不同方向的最优决策面的分类间隔是不同的,具有“最大间隔”的决策面才是SVM正在找寻的最优解。最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为“支持向量”。

SVM算法的步骤如下。

3.4.1 决策面方程

为了便于理解,以二维平面方程为例进行阐述。

给定线性方程:y=ax+b。

将原来的x轴变成x1轴,y轴变成x2轴,于是公式中的直线方程会变成:x2=ax1+b,即:ax1+(-1)x2+b。

在更高维的向量中,其决策面方程也如上式,只是参数更多。

3.4.2 分类间隔的计算

将分类间隔方程中的xi给定分类yi,如果分类正确,则满足:

假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为d,则式(4)变换为:

3.4.3 约束条件

引入分类间隔后,将约束条件描述为:

把类别标签yi和两个不等式左边相乘,形成SVM统一的表述:

限于篇幅,SVM最优化问题的求解我们不过多深入研究,在实际的应用中,不同的分类器和最优化方法对结果会有较大的影响。利用SVM对鸢尾花数据进行分类后,其展示结果如图10所示。

图10 SVM对鸢尾花数据分类结果图

3.5 随机森林、Boosting和PCA

3.5.1 随机森林

严格来讲,随机森林不是一种算法,而是一种方法。随机森林通过以下算法来构建每棵树:①训练样本的个数用N来表示,特征数目用M来表示;②输入特征数m,用于确定决策树中某个节点的决策结果,其中m应该远小于M;③从N个训练样本中,使用有放回的方式抽样N次,组成一个训练集(也就是bootstrap取样),然后使用未抽到的样本进行预测,评估其误差;④对于每个节点,随机选取m个特征,基于这些特征确定决策树中每个节点的决策,根据这m个特征,计算出最佳分裂方式;⑤每棵树最后都将完全长成而无需剪枝,在构建成一棵正常的树状分类器后,被采用的概率非常大。采用随机森林对鸢尾花数据进行分类后,其展示结果如图11所示。

图11 随机森林分类结果图

3.5.2 Boosting

Boosting与随机森林的思想类似,其思想是由迭代使用弱学习分类器组成,并将其结果加入一个最终的成强学习分类器。加入的过程中,通常根据它们的分类准确率给予不同的权重。加和弱学习者之后,数据通常会被重新加权,来强化对之前分类错误数据点的分类。

Boosting主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。其实际使用效果和随机森林类似但略好。

3.5.3 PCA

PCA是一种数据降维的算法。降维是一种对高维度特征数据预处理的方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。

降维的算法非常多,比如主成分分析(PCA)、奇异值分解(SVD)、独立成分分析(ICA)和因子分析(FA)。其中最常用的降维算法就是PCA。

PCA最重要的思想是把n维特征映射到k维,这是一个全新的正交特征,即主成分,是在原有n维特征的基础上重新构造出来的。

PCA的步骤:①定义输入向量Xn,假如要降到k维,先要将每一位特征减去各自的平均值,这一步称为去平均值(也叫去中心化);②计算协方差矩阵,即(这里除或不除样本数量n或n-1都不会影响求出的特征向量);③通过分解特征值的方法得到协方差矩阵的特征值和特征向量;④从大到小排序特征值,从中选出最大的k个,分别取对应的k个特征向量作为行向量,形成特征向量矩阵P;⑤将数据转换为由k个特征向量构成的新空间,即Y=PY。

将鸢尾花的特征数据降到二维,并分类,可以得到如图12所示的结果。

图12 鸢尾花特征数据降维分类结果图

3.6聚类算法和Kmeans、DBSCAN和AGNES

数据聚类算法可以分为结构性聚类和分散性聚类。结构性聚类用以前使用过的聚类器分类,分散型聚类则一次确定所有分类。结构性聚类算法可以从上至下或者从下至上地进行计算。从下至上算法从每个对象作为单独分类开始聚类,不断融合相近对象。而从上至下算法则把所有对象作为一个整体分类,而后逐渐拆分。另外还有分布式聚类算法,这种算法是一次确定要产生的类别。分布式聚类算法也试用于从下至上的算法。基于密度的聚类算法最早为了挖掘有任意形状特性的类别。该算法把类别视为数据集中大于某阈值的一个区域,DBSCAN和OPTICS是两个典型的密度聚类算法。

3.6.1 分散性聚类(Kmeans)

Kmeans是迭代求解的聚类算法,其步骤是随机选取K个聚类中心,然后计算出每个对象与每个聚类中心的距离,把每个对象分配到离它距离最短的聚类中心。该中心和分配的对象代表一个聚类。每分配一个样本,聚类中心会根据现有的对象被重新计算。迭代这个过程直到满足某个终止条件。终止条件可以是没有对象被重新分配给不同的聚类,没有聚类中心再变化,误差平方和局部最小等。

算法流程:①选择聚类的个数k;②任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心;③对每个点确定其聚类中心点;④再计算其聚类新中心;⑤重复上述几个步骤,直到能满足收敛要求(通常确定的中心点不再改变)。Kmeans聚类前后效果如图13、14所示。

图13 原始图

图14 Kmeans聚类结果图

3.6.2 结构性聚类(层次聚类)

3.6.2.1 凝聚层次聚类:AGNES算法(自下而上)

先将每个样本对象作为一个簇,合并这些对象为越来越大的簇,直到满足某个终止条件。

3.6.2.2 分裂层次聚类:DIANA算法(自上而下)

首先把所有的样本对象放到一个簇中,逐步细分成更小的簇,直至满足某个终止条件。

演示代码采用AGNES算法聚类鸢尾花数据。运行结果如下。

各个簇的样本数目:

聚类结果:

AGNES算法聚类结果如图15所示。

图15 AGNES算法聚类结果图

3.6.3 密度聚类与DBSCAN算法

需要两个参数:ε(eps)和形成高密度区域所需要的最少点数(minPts)。

它由任意一个未被访问的点开始,探索该点的ε-邻域,如果ε-邻域内有足够的点,则建立新的聚类,否则该点被标签为杂音。注意之后该点可能被发现在其他点的ε-邻域,如果该ε-邻域有足够的点,届时这个点会被加入到该聚类中。DBScan算法的程序运行结果如图16所示。

图16 DBScan算法结果图

3.7 神经网络、深度学习及其他

谈到人工智能,不得不谈到人工神经网络(artificial neural networks,ANN)。它出现于1940年之后,是由许多可调的神经元连接权重组成,具有大规模并行处理、分布式信息存储以及良好的自组织自学习能力,广泛应用于信息处理、模式识别、智能控制和系统建模等领域。

BP(Back Propagation)神经网络是一种按误差逆传播算法训练的多层前馈网络。BP的基本思想是:信号正向传播,误差反向传播。它适合用在小型分层的神经网络中。鸢尾花用三层BP神经网络的运行结果显示,对鸢尾花种类的识别正确率达到了100%。

本文使用鸢尾花的数据集对几类人工智能算法做了概要的介绍。介于篇幅,对更深层次的计算技巧和算法发展没有深入探索。这些算法当然不仅仅用于分析数据,而是可以更深层次地用在包含人工智能在内的各类计算机领域或数据领域。谨以本文供读者参考。

猜你喜欢

鸢尾花决策树增益
“增益”还是“损耗”?挑战性工作要求对工作−家庭增益的“双刃剑”影响*
有源环路低通中运放带宽对相噪的影响
基于增益调度与光滑切换的倾转旋翼机最优控制
翩翩若飞鸢尾花
臆想症
鸢尾花为什么会成为法国的国花?
简述一种基于C4.5的随机决策树集成分类算法设计
宽频带增益放大器的设计与测试
鸢尾花
决策树学习的剪枝方法