联系我们

AI 101

什么是降维?

mm

更新

 on

什么是降维?

降维 是用于减少数据集的维数,采用许多要素并将其表示为较少要素的过程。例如,降维可用于将二十个要素的数据集缩减为仅几个要素。降维通常用于 无监督学习 自动创建许多功能中的类的任务。为了更好的理解 为什么以及如何使用降维,我们将研究与高维数据有关的问题以及减少维数的最流行方法。

更多尺寸导致过度装配

维数是指数据集中特征/列的数量。

通常认为 机器学习 更多功能会更好,因为它可以创建更准确的模型。但是,更多功能并不一定能转化为更好的模型。

数据集的特征在其对模型的实用性方面可以相差很大,而许多特征并不重要。此外,数据集包含的要素越多,需要的样本就越多,以确保在数据中很好地表示要素的不同组合。因此,样本数量与特征数量成比例地增加。更多的样本和更多的功能意味着模型需要更复杂,并且随着模型变得越来越复杂,它们对过度拟合也变得更加敏感。该模型太好地学习了训练数据中的模式,因此无法推广到样本数据之外。

减少数据集的维数有几个好处。如前所述,较简单的模型不太容易过度拟合,因为该模型对要素之间如何关联的假设更少。另外,更少的维度意味着训练算法所需的计算能力更少。同样,维度较小的数据集需要较少的存储空间。降低数据集的维数还可以使您使用不适用于具有许多功能的数据集的算法。

常用降维方法

降维可以通过特征选择或特征工程来实现。要素选择是工程师识别数据集最相关的要素的地方,而 特征工程 是通过组合或转换其他功能来创建新功能的过程。

功能选择和工程设计可以通过编程或手动完成。手动选择和工程化要素时,通常需要可视化数据以发现要素和类之间的相关性。以这种方式执行降维可能会耗费大量时间,因此,一些最常见的降维方法都涉及使用Scikit-learn for Python库中可用的算法。这些常见的降维算法包括:主成分分析(PCA),奇异值分解(SVD)和线性判别分析(LDA)。

用于降维的算法 无监督学习 任务通常是PCA和SVD,而那些用于 监督学习 降维通常是LDA和PCA。在监督学习模型的情况下,新生成的特征仅被馈送到机器学习分类器中。请注意,此处描述的用途只是一般​​使用情况,并非这些技术可以使用的唯一条件。上述降维算法仅是统计方法,它们在机器学习模型之外使用。

主成分分析

照片:已确定主要成分的矩阵

主成分分析(PCA) 是一种统计方法,用于分析数据集的特征/特征并总结最有影响力的特征。数据集的特征组合在一起,可以保留大多数数据特征,但分布在较少的维度上。您可以认为这是将数据从更高维度的表示“压缩”到只有几个维度的数据。

举一个PCA可能有用的情况的例子,考虑一下可以描述葡萄酒的各种方式。尽管可以使用许多高度特定的特征(例如二氧化碳水平,通气水平等)来描述葡萄酒,但是在尝试识别特定类型的葡萄酒时,此类特定特征可能相对没有用。取而代之的是,根据口味,颜色和年龄等更一般的特征来识别类型会更加谨慎。 PCA可用于组合更多特定功能,并创建更通用,更有用且不太可能导致过度拟合的功能。

通过确定输入要素相对于彼此的均值如何变化,确定要素之间是否存在任何关系来执行PCA。为了做到这一点,创建了协方差矩阵,建立了关于数据集特征的可能对的由协方差组成的矩阵。这用于确定变量之间的相关性,负协方差指示逆相关,正相关指示正相关。

数据集的主要(最具影响力)部分是通过创建初始变量的线性组合来创建的,这是通过称为“线性代数”的概念来完成的 特征值和特征向量。创建组合以使主要成分彼此不相关。初始变量中包含的大多数信息都被压缩为前几个主要成分,这意味着已创建新功能(主要成分),这些新功能在较小的维度空间中包含来自原始数据集的信息。

奇异值分解

Photo: 通过 Cmglee – Own work, CC BY-SA 4.0, //commons.wikimedia.org/w/index.php?curid=67853297

奇异值分解(SVD)用于简化矩阵中的值,将矩阵缩小到其组成部分,并简化使用该矩阵的计算。 SVD可以用于实值和复杂矩阵,但出于解释目的,将研究如何分解实值矩阵。

假设我们有一个由实值数据组成的矩阵,并且我们的目标是减少矩阵中的列/功能数量,这与PCA的目标类似。像PCA一样,SVD将压缩矩阵的维数,同时保留尽可能多的矩阵’的可变性。如果我们要对矩阵A进行运算,则可以将矩阵A表示为其他三个矩阵U,D,&V.矩阵A由原始x * y元素组成,而矩阵U由元素X * X组成(它是正交矩阵)。矩阵V是另一个包含y * y元素的正交矩阵。矩阵D包含元素x * y,它是一个对角矩阵。

为了分解矩阵A的值,我们需要将原始奇异矩阵值转换为在新矩阵中找到的对角线值。使用正交矩阵时,如果将它们乘以其他数字,则它们的属性不会改变。因此,我们可以利用这一特性来近似矩阵A。当我们将正交矩阵与矩阵V的转置相乘时,结果是与原始A等效的矩阵。

当矩阵a分解为矩阵U,D和V时,它们包含在矩阵A中找到的数据。但是,矩阵的最左列将容纳大部分数据。我们可以仅采用前几列,并具有矩阵A的表示形式,该矩阵的维数少得多,并且A中的大多数数据都可以。

线性判别分析

 

左:LDA之前的矩阵,右:LDA之后的轴,现在是可分离的

线性判别分析(LDA) 是从多维图形中获取数据的过程, 将其重新投影到线性图上。您可以考虑一个二维图形,其中填充了属于两个不同类的数据点。假设这些点散布在周围,因此无法画出将两个不同的类整齐地分开的线。为了处理这种情况,可以将在2D图形中找到的点简化为1D图形(一条线)。该行将在其上分布所有数据点,希望可以将其划分为两个部分,分别代表数据的最佳分离。

实施LDA时有两个主要目标。第一个目标是使类的方差最小,而第二个目标是使两个类的均值之间的距离最大化。通过创建将在2D图形中存在的新轴来实现这些目标。新创建的轴用于根据上述目标将两个类别分开。创建轴后,将在2D图形中找到的点沿轴放置。

将原始点沿新轴移动到新位置需要三个步骤。第一步,使用各个类之间的距离平均值(类间方差)来计算类的可分离性。在第二步中,通过确定样本与所讨论类别的平均值之间的距离来计算不同类别之间的方差。在最后一步中,创建使类之间的方差最大化的低维空间。

当目标类别的均值彼此相距较远时,LDA技术可获得最佳结果。如果分布方式重叠,则LDA无法有效地用线性轴分隔类。

 

专门从事以下工作的Blogger和程序员 机器学习 深度学习 话题。 Daniel希望帮助他人将AI的力量用于社会公益。