机器学习三人行(系列十)

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2020.07.30

系列九我们从算法组合的角度一起实战学习了一下组合算法方面的知识,详情戳下链接:

在这一期中,我们将主要讨论一下几方面内容:

一.维度灾难

许多机器学习问题涉及特征多达数千乃至数百万个。正如我们将看到的,这不仅让训练变得非常缓慢,而且还会使得找到一个好的解决方案变得更加困难。这个问题通常被称为维度灾难。

除了加速训练之外,降维对于数据可视化(或DataViz)也非常有用。将维度数量减少到两个(或三个)使得可以在图表上绘制高维训练集,并且通常通过视觉上检测诸如集群的图案来获得一些重要的见解。

我们习惯于三维生活,当我们试图想象一个高维空间时,我们的直觉失败了。即使是一个基本的4D超立方体,在我们的脑海中也难以想象,如下图,更不用说在1000维空间弯曲的200维椭球。

事实证明,许多事物在高维空间中表现得非常不同。例如,如果你选择一个单位平方(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以内,需要比可观察宇宙中的原子更多的训练实例,假设它们在所有维度上均匀分布。

二.降维的主要途径

在深入研究具体的降维算法之前,我们来看看降维的两种主要途径:投影和流形学习。

2.1投影

请注意,所有训练实例都靠近一个平面:这是高维(3D)空间的较低维(2D)子空间。现在,如果我们将每个训练实例垂直投影到这个子空间上(如连接实例到平面的短线所表示的那样),我们就得到如下图所示的新的2D数据集。当当!我们刚刚将数据集的维度从3D减少到了2D。请注意,轴对应于新的特征z1和z2(平面上投影的坐标)。

然而,投影并不总是降维的最佳方法。在许多情况下,子空间可能会扭曲和转动,如下图所示的著名的瑞士滚动玩具数据集。

简单地投射到一个平面上(例如,通过丢弃特征x3)将会把瑞士卷的不同层挤压在一起,如下图的左边所示。但是,您真正需要的是展开瑞士卷,以获得下图右侧的2D数据集。

2.2流形学习

瑞士卷是二维流形的一个例子。简而言之,二维流形是一种二维形状,可以在更高维空间中弯曲和扭曲。更一般地,d维流形是局部类似于d维超平面的n维空间(其中d

许多降维算法通过对训练实例所在的流形进行建模来工作;这叫做流形学习。它依赖于流形假设,也被称为流形假设,它认为大多数现实世界的高维数据集靠近一个低得多的低维流形。这种假设通常是经验性观察到的。

再次考虑MNIST数据集:所有的手写数字图像都有一些相似之处。它们由连线组成,边界是白色的,或多或少居中,等等。如果你随机生成图像,只有一小部分看起来像手写数字。换句话说,如果您尝试创建数字图像,可用的自由度远远低于您可以生成任何想要的图像的自由度。这些约束倾向于将数据集压缩到较低的维度。

流形假设通常伴随另一个隐含的假设:如果在流形的较低维空间中表示,手头的任务(例如分类或回归)将更简单。例如,在下图的第一行中,瑞士卷被分成两类:在三维空间(在左边),决策边界相当复杂,但是在2D展开的流形空间(在右边),决策边界是一条简单的直线。

但是,这个假设并不总是成立。例如,在上图右侧,判定边界位于x1=5。这个判定边界在原始三维空间(一个垂直平面)看起来非常简单,但是在展开的流形中它看起来更复杂四个独立的线段的集合)。

简而言之,如果在训练模型之前降低训练集的维数,那么肯定会加快训练速度,但并不总是会导致更好或更简单的解决方案。这一切都取决于数据集。

到这里我们基本能够很好地理解维度灾难是什么,以及维度减少算法如何与之抗衡,特别是当多种假设成立的时候。那么接下来我们将一起学习一下常见的降维算法。

三.PCA(主成分分析

主成分分析(PCA)是目前最流行的降维算法。主要是通过识别与数据最接近的超平面,然后将数据投影到其上。

3.1保持差异

在将训练集投影到较低维超平面之前,您首先需要选择正确的超平面。例如,简单的2D数据集连同三个不同的轴(即一维超平面)一起在下图的左侧表示。右边是将数据集投影到这些轴上的结果。正如你所看到的,在c2方向上的投影保留了最大的方差,而在c1上的投影保留了非常小的方差。

选择保留最大变化量的轴似乎是合理的,因为它最有可能损失比其他投影更少的信息。证明这一选择的另一种方法是,使原始数据集与其在该轴上的投影之间的均方距离最小化的轴。这是PCA背后的一个相当简单的想法。

3.2PCA中的PC

主成分分析(PCA)识别训练集中变化量最大的轴。在上图中,它是实线。它还发现第二个轴,与第一个轴正交,占了剩余方差的最大量。如果它是一个更高维的数据集,PCA也可以找到与前两个轴正交的第三个轴,以及与数据集中维数相同的第四个,第五个等。

定义第i个轴的单位矢量称为第i个主成分(PC)。在上图中,第一个PC是c1,第二个PC是c2。在2.1节的图中,前两个PC用平面中的正交箭头表示,第三个PC与平面正交(指向上或下)。

主成分的方向不稳定:如果稍微扰动训练集并再次运行PCA,一些新的PC可能指向与原始PC相反的方向。但是,他们通常仍然位于同一轴线上。在某些情况下,一部分的PC甚至可能旋转或交换,但他们确定的平面通常保持不变。

那么怎样才能找到训练集的主要组成部分呢?幸运的是,有一种称为奇异值分解(SVD)的标准矩阵分解方法,可以将训练集矩阵X分解成三个矩阵U·Σ·VT的点积,其中VT包含我们正在寻找的所有主成分,如下公式所示。

下面的Python代码使用NumPy的svd()函数来获取训练集的所有主成分,然后提取前两个PC:

3.3投影到d维度

一旦确定了所有主要组成部分,就可以将数据集的维数降至d维,方法是将其投影到由第一个主要组件定义的超平面上。选择这个超平面确保投影将保留尽可能多的方差。例如,在2.1节中的数据集中,3D数据集向下投影到由前两个主成分定义的2D平面,从而保留了大部分数据集的方差。因此,二维投影看起来非常像原始的三维数据集。

为了将训练集投影到超平面上,可以简单地通过矩阵Wd计算训练集矩阵X的点积,该矩阵定义为包含前d个主分量的矩阵(即,由VT的前d列组成的矩阵),如下公式所示。

以下Python代码将训练集投影到由前两个主要组件定义的平面上:

现在我们已经知道如何将任何数据集的维度降低到任意维数,同时尽可能保留最多的差异。

3.4使用Scikit-Learn

Scikit-Learn的PCA类使用SVD分解来实现PCA,就像我们之前做的那样。以下代码应用PCA将数据集的维度降至两维:

在将PCA变换器拟合到数据集之后,可以使用components_变量访问主成分(注意,它包含水平向量的PC,例如,第一个主成分等于pca.components_.T[:,0])。

3.5解释方差比率

另一个非常有用的信息是解释每个主成分的方差比率,可通过explained_variance_ratio_变量得到。它指明了位于每个主成分轴上的数据集方差的比例。例如,让我们看看图8-2中表示的3D数据集的前两个分量的解释方差比率:

它告诉我们,84.2%数据集的方差位于第一轴,14.6%位于第二轴。第三轴的这一比例不到1.2%,所以可以认为它可能没有什么信息。

3.6选择正确的维度数量

不是任意选择要减少的维度的数量,通常优选选择加起来到方差的足够大部分(例如95%)的维度的数量。当然,除非我们正在降低数据可视化的维度(在这种情况下,您通常会将维度降低到2或3)。

下面的代码在不降低维数的情况下计算PCA,然后计算保留训练集方差的95%所需的最小维数:

然后可以设置n_components=d并再次运行PCA。但是,还有一个更好的选择:不要指定要保留的主要组件的数量,您可以将n_components设置为0.0到1.0之间的浮点数,表示您希望保留的方差比率:

3.7PCA压缩

降维后显然,训练集占用的空间少得多。例如,尝试将PCA应用于MNIST数据集,同时保留其95%的方差。你会发现每个实例只有150多个特征,而不是原来的784个特征。所以,虽然大部分方差都被保留下来,但数据集现在还不到原始大小的20%!这是一个合理的压缩比,你可以看到这是如何加速分类算法(如SVM分类器)。

也可以通过应用PCA投影的逆变换将缩小的数据集解压缩回到784维。当然这不会给你原来的数据,因为投影丢失了一点信息(在5%的差异内),但它可能会非常接近原始数据。原始数据与重构数据(压缩然后解压缩)之间的均方距离称为重建误差。例如,以下代码将MNIST数据集(公众号回复“mnist”)压缩到154维,然后使用inverse_transform()方法将其解压缩到784维。下图显示了原始训练集(左侧)的几个数字,以及压缩和解压缩后的相应数字。你可以看到有一个轻微的图像质量损失,但数字仍然大部分完好无损。

如下等式,显示了逆变换的等式。

3.8增量PCA

先于PCA实现的一个问题是,为了使SVD算法运行,需要整个训练集合在内存中。幸运的是,已经开发了增量式PCA(IPCA)算法:您可以将训练集分成小批量,并一次只提供一个小批量IPCA算法。这对于大型训练集是有用的,并且也可以在线应用PCA(即在新实例到达时即时运行)。

下面的代码将MNIST数据集分成100个小批量(使用NumPy的array_split()函数),并将它们提供给Scikit-Learn的IncrementalPCAclass5,以将MNIST数据集的维度降低到154维(就像以前一样)。请注意,您必须调用partial_fit()方法,而不是使用整个训练集的fit()方法。

3.9随机PCA

Scikit-Learn提供了另一种执行PCA的选项,称为随机PCA。这是一个随机算法,可以快速找到前d个主成分的近似值,它比以前的算法快得多。

四.KernelPCA

在前面的系列中,我们讨论了内核技巧,一种将实例隐式映射到非常高维的空间(称为特征空间)的数学技术,支持向量机的非线性分类和回归。回想一下,高维特征空间中的线性决策边界对应于原始空间中的复杂非线性决策边界。

事实证明,同样的技巧可以应用于PCA,使得有可能执行复杂的非线性投影降维。这被称为内核PCA(KPCA)。在投影之后保留实例簇通常是好的,有时甚至可以展开靠近扭曲流形的数据集。

下图显示了使用线性内核(等同于简单使用PCA类),RBF内核和S形内核(Logistic)减少到二维的瑞士卷。

五.LLE(局部线性嵌入)

例如,下面的代码使用Scikit-Learn的LocallyLinearEmbedding类来展开瑞士卷。得到的二维数据集如下图所示。正如你所看到的,瑞士卷是完全展开的,实例之间的距离在本地保存得很好。但是,展开的瑞士卷的左侧被挤压,而右侧的部分被拉长。尽管如此,LLE在对多样性进行建模方面做得相当不错。

THE END
1.人工智能软件哪个好比较大众认可的几款AI工具Scikit-learn是另一款受欢迎的人工智能工具,它专注于简单易用的机器学习算法。这个库提供了多种常用算法,如分类、回归、聚类等,并且配备了简洁直观的接口,使得初学者也能轻松使用。这使得Scikit-learn成为数据科学家们日常工作中的重要工具之一。 自然语言处理NLP框架PyTorch https://www.pv40pux4.com/xing-ye-zi-xun/434842.html
2.计算机视觉开发者必备:十大顶尖工具深度解析Keras是一个运行在TensorFlow之上的高级神经网络API,它抽象了构建深度学习模型的复杂性,非常适合初学者。Keras允许开发者快速原型化模型,如图像分类、物体检测甚至更复杂的分割任务,而无需深入了解深度学习算法。 对于更有经验的开发者,Keras仍然是一个有用的工具,用于在深入定制之前快速原型化模型。Keras简化了流程,同时https://www.51cto.com/article/804373.html
3.好用的AI工具推荐与案例分析腾讯云开发者社区算法交易:利用机器学习模型来预测市场走势,并自动执行交易。 制造业 预测性维护:AI技术可以分析机器数据,预测设备故障,提前进行维护,减少停机时间。 智能工厂:通过AI优化生产流程,提高效率和质量控制。 零售 智能推荐系统:如亚马逊和Netflix的推荐引擎,根据用户的购买历史和偏好推荐商品或内容。 https://cloud.tencent.com/developer/article/2478281
4.这款人工智能工具轻松搞定复杂数科难题数学微积分mathgptsect过去追着朋友或教授去弄懂棘手概念的日子已经一去不复返啦。现在,您可以在家中舒适地使用人工智能工具解决所有疑问。虽然 ChatGPT 出错的情况不计其数,但我发现了一个能更有效地处理复杂数学和科学问题的工具。 用MathGPT 简化复杂问题 MathGPT 是我最近发现的一个人工智能工具,到目前为止,它是我用于学习的最准确https://www.163.com/dy/article/JJTOA9M805568E2X.html
5.提高工作效率的神器:深度学习自动标注软件推荐AutoLabelImg,X自动标注软件在现代工作环境中的应用日益广泛,其高效的特性使其成为节省人力资源的不可或缺的工具。随着深度学习技术的快速发展,市场上涌现了众多自动化标定软件,它们以更智能、精准的方式完成标注任务。 这些软件不仅仅是简单的工具,更是在深度学习算法支持下,能够自动识别、分类和标注大量数据的先进系统。 https://download.csdn.net/blog/column/12260893/134602343
6.Contents/premium.mdatmaster·Newslab2020/Contents·GitHub答:需根据相应的时间长度购买。例如,从第001期到108期是一年的内容,需支付300元购买。 试读文章 通讯358:我们需要怎样的“辟谣”? 通讯253:《黑镜》新片:交互是电影业的未来吗? 通讯165:Facebook“数据门”究竟是怎么回事? 通讯53:一门叫做“抵制狗屁”的大学课程 https://github.com/Newslab2020/Contents/blob/master/premium.md
7.2024AI绘画软件下载,新晋神器推荐!而AI在艺术领域的应用,也让我们得以窥见科技与艺术的完美结合。AI绘画软件正是这样的一个实例,它利用复杂的算法和机器学习模型,能够自动生成令人惊叹的艺术作品。这不仅仅是一种新的工具,更是一种全新的创作方式。那么,市面上有哪些值得推荐的AI绘画软件下载呢?下面就让我们来看看这13款热门的AI绘画软件。https://pixso.cn/designskills/2024-ai-painting-software-download/
8.AllAs软件下载AllAsAlevel提分神器v1.1.4安卓版All As是一款基于智能算法的题库系统,国际学校学生可以在学习A Level/IB/AP等课程中,不断通过刷题获取个性化的题目推荐,完善知识点图谱,达到有效提分,为学生提供智能学习的个性化和全方位的指导。 软件特色 1、能够提供全年级学科的教学资源,包括数学、物理、化学、生物学等重要学科; 2、为学生提供更系统、全面的https://www.qqtn.com/azsoft/854446.html
9.集成学习之xgboostlightGBMCatBoostNGBoost对比Kaggle竞赛使用最多的模型之一,必备机器学习神器 Light => 在大规模数据集上运行效率更高 GBM => Gradient Boosting Machine Motivation: 常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制 GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装https://www.jianshu.com/p/b304b666c88f
10.牛客网在线编程算法面试牛客网在线编程算法面试-面试必刷TOP101提供超多数据结构,系统设计,编程学习,练习题等,为技术求职者提供能力提升解决方案,同时为企业级用户提供更高效的招聘解决方案,帮助求职者与企业搭建人才招募和人才培养渠道https://www.nowcoder.com/exam/oj
11.oeasy神器app下载oeasy神器安卓软件下载v1.2oeasy神器是一款非常不错的在线学习软件,oeasy神器离线阅读支持,解决网络环境不稳定的阅读问题;内置写作板块,支持记录灵光一现的想法;快速搜索网上阅读并提供多源阅读内容。快来下载看看吧! oeasy神器特色 1、个性化推荐算法,完美匹配你的阅读口味; 2、精准阅读时间预估,让你更有效率地安排时间; http://www.1666.com/sjrj/v551120.html
12.盘盘单词以用户存储在百度网盘中的影像资料为基础,通过先进的图像处理技术和机器学习算法,从中提取关键元素,并自动生成与用户实际生活紧密相连的英语单词和例句。这种创新的学习方式使得用户在复习单词时能够直接联想到实际生活场景,从而有效提高记忆效果,使英语学习变得更加生动、有趣和高效。https://pidoutv.com/sites/23555.html
13.AISTEAMSTEM全龄国际TOP学习资源英语学习编程算法AI、STEAM、STEM、全年龄段(K12、大学、成人、职业等)终身学习导航站,包括国际TOP学习资源、英语学习、编程算法、演讲辩论、中文顶级学习资源,很多资源免费学习。https://studyisland.ac.cn/
14.力扣(LeetCode)全球极客挚爱的技术成长平台学习计划 面试经典 150 题 最经典 150 题,掌握面试所有知识点 LeetCode 热题 100 力扣最受刷题发烧友欢迎的 100 道题 动态规划(基础版) 更细的知识点拆分,让入门更简单 推荐 算法 数据结构 题目交流 职业发展 竞赛 前端 后端 LeetCode 算法图解 https://leetcode-cn.com/
15.AppStore上的“快问AI快问AI是一款采用先进AI模型的中文学习神器,旨在协助你应对日常生活与学习中的各种挑战。 它能够理解你的各类问题或需求,并依托其算法生成相应解答。随着使用频率的增加,它还能自我学习,不断优化,从而为你带来更加个性化的使用体验。 它是: 百科全书般的存在:为你解答学科学习中的种种疑惑; 耐心的指导者:无论是智能https://apps.apple.com/cn/app/%E5%BF%AB%E9%97%AEai-%E6%99%BA%E8%83%BD%E5%AD%A6%E4%B9%A0%E4%BC%B4%E4%BE%A3/id6447964244?l=en-GB?l=en
16.各领域最厉害的8个Ai工具软件神器推荐,ai聊天机器人,写作各领域最厉害的8个Ai工具软件神器推荐,ai聊天机器人,写作,绘画,修图,声音,ppt 【自媒体人一定要学的八款AI软件】 作为自媒体人,要在激烈的竞争中脱颖而出,需要不断提高自己的创作效率和质量。现在,有许多AIhttps://feizhuke.com/ai-shenqi.html
17.visualisingdatastructuresandalgorithmsthroughanimationVisuAlgo was conceptualised in 2011 by Dr Steven Halim as a tool to help his students better understand data structures and algorithms, by allowing them to learn the basics on their own and at their own pace. Together with his students from the National http://www.visualgo.net/
18.计图开源:智能P图神器DeepFaceEditing—Jittor其核心思路是通过引入“深度几何学习”的研究思路,通过分析和解耦人脸图像的几何结构,将真实的人脸解耦为几何(Geometry)和外观(Appearance)两个特征。基于此,用户可以通过草图编辑人脸的几何特征,例如五官的形状、面部皱纹等,也可以通过选择参考图像,编辑人脸的肤色、发色等信息,定制个性化风格滤镜。https://cg.cs.tsinghua.edu.cn/jittor/news/2021-05-05-00-00-deepfaceediting/
19.有哪些高质量的自学网站?再推荐几个同类型网站: 25、五分钟学算法(http://cxyxiaowu.com/) 一个完全免费的算法学习网站。 有很多的算法题和概念解释,甚至面试的攻略,适合新手的学习和进阶。 漫画式的教学,将复杂的内容深入浅出,效果很棒! 26、菜鸟教程(http://runoob.com/) https://www.douban.com/note/767851363/
20.大学学习App排行榜VIVO手机大学学习app推荐ViVO手机大学学习App排行榜由点点数据提供。本次排行榜包含了:青年大学习、学习强国、大学搜题酱-作业帮大学版、粉笔考研-考研备考平台、中国大学MOOC、大学万题库、大学数学、考途-大学生搜题练题学习神器、学小易-大学生学习平台、普通话学习通-普通话考试等十大大学学习App排行榜 https://www.diandian.com/phb/1525/4-1.html
21.进击!百度UH自动化AI设计系统优设网4、人工智能算法学习 根据大数据和心智模型(实验阶段),来分析用户的喜好趋势,对模版进行管理,持续对系统进行训练; 5、语义理解 选择不同产品线和端,会自动判断语义理解,自动给出匹配的文案,供使用者选择; 6、维护优化 设计师定期对系统的底层模版进行维护和优化; https://www.uisdc.com/baidu-uh-ai-design/
22.工具Orange3:机器学习入门神器澎湃号·湃客澎湃新闻工具|Orange 3:机器学习入门神器 原创 数据火锅 数据火锅 一、Orange3基本介绍与安装说明 (一)Orange3基本概况介绍 Orange3(https://orangedatamining.com/)是一款基于Python的数据挖掘和可视化工具,它提供了丰富的数据分析、机器学习和数据挖掘算法,同时也支持可视化分析和交互式数据探索。Orange3提供了友好的界面和https://www.thepaper.cn/newsDetail_forward_24193195