机器学习---维数灾难

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)来设计

我们的分类器: 也许分类器准确率依然无法达到要求,加入更多的特征,比如颜色、纹理的统计

信息等等,如此下去,可能会得到上百个特征。那是不是我们的分类器性能会随着特征数量的增加

而逐步提高呢?答案也许有些让⼈沮丧,事实上,当特征数量达到⼀定规模后,分类器的性能是在

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

假设猫和狗图片的数量是有限的(样本数量总是有限的),假设有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个样本。换句话说,所

需的训练实例数量随着使用的维度数量呈指数增长。 

相关推荐

  1. 机器学习】数据降

    2023-12-28 16:52:04       50 阅读
  2. 组的学习

    2023-12-28 16:52:04       33 阅读
  3. 机器学习-PCA降【手撕】

    2023-12-28 16:52:04       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 16:52:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 16:52:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 16:52:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 16:52:04       20 阅读

热门阅读

  1. k8s 的YAML文件详解

    2023-12-28 16:52:04       31 阅读
  2. TCP与UDP是流式传输协议吗?

    2023-12-28 16:52:04       33 阅读
  3. 2974. 最小数字游戏 23.12.23(二)

    2023-12-28 16:52:04       30 阅读
  4. 力扣面试经典题之哈希表

    2023-12-28 16:52:04       42 阅读
  5. Leetcod面试经典150题刷题记录 —— 区间篇

    2023-12-28 16:52:04       38 阅读
  6. js如何判断一个字符串是否为json格式

    2023-12-28 16:52:04       37 阅读
  7. 使用Aspose.Words合并表格的单元格

    2023-12-28 16:52:04       33 阅读
  8. 知识笔记(五十九)———css 美化滚动条样式

    2023-12-28 16:52:04       32 阅读
  9. 【CSS】布局方式梳理和总结

    2023-12-28 16:52:04       35 阅读
  10. Golang学习之路一三基本数据类型

    2023-12-28 16:52:04       33 阅读
  11. Ubuntu安装MongoDB

    2023-12-28 16:52:04       36 阅读
  12. Sass(Scss)、Less的区别与选择 + 基本使用

    2023-12-28 16:52:04       34 阅读