直观形象的理解维度诅咒:会造成数据点孤独

维度诅咒 , 也就是维数灾难(CurseofDimensionality)是一个最早由理查德·贝尔曼(RichardE.Bellman)在考虑优化问题时首次提出来的术语 , 用来描述当(数学)空间维度增加时 , 分析和组织高维空间(通常有成百上千维) , 因体积指数增加而遇到各种问题场景 。 这样的难题在低维空间中不会遇到 , 如物理空间通常只用三维来建模 。
举例来说 , 100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后 , 如果以相邻点距离不超过0.01小方格采样一单位超正方体 , 则需要1020个采样点:所以 , 这个10维的超正方体也可以说是比单位区间大1018倍 。 (这个是理查德·贝尔曼所举的例子)
在很多领域中 , 如采样、组合数学、机器学习和数据挖掘都有提及到这个名字的现象 。 这些问题的共同特色是当维数提高时 , 空间的体积提高太快 , 因而可用数据变得很稀疏 。
稀疏性对于任何要求有统计学意义的方法而言都是一个问题 , 为了获得在统计学上正确并且有可靠的结果 , 用来支撑这一结果所需要的数据量通常随着维数的提高而呈指数级增长 。
而且 , 在组织和搜索数据时也有赖于检测对象区域 , 这些区域中的对象通过相似度属性而形成分组 。 然而在高维空间中 , 所有的数据都很稀疏 , 从很多角度看都不相似 , 因而平常使用的数据组织策略变得极其低效 。
稀疏代表着孤独 , 所以 , 维度诅咒本质上就是孤独
【直观形象的理解维度诅咒:会造成数据点孤独】一维
想象一下 , 你坐在一个大教室里 , 周围被好友们包围着 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
通过将房间调暗并从房间背面照亮明亮的光线 , 让你处于一个维度 。 你的阴影投到前墙上的一条线上 。 在那条线上 , 你是其中一个点 。 你和你的同学都是沙丁鱼罐头 , 全都一字排开 。 一维舒适!太容易理解了 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
二维
为了给你呼吸的空间 , 让我们添加一个维度 。 我们处于2D模式,平面是房间的地板 。 在这个空间中 , 你和你的朋友更加分散 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
三维
让我们通过将每个人随机发送到你所在的5层建筑的一层来增加第三个维度 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
突然之间 , 你不再被朋友所包围 。 你身边很寂寞 。 如果你喜欢几乎每个座位上的学生感觉 , 那么您现在很悲哀地凝视着很多空椅子 。 你开始眼花缭乱 , 但是至少你的一个伙伴可能仍在附近……
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
四维
不是很长!让我们添加另一个维度 , 时间 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
在不同的时间 , 这些学生分布在该课程的60分钟部分(位于不同楼层)中-我们将自己限制在9节课中 , 因为讲师需要睡眠和一些生命活动 。 因此 , 如果你有幸在此之前仍然有同伴提供情感支持 , 那么我很自信你现在在社交上与外界保持距离 。 如果你在孤独时无法发挥作用 , 那就加油!我们有问题 。 维度的诅咒来了!
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
更多维度
随着我们添加维度 , 你会非常非常快速地孤独 。 如果我们要确保每个学生都和2D一样被朋友所包围 , 那么我们将需要学生 。 其中很多 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
这里最重要的想法是 , 我们必须成倍地而不是线性地招募更多的朋友 , 以使您的蓝调保持稳定 。
如果我们增加两个维度 , 就不能简单地补偿另外两个学生…甚至两个教室的学生价值 。 如果我们最初从教室里的50名学生开始 , 并且增加了5层楼和9个班级 , 那么我们需要的学生人数是5x9=45倍 , 以使彼此保持尽可能多的50人陪伴 。 因此 , 我们需要45x50=2,250名学生来避免孤独感 。 每个维度多了一个额外的学生!数据需求迅速上升 。
添加维度时 , 最低数据要求可能会迅速增长 。
每次上维时 , 我们都需要招募更多很多学生(数据点) 。 如果数据对您来说太昂贵了 , 那么这个诅咒真的不是笑话!
维数
并非所有的机器学习算法在面对我的时候都会变得如此激动 。 当然 , 像这样的方法是完整的 。 对于名称缩写代表k-NearestNeighbors的方法来说 , 这并不令人惊讶-它是关于计算相邻数据点的信息 , 因此 , 数据点是相邻的非常重要 。
在维度方面 , 其他方法要健壮得多 。 例如 , 线性回归就是 , 一旦拥有足够数量的数据点 , 增加或减少维数就不会造成灾难性的内爆 。
*这并不意味着它可以抵抗所有虐待!如果你从不知道只有一个异常值或添加一个近乎重复的功能会带来最小二乘方法的混乱(犯罪的拿破仑 , 多重共线性 , 再次打击!) , 那么请考虑一下自己 。 没有一种方法适合每种情况 。 而且 , 是的 , 其中包括神经网络 。
我们应该怎么做?
在实践中 , 你将如何处理维数的诅咒?如果你是机器学习研究人员 , 则最好知道你的算法是否存在此问题 。 你如果读了本文 , 你可能想考虑是否有可能设计自己发明的对维度不太敏感的算法 。 你的许多客户都喜欢他们在特征齐全的方面的矩阵** , 尤其是当事情变得文本化时 。
**按惯例 , 我们将数据排列在矩阵中 , 行表示样例 , 而列为特征 。 在这种情况下 , 一个又高又瘦的矩阵有很多例子 , 分布在几个维度上 。
如果你是应用数据科学的爱好者 , 那么你将做自己经常做的事-在尝试将厨房水槽扔给它之前 , 仅使用一个或几个有前途的特征就可以获得算法性能的基准 。
有些方法只适用于高的、瘦的数据集 , 所以如果你觉得被诅咒 , 你可能需要把你的数据集压缩 。
如果你的方法在有限数量的特征上工作得很好 , 然后在增加维度时向你吹了覆盆子 , 那么这可能是坚持选择了一些特征(或者如果你正在精打细算 , 则是逐步选择)或首先通过运行一些可爱的特征工程技术在原始的厨房水槽中做一些超级特征(可以尝试一些老派做法 , 例如主成分分析(PCA) , 到今天仍然有用 , 特征向量永远不会过时 , 再到更现代的事情)例如自动编码器和其他神经网络的娱乐时间) 。 你真的不需要知道维度诅咒一词 , 如果它困扰您……现在你可以摆脱烦恼 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
总结一下:随着你添加越来越多的(列) , 你需要数量呈指数增长的(行)来克服数据点在空间中的分布情况 。 有些方法仅适用于瘦长的数据集 , 因此 , 如果你感到被诅咒 , 可能需要压缩 。
直观形象的理解维度诅咒:会造成数据点孤独
文章图片
PS:如果将''封闭空间''解释为与比例尺有关 , 那么让我说对了 。 这与以英里/厘米为单位测量的效果无关 , 因此我们不会为造成的麻烦而指责不断扩大的宇宙-并且不能通过简单的乘法来躲避诅咒 。 取而代之的是 , 这张照片可能会帮助你以3D方式直观地了解它 。 我要说的是 , 这有多大 , 呃 , 我的意思是喵喵发射器……而更多的是它所覆盖的花生包装数量的问题 。


    推荐阅读