全部文章

维灾难

1 什么是维灾难

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

有⼀系列的图⽚,每张图⽚的内容可能是猫也可能是狗;我们需要构造⼀个分类器能够对猫、狗⾃动的分类。⾸先,要寻找到⼀些能够描述猫和狗的特征,这样我们的分类算法就可以利⽤这些特征去识别物体。猫和狗的⽪⽑颜⾊可能是⼀个很好的特征,考虑到红绿蓝构成图像的三基⾊,因此⽤图⽚三基⾊各⾃的平均值称得上⽅便直观。这样就有了⼀个简单的Fisher分类器:

If 0.5*red + 0.3*green + 0.2*blue > 0.6 : return cat;

else return dog;

使⽤颜⾊特征可能⽆法得到⼀个⾜够准确的分类器,如果是这样的话,我们不妨加⼊⼀些诸如图像纹理(图像灰度值在其X、Y⽅向的导数dx、dy),就有5个特征(Red、Blue、Green、dx、dy)来设计我们的分类器:

也许分类器准确率依然⽆法达到要求,加⼊更多的特征,⽐如颜⾊、纹理的统计信息等等,如此下去,可能会得到上百个特征。那是不是我们的分类器性能会随着特征数量的增加⽽逐步提⾼呢?答案也许有些让⼈沮丧,事实上,当特征数量达到⼀定规模后,分类器的性能是在下降的。

随着维度(特征数量)的增加,分类器的性能却下降了

2 维数灾难与过拟合

我们假设猫和狗图⽚的数量是有限的(样本数量总是有限的),假设有10张图⽚,接下来我们就⽤这仅有的10张图⽚来训练我们的分类器。

增加⼀个特征,⽐如绿⾊,这样特征维数扩展到了2维:

增加⼀个特征后,我们依然⽆法找到⼀条简单的直线将它们有效分类

再增加⼀个特征,⽐如蓝⾊,扩展到3维特征空间:

在3维特征空间中,我们很容易找到⼀个分类平⾯,能够在训练集上有效的将猫和狗进⾏分类:在⾼维空间中,我们似乎能得到更优的分类器性能。

从1维到3维,给我们的感觉是:维数越⾼,分类性能越优。然⽽,维数过⾼将导致⼀定的问题:在⼀维特征空间下,我们假设⼀个维度的宽度为5个单位,这样样本密度为10/5=2;在2维特征空间下,10个样本所分布的空间⼤⼩25,这样样本密度为10/25=0.4;在3维特征空间下,10个样本分布的空间⼤⼩为125,样本密度就为10/125=0.08.

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

过多的特征导致的过拟合现象:训练集上表现良好,但是对新数据缺乏泛化能⼒。

⾼维空间训练形成的线性分类器,相当于在低维空间的⼀个复杂的⾮线性分类器,这种分类器过多的强调了训练集的准确率甚⾄于对⼀些错误/异常的数据也进⾏了学习,⽽正确的数据却⽆法覆盖整个特征空间。为此,这样得到的分类器在对新数据进⾏预测时将会出现错误。这种现象称之为过拟合,同时也是维灾难的直接体现。

简单的线性分类器在训练数据上的表现不如⾮线性分类器,但由于线性分类器的学习过程中对噪声没有对⾮线性分类器敏感,因此对新数据具备更优的泛化能⼒。换句话说,通过使⽤更少的特征,避免了维数灾难的发⽣(也即避免了⾼维情况下的过拟合)

由于⾼维⽽带来的数据稀疏性问题:假设有⼀个特征,它的取值范围D在0到1之间均匀分布,并且对狗和猫来说其值都是唯⼀的,我们现在利⽤这个特征来设计分类器。如果我们的训练数据覆盖了取值范围的20%(e.g 0到0.2),那么所使⽤的训练数据就占总样本量的20%。上升到⼆维情况下,覆盖⼆维特征空间20%的⾯积,则需要在每个维度上取得45%的取值范围。在三维情况下,要覆盖特征空间20%的体积,则需要在每个维度上取得58%的取值范围...在维度接近⼀定程度时,要取得同样的训练样本数量,则⼏乎要在每个维度上取得接近100%的取值范围,或者增加总样本数量,但样本数量也总是有限的。

如果⼀直增加特征维数,由于样本分布越来越稀疏,如果要避免过拟合的出现,就不得不持续增加样本数量。

数据在⾼维空间的中⼼⽐在边缘区域具备更⼤的稀疏性,数据更倾向于分布在空间的边缘区域:

不属于单位圆的训练样本⽐搜索空间的中⼼更接近搜索空间的⻆点。这些样本很难分类,因为它们的特征值差别很⼤

(例如,单位正⽅形的对⻆的样本)。

⼀个有趣的问题是,当我们增加特征空间的维度时,圆(超球⾯)的体积如何相对于正⽅形(超⽴⽅体)的体积发⽣变化。尺⼨d的单位超⽴⽅体的体积总是1 ^ d = 1.

尺⼨d和半径0.5的内切超球体的体积可以计算为:

在⾼维空间中,⼤多数训练数据驻留在定义特征空间的超⽴⽅体的⻆落中。如前所述,特征空间⻆落中的实例⽐围绕超球体质⼼的实例难以分类。

在⾼维空间中,⼤多数训练数据驻留在定义特征空间的超⽴⽅体的⻆落中。如前所述,特征空间⻆落中的实例⽐围绕超球体质⼼的实例难以分类:

an 8D hypercube which has 2^8 = 256 corners

事实证明,许多事物在⾼维空间中表现得⾮常不同。 例如,如果你选择⼀个单位平⽅(1×1平⽅)的随机点,它将只有⼤约0.4%的机会位于⼩于0.001的边界(换句话说,随机点将沿任何维度“极端”,这是⾮常不可能的)。 但是在⼀个10000维单位超⽴⽅体(1×1×1⽴⽅体,有1万个1)中,这个概率⼤于99.999999%。 ⾼维超⽴⽅体中的⼤部分点都⾮常靠近边界。更难区分的是:如果你在⼀个单位正⽅形中随机抽取两个点,这两个点之间的距离平均约为0.52。如果在单位三维⽴⽅体中选取两个随机点,则平均距离将⼤致为0.66。但是在⼀个100万维的超⽴⽅体中随机抽取两点呢?那么平均距离将是⼤约408.25(⼤约1,000,000 / 6)!

⾮常违反直觉:当两个点位于相同的单位超⽴⽅体内时,两点如何分离?这个事实意味着⾼维数据集有可能⾮常稀疏:

⼤多数训练实例可能彼此远离。当然,这也意味着⼀个新实例可能离任何训练实例都很远,这使得预测的可信度表现得⽐在低维度数据中要来的差。训练集的维度越多,过度拟合的⻛险就越⼤

理论上讲,维度灾难的⼀个解决⽅案可能是增加训练集的⼤⼩以达到⾜够密度的训练实例。 不幸的是,在实践中,达到给定密度所需的训练实例的数量随着维度的数量呈指数增⻓。 如果只有100个特征(⽐MNIST问题少得多),那么为了使训练实例的平均值在0.1以内,需要⽐可观察宇宙中的原⼦更多的训练实例,假设它们在所有维度上均匀分布。

对于8维超⽴⽅体,⼤约98%的数据集中在其256个⻆上。结果,当特征空间的维度达到⽆穷⼤时,从采样点到质⼼的最⼩和最⼤欧⼏⾥得距离的差与最⼩距离本身之⽐趋于零:

距离测量开始失去其在⾼维空间中测量的有效性,由于分类器取决于这些距离测量,因此在较低维空间中分类通常更容易,其中较少特征⽤于描述感兴趣对象。

如果理论⽆限数量的训练样本可⽤,则维度的诅咒不适⽤,我们可以简单地使⽤⽆数个特征来获得完美的分类。训练数据的⼤⼩越⼩,应使⽤的功能就越少。如果N个训练样本⾜以覆盖单位区间⼤⼩的1D特征空间,则需要N ^ 2个样本来覆盖具有相同密度的2D特征空间,并且在3D特征空间中需要N ^ 3个样本。换句话说,所需的训练实例数量随着使⽤的 维度数量呈指数增⻓

 

posted @ 2025-05-30 16:35  指尖下的世界  阅读(17)  评论(0)    收藏  举报