理解机器学习中的维度诅咒
在机器学习中,高维数据集是常见的事情。当数据集处于高维空间时,可视化是不可能的。因此,将高维空间简化为低维空间成为机器学习的重要组成部分。我们可以通过以下两种方式来缩小维度:
特征选择 - 选择与模型相关的重要特征(避免了维度的诅咒)
特征提取 - 利用PCA,TSVD,T-SNE等多种方法将高维空间转换为低维空间
维度诅咒
这是一种在高维空间中发生的现象这种现象很少发生在低维度空间中。由于更多维数导致模型变得稀疏。更高维空间导致聚类问题(将一个聚类数据与另一个聚类数据分离变得非常困难),搜索空间也增加,模型复杂度增加。
所以,什么是维度的诅咒。让我们通过简单的“Paritosh”和“他的狗农场”的例子来理解这一现象。
如图1所示,Paritosh唯一的任务是找到所有的狗(特征1),这是非常容易的,因为他必须直线行走才能挑选所有的狗,因此数据密度也非常高,因此他不会面临任何困难来追踪所有的狗。
假设在第二种情况下,我们增加了另一个特征空间,使得他现在的任务是仅查找属于他的农场(特征2)的那些狗(特征1)。与图1相比,他将花更多的时间。
现在在第三种情况下,他的任务是仅查找属于他的农场(特征2)的那些狗(特征1),并且品种是拉布拉多(增加一个特征空间)。这里维数增加到三个,数据密度也减少,因此他的任务变得更加困难。
所以,如果我们添加另一个维度,比如颜色,区域,饮食,健康,他就会越来越难找到他的狗。因此,我们可以说,随着越来越多的特征数据密度的降低和复杂性的增加,机器学习模型的工作效率变得非常困难。
为了克服维数的诅咒,降维是将高维空间还原到低维空间,使得可视化数据集变得容易。目前有多种降维方法,其中一些是:
· PCA
· t-SNE (non-parametric/ nonlinear)
· Sammon mapping (nonlinear)
· SNE (nonlinear)
· MVU (nonlinear)
· Laplacian Eigenmaps (nonlinear)
降维的重要和有效途径是PCA和T-SNE。
PCA - 主成分分析
PCA是一种降维特征提取技术,它使用正交变换将可能的一组相关变量转换为线性不相关变量(称为主成分)。PCA技术用于缩放的那些数据集。
目标函数:PCA
假设我们有二维数据集,它分布在x轴和y轴之间,如图4所示。在图4中,两个特征之间的数据分布非常广泛,因此难以缩小这个数据集的维数
如果我们旋转我们的轴d1和d2来表示d1'和d2',这样数据的方差或扩展到该轴的最大值比减少数据集的维数容易得多,因为现在大部分扩展密度都在d1'图4.所以,我们的主要目标是如果我们可以找到d1'数据集的最大传播密度比我们可以将二维数据集减少到一维数据集(我们可以稍后删除d2',因为没有数据分布D2' )
因此,我们的目标是找到theta值(轴d1和d2的旋转,使得大部分数据位于最终的旋转轴上,这里是d1'和d2',它旋转了θ值,如图5所示) 。
假设我们的数据是列标准化的。假设我们有方向u,使得u是单位向量,并且沿着u的数据分布是最大的,并且我们有数据点x1,使得x1在u上的投影是x1'。通过创建投影,我们创建了新的数据点
x1可定义为x1'= u1.x1∖u1⟩^ 2 其中u1是单位向量。因此,我们可以说,给定任意点x1,如果我们有u作为单位向量,我们可以转换为x1'。通过使用相同的方法,我们可以找到x1'的均值向量,因为我们有x1的均值。目标是找到单位矢量,使其指向最大方差。所以,一个点的方差定义为:
由于我们的数据是列标准化的,这意味着我们的第二项变为零。因此,新方差定义为:
因此,客观的是找到u(u转置),使得u必须是单位向量的情况下使方差最大化。上面的等式是目标函数,并且我们可以使用协方差矩阵的特征值(λ)和特征向量(V)来找到最大方差,其中协方差矩阵被定义为XtX(X转置* X,方阵),其中x是n维数据集。计算和排列λ使得λ1>λ2>λ3...对应于每个λ我们有V1> V2> V3 ..其中V1代表最大方差的方向,V2代表第二最大方差的方向,V3代表第三最大方差的方向,如果我们必须找出解释的方差百分比,我们可以得到特征值(λ)。如何使用特征值?假设,
因此,我们可以说PCA使投影点的方差最大化,因此它保留尽可能多的方差,因此PCA试图保持数据的全局形状
PCA:限制
如果数据分布如图4所示线性分布,则PCA将工作。假设数据不是线性分布的,如图6所示,我们可能会面临信息丢失的问题。所以,如果我们沿着数据点投影单位矢量,我们将失去很多其他数据点
T-SNE:介绍
T-SNE(t分布随机邻域嵌入)是用于降维和可视化的强大技术之一。正如所讨论的,PCA只保留全局数据形状,但t-SNE保存本地和全局数据形状,因此通过使用t-SNE可以解决信息丢失问题。T-SNE如何保存数据让我们可以通过二维散点图来理解,如图7所示
T-SNE基本上找到所有数据点相互之间的相似性或紧密相邻点以及相互接近的点,T-SNE将它们放在一个簇中,如图7所示。
SNE:随机邻域嵌入
在理解T-SNE之前,让我们了解SNE的工作原理。SNE基本匹配高维和低维空间之间的距离分布,使用条件概率提供的距离是高斯分布的。因此要找出高维空间公式中两点之间的相似度为:
其中pj | i是条件概率,xi和xj是我们必须找到相似度的两个数据点。如果xi和xj彼此接近,那么pj | i很大
类似地,对于低维空间,条件概率是:
因此,在构造低维空间概率和高维空间概率之后,下一个目标是如何接近pj | i和qj | i。即当我们将高维数据转换为低维数据时,无论我们是否失去了数据集的任何特征。这里我们使用的是称为Kullback-Leibler散度的成本函数
Pi和Qi分别是高维空间和低维空间的条件概率,C是代价函数,KL是Kullback-Leibler散度。由于Kullback-Leibler散度用于测量概率分布之间的差异,所以它变得不对称,因此它也试图保持局部结构。
虽然SNE是一种有效的算法,但它面临两个主要缺点:
·成本函数 - 我们在这里使用的成本函数很难优化
·拥挤问题 - 有时如图8所示,为所有邻域保留距离变得非常困难
T-SNE:T-随机邻域嵌入
T-Sne是用于可视化和探索高维数据集的非线性降维算法。为了克服SNE问题,我们使用t-SNE来分布低维数据(由于t分布对于异常值是鲁棒的)而不是正态分布,并且表示低维空间t-SNE公式为:
T-SNE基本上由两个步骤组成
步骤1-构造高维空间的概率分布,使得类似对象具有很高的被挑选概率
步骤2-为低维空间定义相似的概率分布
T-SNE:限制
虽然T-SNE是高维数据集可视化和探索的非常强大的算法,但是当我在MNIST数据集上应用TSNE时,我遇到了一些限制
·TSNE不适用于低配置笔记本电脑,即如果您希望有效实施TSNE,则至少需要8 GB的RAM
·即使您使用高达16 GB RAM的TSNE也会崩溃,如果您不执行任何其他维度降低技术(最大特征值提取)
·这是一个耗时的过程。有时完成执行需要5-6小时(尽管执行时间完全取决于系统配置和数据集数量)
·如果有人将TSNE视为一般尺寸缩减比TSNE不是正确的选择,因为它只能将高维数据集缩小到3维