码迷,mamicode.com
首页 > 其他好文 > 详细

维数诅咒

时间:2015-05-21 22:45:53      阅读:3540      评论:0      收藏:0      [点我收藏+]

标签:分类器   识别   维数诅咒   

介绍

在这篇文章中,我们将讨论所谓的“维数的诅咒”,并解释为什么在设计分类器时它是很重要的。以下各节我会提供这个概念直观的解释,并用一个由于维数灾难导致的过拟合例子图解说明。

考虑这样一个例子,我们有一组图像,其中每个表示猫或狗。我们想创建一个分类器,它能够自动识别狗和猫。要做到这一点,我们首先需要考虑每个对象类的描述,该描述可以用数字来表示。这样的数学算法,即分类器,可以用这些数字来识别对象。例如,我们可以认为猫和狗有不同的颜色。区分这两个类的一种可能描述可以由三个数字组成:平均红色,平均绿色和平均蓝色。例如,一个简单的线性分类器可以线性地结合这些特征来决定的类标签:
技术分享
但是,这三个描述颜色的数字(即特征)显然不足以获得完美的分类。因此,我们可以添加描述图像纹理的特征,例如计算X和Y方向上的平均边缘或梯度强度。我们现在有5个特征来区分狗和猫。

为了得到更为准确的分类,我们可以根据颜色或纹理直方图,统计矩等添加更多的特征。我们可以通过仔细定义几百种特征就得到完美的分类吗?这个问题的答案听起来有点违反直觉:不能!实际上,在某点后,通过加入新的特征来增加问题的维数实际上会降低我们分类的性能。通过图1展示,这通常被称为“维数的诅咒’。
技术分享
在接下来的章节中,我们会评论为什么上面是真实,以及如何避免维数的诅咒。

维数的诅咒和过拟合

在前面介绍的猫狗例子中,假设有无限个猫和狗生活在我们这个星球上。然而,由于我们的时间和处理能力是有限的,我们只能得到10张图片。那么分类的最终目标就是基于这10个训练实例来训练分类器,使得在我们不提供任何信息的前提下,它能正确地区分任何狗和猫。现在让我们使用一个简单的线性分类器,并试图获得一个完美的分类。我们可以用一个特征开始,例如图像中的平均“红”色:
技术分享
图2表明,如果只有一个特征那么无法获得完美的分类结果。因此,我们可能会决定增加特征,如图像中的平均“绿”色:
技术分享
最后,我们决定增加第三个特征,例如图像中的平均’蓝’色,得到一个三维特征空间
技术分享
在三维特征空间中,我们现在可以发现一个平面,它完全分离狗和猫。这意味着这三个特征的线性组合可以获得10个训练图像的完美分类结果:
技术分享
上面的插图表明通过增加特征的数目直到得到完美的分类结果似乎是训练一个分类器的最佳方式,而在介绍中图1所示的,我们认为这种情况并非如此。但是,注意当我们增加问题维数的时候,训练样本的密度是如何呈指数下降的。

在一维情况下(图2),10个训练实例涵盖了完整的1D特征空间,其宽度为5个单元间隔。因此,在一维情况下,样本密度为10/5=2样本/间隔。在2D情况下(图3),我们仍然有10个训练实例,现在它用5×5= 25个单位正方形面积涵盖了2D的特征空间。因此,在二维情况下,样本密度为10/25= 0.4样本/间隔。最后,在3D的情况下,10个样本覆盖了5×5×5=125个单位立方体特征空间体积。因此,在3D的情况下,样本密度为10/125= 0.08样本/间隔。

如果我们不断增加特征,特征空间的维数也在增长,并变得越来越稀疏。由于这种稀疏性,找到一个可分离的超平面会变得非常容易,因为当特征的数目变得无限大时,训练样本位于最好超平面反面的可能性变得无限小。但是,如果我们将高维的分类结果映射到低维空间,与此方法相关联的严重问题就凸显出来:
技术分享

图6展示了3D分类结果投影到二维特征空间的情况。在三维空间中数据是线性可分的,但在一个较低维的特征空间中情况并非如此。事实上,加入第三个维度来获得完美的分类结果,仅仅相当于在低维特征空间中使用复杂的非线性分类器。结果,分类器学习具体实例的外观和我们训练数据集的特例。正因为如此,所产生的分类将无法处理真实世界为看到的无数猫狗数据,他们往往不遵守这些特例。

这个概念被称过拟合,是维数诅咒的直接结果。图7示出了只用2个特征而不是3个来训练分类器得到的结果:
技术分享

虽然图7所示的决策边界线性分类器似乎比图5中非线性分类要糟,但这个分类器对未看见的数据能产生更好的结果,因为它没有学习我们训练数据中的例外。换句话说,通过使用较少的特征,避免了维数诅咒,以至于分类器没有过度拟合训练数据。

图8用不同的方式图解上面的内容。比方说,我们只用一个特征(其取值范围为0到1)来训练分类器。训练这个特征对每个猫和狗是唯一的。如果我们希望我们的训练数据覆盖范围内的20%,则所需的训练数据量是猫,狗的完整量的20%。现在,如果我们添加另一个特征,从而产生二维特征空间,事情发生了变化;为了覆盖二维特征空间的20%,我们需要在每个维度(0.45^2=0.2)上获得猫狗完整量的45%。在3D情况下,这会变得更糟:为了覆盖三维特征范围的20%,在每个维度上(0.58^ 3= 0.2)就需要获得完整量的58%。
技术分享
换句话说,如果可用训练数据量是固定的,那么如果我们不断增加维数过拟合就会发生。另一方面,如果我们继续增加维数,训练数据量需要成指数增长以保持相同的覆盖范围从而避免过拟合。

在上面的例子中,我们表明维数的诅咒引出了训练数据的稀疏。特征使用的越多,数据就会变得更稀疏,以至于分类器参数(即它的决策边界)的精确估计变得更加困难。另一个维数诅咒的影响是,这个稀疏在搜索空间上不是均匀分布的。事实上,围绕原点(该超立方体的中心)的数据比搜索空间角落的数据更稀疏。理解如下:

试想一下,一个单位正方形表示2D特征空间。特征空间的均值是这个单位正方形的中心,离中心单位长度的所有点是一个内接圆。不属于单位圆内的训练样本更接近搜索空间的角落。这些样品比较难分类,因为它们的特征值有很大不同(例如,单位正方形的互相对立的样本)。因此,如果大部分样本属于图9所示的单位圆内,那么分类是比较容易的:
技术分享

现在一个有趣的问题是当我们增加特征空间的维数时,圆(超球面)的体积如何变化。维数d上单位超立方体的体积是1^ d=1。维数d上的半径为0.5的内接超球体积可以计算为:
技术分享
图10显示了当维数增加时,这种超球体积如何变化
技术分享
这表明,当维数趋于无限时超球面的体积趋于零,而周围超立方体的体积保持恒定。这令人惊讶和相当反直觉的观察部分解释了分类中和维度诅咒相关的问题:在高维空间中,大部分训练数据驻留超立方体(定义特征空间)角落。如前面所述,特征空间角落的实例比超球重心周围的实例更难分类。这示于图11,其中显示了一个二维单位正方形,一个三维单位立方体和8D超立方体(有2^8=256个角落)的可视化:
技术分享
对于一个8维超立方体,约98%的数据集中在它256个角落。结果是,当特征空间的维数趋向无穷大时,从采样点到质心之间的最小和最大欧几里得距离的差别率趋于零,设置最小距离也都趋于零:
技术分享
因此,距离测量开始失去其衡量高维空间相异的有效性。由于分类取决于这些距离测量(如欧氏距离,马氏距离,曼哈顿距离),所以分类在低维空间(即较少的特种来描述所关心的对象)更加容易。同样地,高斯似然变得在高维空间变得扁平,使得最小和最大似然之间的差距以及最小似然本身趋向于零。

如何避免维数诅咒?

图1表明,当问题的维数变得比较大时,分类器的性能降低。接下来的问题是“太大“指的是多大,如何避免过拟合。遗憾的是没有固定的规则来确定分类中应该有多少特征。事实上,这取决于可用训练数据的数量,决策边界的复杂性以及所使用分类器的类型。

如果可以获得训练样本的理论无限量,那么维数的诅咒将被终结,我们可以简单地用无限数量的特征来获得完美的分类。训练数据越少,使用的特征越少。如果N个训练样本足够覆盖一维特征空间,那么还需要N^2个样本来覆盖具有相同密度的二维特征空间,三维特征空间需要N^3个样本。换句话说,所需训练实例的数目与所用的维数呈指数增长。

此外,倾向于非常精确的非线性决策边界(例如神经网络,KNN分类器,决策树)的分类器泛化不是很好,很容易发生过拟合。因此,当实用这些分类器时,维数应该保持的比较低。如果一个分类器泛化比较容易(例如朴素贝叶斯,线性分类器),那么所用特征的数量可以更高,因为该分类器本身的表现力不够。图6表明,在高维空间中使用简单的分类器模型对应于低维空间中使用复杂的分类器模型。

因此,过拟合既在高度维空间中估计相对少的参数时发生,也在低维空间中估计很多参数时发生。作为一个例子,考虑一个高斯密度函数,它的均值和协方差矩阵需要参数化。比方说,我们在三维空间进行操作,这样的话协方差矩阵是一个3×3的对称矩阵,它由6个独特的元素组成(3个方差在对角线上,3个协方差)。连同分布的三维平均,这意味着我们需要估计基于训练数据的9个参数,以获得代表我们数据似然的高斯密度。在一维情况下,只有2个参数需要估计(均值和方差),而在二维的情况下需要5个参数(2D均值,两个方差和一个协方差)。我们再次看到,要估计的参数数量增长量是维数的数目平方。

在早期的文章中,我们发现如果要估计的参数数量增加(并且如果估计的偏置和训练数据的数量保持恒定)那么参数估计的方差随之增大。这意味着如果维数增加,我们参数估计的质量会由于方差的增加而下降。分类器方差的增加对应于过拟合。

另一个有趣的问题是应该使用那些特征。给定一组N个特征;我们该如何选择M个最优特征子集使得M

结论

在这篇文章中,我们讨论了特征选择,特征提取和交叉验证的重要性,以避免由于维数诅咒产生过拟合。用一个简单的例子,我们评价了分类器训练中维数诅咒的一个重要影响,即过度拟合。

维数诅咒

标签:分类器   识别   维数诅咒   

原文地址:http://blog.csdn.net/u010182633/article/details/45895493

(0)
(4)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!