当前位置 > 首页 > 学员原创 > 难道鸢尾花(iris)的样本出现了“变异”?

难道鸢尾花(iris)的样本出现了“变异”?

来源:CPDA数据分析师学习网 | 时间:2019-01-22 | 作者:数据分析学习网

微信图片_20190122172919

 

很多人在学习机器学习,面对分类问题来实操算法时,往往会使用一个经典的植物样本——鸢尾花(iris)入手。不过笔者最近在研究样本的异常值时,图方便也使用了鸢尾花这个经典样本。不过随着研究的深入,笔者却发现一处值得探讨的地方。

 

笔者从R里面直接调出了150个鸢尾花(iris)样本的数据集。大家都知道这个鸢尾花样本数据集一共分成3个Species(品种):setosa、versicolor、和virginica。并且每一朵鸢尾花有4个维度的特征:Sepal.Length(萼片长度),Sepal.Width(萼片宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)。

 

首先,笔者采用精度较低的聚类分析,强制将所有的样本按照3个类别进行分类。分类的方法经过若干次尝试,效果最好的是采用“欧式几何距离”作为聚类的方法,用原始数据,不做变化。

 

PS: 在这里可能有人会问我,为啥你不用一些高级点儿的分类算法呢?说实话我也不知道为啥会首先选择这种低精度的方法,可能一开始这就是个错误吧。不过自我安慰一下的是,世界上好多发明或创造,也是从一些错误中深入研究从而取得的成果。比方说青霉素吧。

 

这样分类的结果就是,3个品种中,setosa、versicolor这2个品种100%识别准确,而virginica的准确率则有72%,也就是有14个样本被分错类。

 

换做平常可能一般人就直接改用更高级的一些算法了招呼鸢尾花了,但我却发现这些分类错误的样本有一些诡异的地方。

 

下面的表格,是笔者将14个分错的样本单独提取了出来,展示如下:

 

样本编号 萼片长度 萼片宽度 花瓣长度 花瓣宽度 原品种 聚类算法识别的品种 判别
102 5.8 2.7 5.1 1.9 virginica versicolor 不一致
107 4.9 2.5 4.5 1.7 virginica versicolor 不一致
114 5.7 2.5 5 2 virginica versicolor 不一致
115 5.8 2.8 5.1 2.4 virginica versicolor 不一致
120 6 2.2 5 1.5 virginica versicolor 不一致
122 5.6 2.8 4.9 2 virginica versicolor 不一致
124 6.3 2.7 4.9 1.8 virginica versicolor 不一致
127 6.2 2.8 4.8 1.8 virginica versicolor 不一致
128 6.1 3 4.9 1.8 virginica versicolor 不一致
134 6.3 2.8 5.1 1.5 virginica versicolor 不一致
139 6 3 4.8 1.8 virginica versicolor 不一致
143 5.8 2.7 5.1 1.9 virginica versicolor 不一致
147 6.3 2.5 5 1.9 virginica versicolor 不一致
150 5.9 3 5.1 1.8 virginica versicolor 不一致

 

大家发现一个特点没有,就是这14个样本都从virginica错分成了versicolor。

 

巧合吗?

 

于是这个特点激起了我的好奇心,于是笔者开始继续深入的去探索。

 

我们首先观察下这3个品种和14个分错的品种的一些均值和变异指标,看完后笔者不禁的大呼一声,有戏!

 

品种 萼片长度均值 萼片宽度均值 花瓣长度均值 花瓣宽度均值
setosa 5.01 3.43 1.46 0.25
Versicolor 5.94 2.77 4.26 1.33
Virginica(准确分类) 6.85 3.08 5.79 2.10
Virginica(错误分类) 5.91 2.71 4.95 1.84

 

通过上表,大家发现没有,不同的品种的鸢尾花它的萼片长度、宽度以及花瓣的长度、宽度都是有着显著不同的。因为它们的均值在每个品种看来都差异比较大!

 

但是仔细观察一下我们会发现,错误分类的那14朵样本很诡异,不仅明显和准确分类的样本相比要小一圈,而且它们却和Versicolor这个品种很接近!为了排除干扰,笔者将这两个品种放在一起做个比较。

 

品种 萼片长度均值 萼片宽度均值 花瓣长度均值 花瓣宽度均值
Versicolor 5.94 2.77 4.26 1.33
Virginica(错误分类) 5.91 2.71 4.95 1.84

 

真是不比不知道,一比吓一跳。

 

为了排除偶然的个别样本对均值扰动产生影响,我们再来看看这些样本的变异情况。

 

品种 萼片长度标准差 萼片宽度标准差 花瓣长度标准差 花瓣宽度标准差
setosa 0.35 0.38 0.17 0.11
Versicolor 0.52 0.31 0.47 0.20
Virginica(准确分类) 0.51 0.30 0.46 0.26
Virginica(错误分类) 0.37 0.23 0.17 0.22

 

首先我们看所有品种的标准差,无论是否分类错误。

 

我们看到这些品种的样本标准差都很小,几乎都是均值的0.1倍,也就是说大家的变异系数几乎都差不多是0.1。

根据先验的经验,变异系数如果>0.3,那么说明样本离散程度都比较大。

 

而几乎所有的品种的变异系数都几乎在0.1这个水平,有的甚至才0.05不到,那说明每种品种的指标都比较稳定啊!

 

因此笔者不由的产生一组假想或猜想:

 

猜想1鸢尾花的样本集中,有可能那14朵Virginica样本实际上就是摘错了或标记错了。它们本来就应该属于Versicolor这个品种。

 

猜想2有可能那14朵Virginica实际上是产生了一些细微的变异,或者干脆说就是一个virginica的子品种。

 

首先针对第1个猜想,笔者也查找过Virginica和Versicolor的照片,大家看看是不是长得比较像啊。

说实话,光从外表上看,就单独看着2朵花,仔细看还是可以看出区别的。但是如果你站在一堆花丛里,如果这2种花种在一起的话,估计就会有些难区分了。又或者说摘这些花的时间是在清晨或傍晚光线不足的情况下也有可能。

 

你可能会想,如果这2个品种是分开2垄地种的呢,不就摘的时候不会分错了吗?

 

这也不一定。

 

因为如果2垄地相隔的比较近,风一吹的话有可能种子就从这个品种的花地里吹到了那一个品种的花地里;又或者小动物例如鸟类的排泄物刚好落在了另一个品种的花地的话,这样一来,在2垄地相邻的边界并相互渗透一定的宽度带内,会存在着2个品种混种的情况。

 

对于猜想2,笔者则是这么认为的。

 

我们首先看均值和标准差对比:

 

品种 萼片长度均值 萼片宽度均值 花瓣长度均值 花瓣宽度均值
Virginica(准确分类) 6.85 3.08 5.79 2.10
Virginica(错误分类) 5.91 2.71 4.95 1.84
品种 萼片长度标准差 萼片宽度标准差 花瓣长度标准差 花瓣宽度标准差
Virginica(准确分类) 0.51 0.30 0.46 0.26
Virginica(错误分类) 0.37 0.23 0.17 0.22

 

虽然说这2个品种均值差异大,但是对比标准差(也就是最后2行)明显的那14个Virginica错误分类的样本的尺寸变化都比较小。

 

尺寸变化小说明啥,说明的是它们的生长特点很集中。

 

打个比方,如果说同样的伙食费标准下,同样一个地方生长的人,有的人从小到大经常晒太阳和锻炼身体,因此身高普遍比较高比较壮,而且一看精神气就很飒爽;有的人从小不爱运动并且整天宅在家里,因此个子相对矮并且比较瘦弱,整个人看上去都比较萎靡。这个看上去“都比较强壮、飒爽”或“都比较瘦弱、萎靡”,就是特点很集中的意思。

 

回到鸢尾花的样本,它们的指标均值不同而且变化小,说明那14朵样本可能在生长环境、种子质量都让这些花产生了明显的变异,甚至有可能品种上是2个不同的品种。在此笔者暂且将之命名为Virginica II品种。这就好比广东人和广西人,地理位置虽然离得近,但是还是样貌和体格上有些差异。

 

那怎么样来证明呢?

 

其实没见过实物,咱也不懂DNA分析技术,就真没办法通过严格的生物学知识进行证明。因此只好应用统计推断技术了。

 

首先,我们采用以下t检验,和非参数检验,看看这2个品种Virginica和Virginica II是否存在显著的统计学差异。

 

结果如下:

 

2个独立样本的t检验
 H0:Virginica和Virginica II的4个指标均值相等
检验指标及不同的假设 t Sig. (2-tailed)
萼片长度均值 E等方差假设 -6.330 .000
E非等方差假设 -7.257 .000
萼片宽度均值 E等方差假设 -4.079 .000
E非等方差假设 -4.586 .000
花瓣长度均值 E等方差假设 -6.552 .000
E非等方差假设 -9.339 .000
花瓣宽度均值 E等方差假设 -3.207 .002
E非等方差假设 -3.462 .002

 

从均值的检验来看,这2个品种在4个指标上还是拒绝原假设,不能认为它们是一样的。于是我们再使用非参数检验看看它们之间的概率分布是否来自于不同的正态总体

 

序号 原假设 检验方法 Sig 判断
1 萼片长度在2个品种间的概率分布是相同的 Kolmogorov-Smirnov  Test 0.000 拒绝原假设
2 萼片宽度在2个品种间的概率分布是相同的 0.003
3 花瓣长度在2个品种间的概率分布是相同的 0.000
4 花瓣宽度在2个品种间的概率分布是相同的 0.006

 

我们通过上表就可以发现这2个品种Virginica和Virginica II是来自不同的正态总体,换句大白话来说,也就是支持第2种猜想。这个变异可能是环境所致,也可能是种子的原因,也可能是栽种的过程有问题吧。

 

其实,针对这个猜想,笔者的倾向性更高。因为后来笔者使用了精度比较高的SVM分类算法,发现这2类品种分类效果实在不错,准确率为99%!

 

笔者通过R语言的kernlab包,Virginica和Virginica II分别作了标签之后混在一起,抽取了35个样本作为训练集,剩余15个样本作为测试集;采用“rbfdot”径向基函数作为核函数,其他参数例如惩罚系数、标准化转换……均采用默认值。

 

也就是说还没有开展大面积调参的前提下,分类的准确率就达到了99%,说明Virginica和Virginica II确实存在着品种的边界。

 

即15个测试集中,只有1个分错了类。

 

不仅如此

 

笔者将Versicolor、Virginica和Virginica II这100个样本全部混在一起,也就是3个标签,抽取其中35个作为测试集。还是相同的设置下,分类的准确率达到了92%,也就是说只有3个样本分错了。而且这3个分错的样本是Versicolor和Virginica II相互分错,笔者估计可能是参数没有调优,或者说可能存在假设1的情况。

 

综合以上的分析,笔者抛砖引玉,这个经典的鸢尾花数据样本,还真可能存在品种变异的可能哦。

 

你怎么看?