1. 维数灾难
随着维度的增加,分类器性能逐步上升,到达某点之后,其性能便逐渐下降。
有⼀系列的图片,每张图片的内容可能是猫也可能是狗;我们需要构造⼀个分类器能够对猫、狗自
动的分类。首先,要寻找到⼀些能够描述猫和狗的特征,这样我们的分类算法就可以利用这些特征
去识别物体。猫和狗的皮毛颜色可能是⼀个很好的特征,考虑到红绿蓝构成图像的三基色,因此用
图片三基色各自的平均值称得上方便直观。这样就有了⼀个简单的Fisher分类器:
python
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)来设计
我们的分类器: 也许分类器准确率依然无法达到要求,加入更多的特征,比如颜色、纹理的统计
信息等等,如此下去,可能会得到上百个特征。那是不是我们的分类器性能会随着特征数量的增加
而逐步提高呢?答案也许有些让⼈沮丧,事实上,当特征数量达到⼀定规模后,分类器的性能是在
下降的。 随着维度(特征数量)的增加,分类器的性能却下降了 。
假设猫和狗图片的数量是有限的(样本数量总是有限的),假设有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。如果继续增加特征数量,随着维度的增加,
样本将变得越来越稀疏,在这种情况下,也更容易找到⼀个超平⾯将目标分开。然而,如果我们将
高维空间向低维空间投影,高维空间隐藏的问题将会显现出来:过多的特征导致的过拟合现象:训
练集上表现良好,但是对新数据缺乏泛化能力。
高维空间训练形成的线性分类器,相当于在低维空间的⼀个复杂的非线性分类器,这种分类器过多
的强调了训练集的准确率甚至于对⼀些错误/异常的数据也进行了学习,而正确的数据却无法覆盖
整个特征空间。为此,这样得到的分类器在对新数据进行预测时将会出现错误。这种现象称之为过
拟合,同时也是维灾难的直接体现。
用2个特征代替三个特征进行分类器的学习,尽管训练集上准确率不如3维下的高。
简单的线性分类器在训练数据上的表现不如非线性分类器,但由于线性分类器的学习过程中对噪声
没有对非线性分类器敏感,因此对新数据具备更优的泛化能力。换句话说,通过使用更少的特征,
避免了维数灾难的发生(也即避免了高维情况下的过拟合) 由于高维而带来的数据稀疏性问题:假设
有⼀个特征,它的取值范围D在0到1之间均匀分布,并且对狗和猫来说其值都是唯⼀的,我们现在
利用这个特征来设计分类器。如果我们的训练数据覆盖了取值范围的20%(e.g 0到0.2),那么所使
用的训练数据就占总样本量的20%。上升到⼆维情况下,覆盖⼆维特征空间20%的面积,则需要在
每个维度上取得45%的取值范围。在三维情况下,要覆盖特征空间20%的体积,则需要在每个维度
上取得58%的取值范围...在维度接近⼀定程度时,要取得同样的训练样本数量,则几乎要在每个维
度上取得接近100%的取值范围,或者增加总样本数量,但样本数量也总是有限的。 如果⼀直增加
特征维数,由于样本分布越来越稀疏,如果要避免过拟合的出现,就不得不持续增加样本数量。
数据在高维空间的中心比在边缘区域具备更⼤的稀疏性,数据更倾向于分布在空间的边缘区域:
不属于单位圆的训练样本比搜索空间的中心更接近搜索空间的角点。这些样本很难分类,因为它们
的特征值差别很大(例如,单位正方形的对角的样本)。
⼀个有趣的问题是,当我们增加特征空间的维度时,圆(超球面)的体积如何相对于正方形(超立
方体)的体积发生变化。尺寸d的单位超立⽅体的体积总是1 ^ d = 1。尺寸d和半径0.5的内切超球
体的体积可以计算为:
在高维空间中,大多数训练数据驻留在定义特征空间的超立方体的角落中。如前所述,特征空间角
落中的实例比围绕超球体质心的实例难以分类。
在高维空间中,大多数训练数据驻留在定义特征空间的超立方体的角落中。如前所述,特征空间角
落中的实例比围绕超球体质心的实例难以分类:
事实证明,许多事物在高维空间中表现得非常不同。 例如,如果你选择⼀个单位平方(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个样本。换句话说,所
需的训练实例数量随着使用的维度数量呈指数增长。