维数灾难(The Curse of Dimensionality in classification)

以下文章前大部分来自:http //blog.csdn.net/zbc1090549839/article/details/38929215
译自:http//www.visiondummy.com/2014/04/curse-dimensionality-affect-classification/ 
由于其没译完所以最后一部分自己补上了

1引言

这里我们将要讨论所谓的“维数灾难”,同时结合过拟合现象来解释它在分类器学习中的重要性。

举一个分类应用的简单例子,假设我们有一系列的图片,每张图片的内容可能是猫也可能是狗;我们需要构造一个分类器能够对猫,狗自动的分类首先,要寻找到一些能够描述猫和狗的特征,这样我们的分类算法就可以利用这些特征去识别物体。猫和狗的皮毛颜色可能是一个很好的特征,考虑到红绿蓝构成图像的三基色,因此用图片三。基色各自的平均值称得上方便直观这样就有了一个简单的费希尔分类器:

If  0.5*red + 0.3*green + 0.2*blue > 0.6 : return cat;
    else return dog;
  • 1
  • 2

但是,使用颜色特征可能无法得到一个足够准确的分类器,如果是这样的话,我们不妨加入一些诸如图像纹理(图像灰度值在其X,Y方向的导数DX,DY),我们就有5个特征(红,蓝,绿,DX,DY)来设计我们的分类器了。

接下来,也许分类器准确率依然无法达到要求,我们可以加入更多的特征,比如颜色,纹理的统计信息等等,如此下去,我们也许可能会得到上百个特征。那是不是我们的分类器性能会随着特征数量的增加而逐步提高呢?答案也许有些让人沮丧,事实上,当特征数量达到一定规模后,分类器的性能是在下降的。随着维度(特征数量)的增加,分类器的性能可以用下图来描述: 

特征个数与性能关系

图1随着维度的增加,分类器性能逐步上升,到达某点之后,其性能便逐渐下降

接下来,我们简要介绍这种现象发生的原因,进一步讨论如何避免维数灾难的发生:

2维数灾难与过拟合:

在上面这个分类的例子中,我们假设猫和狗图片的数量是有限的(实际上也确实如此,样本数量总是有限的),就假设有10张图片吧,接下来我们就用这仅有的10张图片来训练我们的分类器。 
首先从一个最为简单的线性分类器开始,这里我们仅仅使用单一特征(1维),比如红色,来进行训练

这里写图片描述 
图2单一特征的分类器,在训练集上表现并不好 
接下来,我们增加一个特征,比如绿色,这样特征维数扩展到了2维:

这里写图片描述 
图3增加一个特征后,我们依然无法找到一条简单的直线将它们有效分类 
为此,我们再增加一个特征,比如蓝色,扩展到3维特征空间后: 
这里写图片描述 
图4增加一个特征形成的3维特征空间及样本分布 
在3维特征空间中,我们很容易找到一个分类平面,能够在训练集上有效的将猫和狗进行分类: 
这里写图片描述 
图5在高维空间中,我们似乎能得到更优的分类器性能

从1维到3维,给我们的感觉是:维数越高,分类性能越优。然而,在图1中,我们说维数过高将导致一定的问题:具体来说,在一维特征空间下,我们假设一个维度的宽度为5个单位,这样样本密度为10/5 = 2;在2维特征空间下,10个样本所分布的空间大小5×5 = 25,这样样本密度为10 /25=0.4;在3维特征空间下,10个样本分布的空间大小为5 * 5 * 5 = 125,样本密度就为125分之10= 0.08。

如果我们继续增加特征数量,随着维度的增加,样本将变得越来越稀疏,在这种情况下,也更容易找到一个超平面将目标分开。然而,如果我们将高维空间向低维空间投影,高维空间隐藏的问题将会显现出来:

这里写图片描述 
图6过多的特征导致的过拟合现象:训练集上表现良好,但是对新数据缺乏泛化能力

高维空间训练形成的分类器,相当于在低维空间的一个复杂的非线性分类器,这种分类器过多的强调了训练集的准确率甚至于对一些错误/异常的数据

也进行了学习,而正确的数据却无法覆盖整个特征空间。为此,这样得到的分类器在对新数据进行预测时将会出现错误。这种现象称之为过拟合,同时也是维灾难的直接体现。

下图展示了用2个特征代替三个特征进行分类器的学习: 

这里写图片描述 
图7尽管训练集上分类准确率不如3维下的高,但是具备更好的泛化能力

尽管如图7中所示,一个简单的线性分类器在训练数据上的表现不如非线性分类器,但由于线性分类器的学习过程中对噪声没有对非线性分类器敏感,因此对新数据具备更优的泛化能力。换句话说,通过使用更少的特征,避免了维数灾难的发生(也即避免了高维情况下的过拟合)

在换个角度来解释维数灾难,图8展示了由于高维而带来的数据稀疏性问题:假设有一个特征,它的取值范围d在0到1之间均匀分布,并且对狗和猫来说其值都是唯一的,我们现在利用这个特征来设计分类器。如果我们的训练数据覆盖了取值范围的20%(例如0到0.2),那么所使用的训练数据就占总样本量的20%。上升到二维情况下,覆盖二维特征空间20%的面积,则需要在每个维度上取得45%的取值范围。在三维情况下,要覆盖特征空间20%的体积,则需要在每个维度上取得58%的取值范围......在维度接近一定程度时,要取得同样的训练样本数量,则几乎要在每个维度上取得接近100%的取值范围,或者增加总样本数量,但样本数量也总是有限的。 

这里写图片描述
图8取得相同数量样本需要的空间大小

换句话说,如果一直增加特征维数,由于样本分布越来越稀疏,如果要避免过拟合的出现,就要以指数级别增加样本数量(以特征的维数作为指数)。

从以上的例子中可以看出,维数灾难导致训练数据变得稀疏所以带来如下问题:1)特征越多训练数据越稀疏,想要精确的估计分类器参数(分类器的决策边界)会越困难0.2)维数灾难会引起特征空间中的稀疏数据不是正太分布的。事实上位于超立方体中的数据要比超立方体边角处的数据更加稀疏。下面会解释这种现象。


下面是我的翻译


假设一个单位正方形表示2D特征空间。特征空间的平均点位于单位正方形的中心,所有到正方形中心距离小于1点的点都位于以正方形中心为圆心的单位圆内。没有落在单位圆内的点更容易集中在正方形的边角处。处于边角处的点经常会被误分,因为他们的特征值变化较大,因此位于单位圆内的点更容易准确分类。 

这里写图片描述 
图9相对于单位圆内的点,位于单位圆内的点更容易分类

当特征的维数增加时,圆(超球)的体积相对于正方形(超立方体)的体积将如何变化哪?超立方体的体积是常数1 ^ d = 1.半径为0.5的超球体积计算公式如下 

这里写图片描述

图10表示超球的体积随特征的维度变化曲线 

这里写图片描述 
图10超球的体积随特征的维度变化曲线

从图10中可以看出当特征的纬度增大到无穷时,超球的体积变为0而超球周围的空间大小却保持不变。这种特殊现象从直观上解释了分类问题中的维数灾难现象:。在高维特征空间中,大多数样本都位于超立方体的边角部分前面也提到过,位于边缘处的样本比位于超立方体中心的样本更难本正确分类图11中展示了二维的单元正方形,3维的单位立方体,以及有2 ^ 8 = 256面的8维的超立方体中超球的体积,以及特征空间中的样本的分布。

这里写图片描述
图11随着特征维度增加样本在样本空间中的分布情况

在8维的超球中约98%的数据集中在256个拐角处。当特征空间的纬度增加到无穷大时,特征空间中的样本点到超立方体的质心处的欧式距离的差异度趋向于0 

这里写图片描述 
因此,在高维特征空间中距离度量函数开始失效高斯似然函数变得非常平坦,尾巴非常长,因为在高维空间中最大似然函数和最小似然函数之间的差异度趋近0。

3如何避免维度灾难

图1演示了当特征空间的维数增加时分类器的性能会变差问题来了,多大的特征空间的维度算大,同时如何能够避免过拟合问题。遗憾的是,并没有固定的规则规定在分类问题中应该使用多少个特征。维度灾难问题或者说过拟合问题和训练样本的数据有关

图1表示随着特征维数增加到较大时,分类器的性能会变差。问题是如何界定“较大”,同时如何避免过拟合。遗憾的是并没有固定的规则来解决这个问题。实际上这个问题与训练样本的数量,分类边界形状的复杂性,以及分类器的类型有关。

如果能获取无限多的样本,就可以从无限多的特征构造出完美的分类器。如果训练样本较少,那就要采用较少的特征训练分类器。如果Ñ个样本足以覆盖单位长度的一维空间,那么在二维和三维空间上就需要N ^ 2和N R个3个样本才能达到与一维空间相同的密度分布。即训练样本的数量和特征的维数呈指数关系。

具有非线性决策边界的分类器(如神经网络,KNN,决策树)泛化能力较差,更容易过拟合。因此应该在低维度的特征空间上使用非线性分类器。如果分类器比较简单,如朴素贝叶斯和线性分类器,则可以采用较多的特征训练分类器。图6展示了在高维空间中使用简单分类器,在低维空间使用复杂分类器。

因此,当在高维空间中估计相对较少的参数时,以及在较低维空间中估计大量参数时,都会发生过度拟合例如估计高斯概率密度函数,其参数为均值和方差。在三维空间中协方差矩阵是3X3的,它其中有6个独立的元素,对角线上的三个方差元素和上协方差元素,再加上三个均值,共9个元素,这意味这在3维空间中需要估计9个参数。而在1维空间中只要估计两个参数。在二维空间中只要估计5个参数。这再次表明,随着特征维度的增加需要估计更多,才能描述出模型的完整性。

在早先的文章中介绍了,随着估计参数的数量增加,被估计参数的方差也增加(估计参数的偏差和训练样本的数量保持不变)。这意味着,如果特征的维度增加,那么估计参数的质量会变差,因为估计的方差变大了。而分类器的方差对应于分类器的过拟合。

另外一个有趣的问题是,构建分类器时,如果选择重要的分类特征?假设有Ñ个特征,如何选择其中的中号个重要特征(M

4结论

本文中讨论了为了避免维数灾难造成的过拟合问题,以及与之相关的特征选择的重要性,特征抽取,交叉验证。并用简单的例子演示了维数灾难在分类器设计中的重要性。

猜你喜欢

转载自blog.csdn.net/zhangyingjie09/article/details/80924094