分类问题中的“维数灾难” - robotMax

在看机器学习的论文时,经常会看到有作者提到“curse of dimensionality”,中文译为“维数灾难”,这到底是一个什么样的“灾难”?本文将通过一个例子来介绍这令人讨厌的“curse of dimensionality”以及它在分类问题中的重要性。

  假设现在有一组照片,每一张照片里有一只猫或者一条狗。我们希望设计一个分类器可以自动地将照片中的动物辨别开来。为了实现这个目标,首先需要考虑如何将照片中的动物的特征用数字的形式表达出来。猫与狗的最大区别是什么?有人可能首先想到猫与狗的颜色不一样,有人则可能想到猫与狗的大小不一样。假设从颜色来辨别猫与狗,可以设计三个特征:红色的平均值,绿色的平均值和蓝色的平均值,来决定照片中的动物属于哪一个类:

1 if 0.5 * red + 0.3 * green + 0.2 * blue > 0.6:
2     return cat
3 else:
4     return dog

  但是,仅仅通过这三个特征进行分类可能无法得到一个令人满意的结果。因此,可以再增加一些特征:大小,纹理等。也许增加特征之后,分类的结果会有所提高。但是,特征是不是越多越好?

图1 过了某一个值后,分类器的性能随着维数的增加不升反降

  从图1可以看到分类器的性能随着特征个数的变化不断增加,过了某一个值后,性能不升反降。这种现象称为“维数灾难”。

  继续之前的例子。假设地球上猫和狗的数量是无限的。由于有限的时间和计算能力,我们仅仅选取了10张照片作为训练样本。我们的目的是基于这10张照片来训练一个线性分类器,使得这个线性分类器可以对剩余的猫或狗的照片进行正确分类。我们从只用一个特征来辨别猫和狗开始:

图2

  从图2可以看到,如果仅仅只有一个特征的话,猫和狗几乎是均匀分布在这条线段上,很难将10张照片线性分类。那么,增加一个特征后的情况会怎么样:

图3

  增加一个特征后,我们发现仍然无法找到一条直线将猫和狗分开。所以,考虑需要再增加一个特征:

图3

图4

  此时,我们终于找到了一个平面将猫和狗分开。需要注意的是,只有一个特征时,假设特征空间是长度为5的线段,则样本密度是10/5=2。有两个特征时,特征空间大小是5*5=25,样本密度是10/25=0.4。有三个特征时,特征空间大小是5*5*5=125,样本密度是10/125=0.08。如果继续增加特征数量,样本密度会更加稀疏,也就更容易找到一个超平面将训练样本分开。因为随着特征数量趋向于无限大,样本密度非常稀疏,训练样本被分错的可能性趋向于零。当我们将高维空间的分类结果映射到低维空间时,一个严重的问题出现了:

图5

  从图5可以看到将三维特征空间映射到二维特征空间后的结果。尽管在高维特征空间时训练样本线性可分,但是映射到低维空间后,结果正好相反。事实上,增加特征数量使得高维空间线性可分,相当于在低维空间内训练一个复杂的非线性分类器。不过,这个非线性分类器太过“聪明”,仅仅学到了一些特例。如果将其用来辨别那些未曾出现在训练样本中的测试样本时,通常结果不太理想。这其实就是我们在机器学习中学过的过拟合问题。

图6

  尽管图6所示的只采用2个特征的线性分类器分错了一些训练样本,准确率似乎没有图4的高,但是,采用2个特征的线性分类器的泛化能力比采用3个特征的线性分类器要强。因为,采用2个特征的线性分类器学习到的不只是特例,而是一个整体趋势,对于那些未曾出现过的样本也可以比较好地辨别开来。换句话说,通过减少特征数量,可以避免出现过拟合问题,从而避免“维数灾难”。

图7

  图7从另一个角度诠释了“维数灾难”。假设只有一个特征时,特征的值域是0到1,每一只猫和狗的特征值都是唯一的。如果我们希望训练样本覆盖特征值值域的20%,那么就需要猫和狗总数的20%。我们增加一个特征后,为了继续覆盖特征值值域的20%就需要猫和狗总数的45%(0.45^2=0.2)。继续增加一个特征后,需要猫和狗总数的58%(0.58^3=0.2)。随着特征数量的增加,为了覆盖特征值值域的20%,就需要更多的训练样本。如果没有足够的训练样本,就可能会出现过拟合问题。

  通过上述例子,我们可以看到特征数量越多,训练样本就会越稀疏,分类器的参数估计就会越不准确,更加容易出现过拟合问题。“维数灾难”的另一个影响是训练样本的稀疏性并不是均匀分布的。处于中心位置的训练样本比四周的训练样本更加稀疏。

图8

  假设有一个二维特征空间,如图8所示的矩形,在矩形内部有一个内切的圆形。由于越接近圆心的样本越稀疏,因此,相比于圆形内的样本,那些位于矩形四角的样本更加难以分类。那么,随着特征数量的增加,圆形的面积会不会变化呢?这里我们假设超立方体(hypercube)的边长d=1,那么计算半径为0.5的超球面(hypersphere)的体积(volume)的公式为:

公式1

图9

  从图9可以看出随着特征数量的增加,超球面的体积逐渐减小直至趋向于零,然而超立方体的体积却不变。这个结果有点出乎意料,但部分说明了分类问题中的“维数灾难”:在高维特征空间中,大多数的训练样本位于超立方体的角落。

图10

  图10显示了不同维度下,样本的分布情况。在8维特征空间中,共有2^8=256个角落,而98%的样本分布在这些角落。随着维度的不断增加,公式2将趋向于0,其中dist_max和dist_min分别表示样本到中心的最大与最小距离。

公式2

  因此,在高维特征空间中对于样本距离的度量失去意义。由于分类器基本都依赖于如Euclidean距离,Manhattan距离等,所以在特征数量过大时,分类器的性能就会出现下降。

  所以,我们如何避免“维数灾难”?图1显示了分类器的性能随着特征个数的变化不断增加,过了某一个值后,性能不升反降。这里的某一个值到底是多少呢?目前,还没有方法来确定分类问题中的这个阈值是多少,这依赖于训练样本的数量,决策边界的复杂性以及分类器的类型。理论上,如果训练样本的数量无限大,那么就不会存在“维数灾难”,我们可以采用任意多的特征来训练分类器。事实上,训练样本的数量是有限的,所以不应该采用过多的特征。此外,那些需要精确的非线性决策边界的分类器,比如neural network,knn,decision trees等的泛化能力往往并不是很好,更容易发生过拟合问题。因此,在设计这些分类器时应当慎重考虑特征的数量。相反,那些泛化能力较好的分类器,比如naive Bayesian,linear classifier等,可以适当增加特征的数量。

  如果给定了N个特征,我们该如何从中选出M个最优的特征?最简单粗暴的方法是尝试所有特征的组合,从中挑出M个最优的特征。事实上,这是非常花时间的,或者说不可行的。其实,已经有许多特征选择算法(feature selection algorithms)来帮助我们确定特征的数量以及选择特征。此外,还有许多特征抽取方法(feature extraction methods),比如PCA等。交叉验证(cross-validation)也常常被用于检测与避免过拟合问题。

参考资料:

[1] Vincent Spruyt. The Curse of Dimensionality in classification. Computer vision for dummies. 2014. [Link]

转载于:https://www.cnblogs.com/zhehan54/p/6589213.html

分类问题中的“维数灾难” - robotMax相关推荐

  1. 维数灾难:都是孤独惹的祸

    全文共2433字,预计学习时长7分钟 图源:unsplash 维数灾难究竟是什么?除了是机器学习术语中让人闻风丧胆的主要实例外,还包括特征数量的增加对数据集的影响.简言之,维数灾难全都与孤独有关. 在 ...

  2. 机器学习笔记之降维(一)维数灾难

    机器学习笔记之降维--维数灾难 引言 回顾:过拟合 维度灾难 从数值角度观察维数灾难 从几何角度观察维度灾难 示例1 示例2 引言 本节将介绍降维算法,并介绍降维算法的相关背景. 回顾:过拟合 我们在 ...

  3. 维度灾难 维数灾难 暂记

    距离度量问题 对于基于距离的模型KNN,K-means来说.需要有效的降维,或者大量数据的训练,发现数据的低维流形空间. Theorem[Beyer et al.99]:Fix ϵ\epsilonϵ ...

  4. 机器学习----维数灾难

    一.定义 ~~~~~~~~随着维度的增加,分类器性能逐步上升,到达某点之后,其性能便逐渐下降         ~~~~~~~~也许分类器准确率依然无法达到要求,加入更多的特征,比如颜色.纹理的统计信息 ...

  5. 维数灾难(from wiji)

    维数灾难(英语:curse of dimensionality,又名维度的詛咒)是一个最早由理查德·贝尔曼(Richard E. Bellman)在考虑优化问题时首次提出来的术语[1][2],用来描述 ...

  6. 深度学习近似建模,助力飞越「维数灾难」温度场

    允中 整理自 红山开源平台 量子位 报道 | 公众号 QbitAI 深度学习与飞行器设计领域交叉可为克服飞行器系统多学科设计优化的计算复杂性难题开辟一条全新途径.国防科技创新研究院无人系统技术研究中心 ...

  7. android 颜色 数组,在Android中声明维数,颜色,资源ID或其他非标准数据类型的数组?...

    我发现自己希望创建Android似乎本不支持的值的xml数组,并且正在寻找解决此问题的一些方法.当前,如果你希望在XML中声明一个值的数组,你仅限于字符串,整数和一个通用的非类型化"数组&q ...

  8. 维数灾难或者维数诅咒的含义

    高维空间数据样本具有稀疏性 举例来说,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样:而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样一单位超正方体,则需要100^1 ...

  9. 结合高斯变异和维数决策逻辑的哈里斯鹰优化算法

    文章目录 一.理论基础 1.哈里斯鹰优化算法(HHO) 2.结合高斯变异和维数决策逻辑的哈里斯鹰优化算法(GCHHO) (1)高斯变异 (2)布谷鸟搜索中的维数决策逻辑 (3)提出的GCHHO 二.仿 ...

最新文章

  1. VCenter (虚拟架构环境的集中管理) 、数据库虚拟机迁移的影响
  2. zblog php 当前位置,zblogphp导航当前页突出显示的方法
  3. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
  4. 机器学习算法-PCA降维技术
  5. db2 修改表空间自增长_什么是表?什么是表空间?什么是MySQL的表空间?
  6. conda创建环境及激活环境失败问题
  7. 设计模式(5)—— 工厂方法模式(Factory Method,创建型)
  8. Java树数据结构? [关闭]
  9. [JUC-2]AbstractQueuedSynchronizer源码分析
  10. codeforces590b//Chip 'n Dale Rescue Rangers//Codeforces Round #327 (Div. 1)
  11. (转)洞见 | 为什么银行不愿意坐上Fintech这列过山车?
  12. 如何用photoshop做24色环_如何制作出Ps色环?
  13. 背包问题大全(动态规划)
  14. 计算机对写字教学的冲淡,不断改进评价方法努力促进写字教学
  15. 管理是一门艺术,好坏全在细微之间
  16. php|thinkphp程序合成图片+文字+图片大小调整+正方形转换圆角+去除白色边框
  17. 消费品行业经销商渠道数据同步及管理
  18. 突发事件检测: kleinberg 状态机模型
  19. 介绍四种绘制词云图的方法
  20. ROS中搭建分布式系统 主从机模式

热门文章

  1. 2022-2028年中国塑料鞋行业市场发展调研及未来前景规划报告
  2. vb中可视对象的操作
  3. 比Momentum更快:揭开Nesterov Accelerated Gradient的真面目NAG 梯度下降
  4. MyBatis批量插入几千条数据慎用foreach
  5. 自动调试用于移动GPU的卷积网络
  6. 使用现场总线更快更远
  7. MySQL基础之select基本查询
  8. INSTALL_FAILED_VERSION_DOWNGRADE
  9. Java 打印数组的方法
  10. 026_PPT知识汇总