AI 入门 101

什么是降维?

mm

什么是降维?

降维 是一种用于减少数据集维度的过程,通过将许多特征表示为更少的特征。例如,降维可以将具有二十个特征的数据集减少到仅几个特征。降维通常用于 无监督学习 任务中,自动从许多特征中创建类。为了更好地理解 为什么和如何使用降维,我们将研究高维数据相关的问题和最流行的降维方法。

更多维度导致过拟合

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

人们常常假设,在机器学习中,更多的特征意味着更准确的模型。然而,更多的特征并不一定意味着更好的模型。

数据集的特征在有用性方面可能有很大差异,其中许多特征的重要性不大。另外,数据集中的特征越多,需要的样本就越多,以确保数据中的不同特征组合得到良好的表示。因此,样本数量随着特征数量的增加而增加。更多的样本和特征意味着模型需要更复杂,而模型变得更复杂时,也更容易过拟合。模型过于擅长学习训练数据中的模式,无法泛化到样本外数据。

降低数据集的维度有几个好处。如前所述,简单的模型不太容易过拟合,因为模型不需要对特征之间的关系做出太多假设。另外,维度越少,训练算法所需的计算能力就越小。同样,维度较小的数据集需要的存储空间也较小。降低数据集的维度还可以让您使用不适合具有许多特征的数据集的算法。

常见的降维方法

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

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

无监督学习任务中使用的降维算法通常是 PCA 和 SVD,而监督学习维度减少中使用的算法通常是 LDA 和 PCA。在监督学习模型中,新生成的特征直接输入到机器学习分类器中。请注意,这里描述的用途只是总体用例,并非这些技术仅限于此。上述降维算法只是统计方法,并且在机器学习模型之外也被使用。

主成分分析

图:带有主成分的矩阵

主成分分析(PCA) 是一种统计方法,分析数据集的特征,并总结最具影响力的特征。数据集的特征被组合成代表数据的大部分特征的表示,但这些表示跨越更少的维度。您可以将其视为“压缩”数据从更高维表示到只有几个维度的表示。

例如,PCA 可能在以下情况下很有用:考虑描述葡萄酒的各种方法。虽然可以使用许多非常具体的特征(如二氧化碳水平、通风水平等)来描述葡萄酒,但这些特征可能对模型来说没有太大用处。相反,根据更一般的特征(如口味、颜色和年龄)来识别特定类型的葡萄酒将更为合理。PCA 可以用于组合更具体的特征并创建更一般、更有用、不太可能导致过拟合的特征。

PCA 通过确定输入特征如何相对于彼此偏离平均值来执行,确定特征之间是否存在任何关系。为此,创建一个协方差矩阵,建立一个由数据集特征的协方差组成的矩阵。协方差矩阵用于确定变量之间的相关性,负协方差表示反向相关性,正协方差表示正相关性。

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

奇异值分解

图:奇异值分解的可视化

奇异值分解(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 图中。新创建的轴根据前面描述的目标来分离两个类。

将原始点移动到新轴上的新位置需要三个步骤。第一步是使用类之间的均值(类之间的方差)之间的距离来计算类的可分离性。第二步是通过确定样本与类的均值之间的距离来计算类内的方差。最后一步是创建一个低维空间,该空间最大化类之间的方差。

LDA 技术在类的均值相距较远时获得最佳结果。如果分布的均值重叠,LDA 不能有效地使用线性轴来分离类。

博客作者和程序员,专攻 Machine Learning Deep Learning 领域。Daniel 希望帮助他人利用 AI 的力量为社会做好事。