热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

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

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

全文共2433字,预计学习时长7分钟


 


图源:unsplash

维数灾难究竟是什么?除了是机器学习术语中让人闻风丧胆的主要实例外,还包括特征数量的增加对数据集的影响。简言之,维数灾难全都与孤独有关。

 

在具体解释维数灾难之前,让我们先来先解决一些基础术语问题。

 

什么是特征?特征是机器学习中的一个词,在其他学科中可能称为预测器/(独立)变量/属性/信号。换句话说,它是关于每个数据点的信息。

 

数据间保持距离非常容易:只需添加一个维度。但对某些算法来说,这可能是个灾难。如果一种机器学习算法对维数灾难非常敏感,该算法就只有在数据点被空间中的朋友围绕时才能有***的运行效果。空间中,数据点周围的朋友越少,形势越容易恶化。

 

一维

 

想象自己坐在一个大教室里,周围都是好朋友。


 

将自己想象成一个数据点,放置在一维空间中,房间一片漆黑,教室后面发出的亮光照射着你,影子投射在前面墙体的一条线上。在那条线上,你一点也不孤独,大家就像罐头中的沙丁鱼一样抱团取暖。一维空间真舒适,但可能有点儿舒适过头了。


 

二维

 

为了让你有呼吸的空间,现在增加一个维度。我们正处于二维空间,下面的平面是房间地板。在这一空间中,你和朋友们更加分散,每个人可以获得个人空间。


 

如果想象成虚构的电子表格对你而言更容易,那就把添加/删除一个维度换成插入/删除一列数字。

 

三维

 

现在添加第三维度,把大家随机分配到原本所在的5层楼中的任意一层。


 

突然,周围的朋友数骤减,孤独将你包围。如果你喜欢被朋友紧紧包围的感觉,可能如今你只能哀怨地盯着好几张空椅子,于是你泪眼朦胧,但至少周围可能还有一个朋友......


 

四维

 

现在再添加另一个维度——时间维度。


 

学生们分散至60分钟的课堂的不同时段(不同楼层)——我们规定只有9节课,因为老师们也需要休息和生活。因此,如果你有幸在此之前仍然有同伴的情感支持,但现在,笔者可以明确告诉你,你已经与世隔绝了。

 

如果你孤身一人时没有效率,那就麻烦了,维数灾难已经降临!


 

MOAR维度

 

随着维度增加,你的孤独感也增加得十分迅速。如果要确保每个同学都像在二维空间中被朋友环绕一样,就需要非常多的学生。


 

这里最重要的是朋友数量必须呈指数增长,而非线性增长,这样才能防止“抑郁”。

 

如果添加两个维度,那么甚至两个教室的学生都远远不够。起初如果教室有50名学生,添加5层楼和9堂课后则需要原来学生数的5x9=45倍才能达到原来只需50个人就能达到的效果。因此,我们需要45x50=2250个学生才能避免孤独。每个维度增加一个学生远远不够!数据需求飞速上升。

 

如果添加维度,则最小的数据需求也会快速增长。每上升一个维度就要招收更多的学生(数据点)。如对你来说数据十分昂贵,那么维数灾难可不是闹着玩的。

 

维度佼佼者

 

并非所有的机器学习算法在面对一些独处时光时都会失控,k-NN之类的方法就是种子选手。k-NN是k-最近邻(Nearest Neighbors)的简称——该方法被用来计算临近数据点,因而数据点们“睦邻友好”相当重要。

 

当涉及到维度时,其他方法则稳健地多。上一节线性回归课,你就会知道拥有可观数量的数据点,增加或去除一个维度并不会造成灾难性破坏。虽然依然会承担代价,但承担得起了。

 

这并非意味着它能适应所有变更,没有万全之策,神经网络也是如此。如果你不知道最小二乘法会引起混乱,比如包含一个单个异常值或增加一个几乎完全一样的特征(多重共线性,又称犯罪的拿破仑,会卷土重来),那么你需要警惕起来。

 

你该如何应对?

 

如果实践中遇到维数灾难应该怎么办?如果你是机器学习研究人员,***确认一下自己的算法是否有这个问题……但你肯定已经确认过了。

 

笔者大胆揣测一下你的想法——你可能会想有没有可能设计出一种对维度不那么敏感的算法。在事物趋向于文本化的情况下,许多用户更喜欢高大的矩阵。(通常,在矩阵中行代表实例,而列代表特征,这样的话,高瘦的矩阵中就有许多实例分布在少数维度中。)

 

如果你是应用数据科学爱好者,你会按照一直以来的方法处理,即在尝试所有可能的方法之前,只用一个或几个可能的特征获取算法的基准。

 

一些方法只适用于高瘦数据集,因此,如果感觉算法处于维数灾难,你需要对数据集进行瘦身。

 

如果你的方法在有限数量的特征上运行良好,而在你增加维度时却连连罢工,这就暗示你要么坚持自己选择的特征(或者你留了一手逐步选择),要么首先用一些特征工程技术把几个超级特征排除出去。可以试试保守办法,如主成分分析——时至今日,向量分析仍很重要,它永不过时——也可以尝试新派做法,如自编码器或其他神经网络方法。

 

无需了解维数灾难这一术语就可完成任务,因为过程(从小处着手并逐步建立复杂度)本应该为用户服务,但是如果它给你带来困扰,那么现在就可以摆脱


 

总结一下,增加越来越多的特征(列)需要以指数增长的实例(行)数来解决数据点在空间中的分散问题。一些方法只适用于高瘦数据集,所以如感觉发生维数灾难则需要对数据集瘦身。


图源:SOURCE

最后,为了防止大家把“空间封闭性”与规模关联起来,笔者需要解释一下,因为这与用英里还是厘米测量产生的影响无关,所以这种困境不能怪不断扩张的宇宙空间。

 

简单的乘法运算也不能避免维数灾难。相反,也许这张图能帮你以3D形式感知它:这只球形奶牛……这只猫咪有多大并不重要,重要的是,它身上覆盖着多少塑料泡沫。


一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”


(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)



推荐阅读
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 李宏毅机器学习笔记:无监督学习之线性方法
    无监督学习主要涵盖两大类别:一是聚类与降维,旨在简化数据结构;二是生成模型,用于从编码生成新的数据样本。本文深入探讨了这些技术的具体应用和理论基础。 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
author-avatar
饰间人爱642_370
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有