8000字详解“降维算法”,从理论实现到案例说明

1 评论 2305 浏览 27 收藏 35 分钟

无监督学习中的两种算法,之前我们分享了聚类算法,本文来介绍下降维算法。从概念入手,了解其技术原理和特点后结合场景案例,加深我们对降维算法的应用和理解。

其实降维算法没那么复杂,是无监督学习的一种应用,简单来说就是:抓重点。

欢迎一起探索AI的世界。

无监督学习中比较常见的有两类算法,一个是聚类算法,还有一个是降维算法。

关于聚类算法,我在上一篇《8000字详解“聚类算法”,从理论实现到案例说明》中有重点说到,介绍了聚类算法中的K均值聚类算法和层次聚类算法。从基本概念说起,聊到算法实现的步骤,通过假设案例带入实际场景。

比如,K均值聚类算法可以将客户分为不同的群体,能帮助企业更好地了解客户,制定更有效的营销策略。

层次聚类算法中的AGNES算法可以将相似的文档归为一类,帮助企业更好地管理和分析文档。DIANA算法可以完成学情分析,帮助学校或教育机构更好地了解学生的学习情况,制定更有效的教学策略。

本篇,我们一起来学习了解降维算法,先从概念处入手,逐步了解其技术原理和特点,最后再结合场景案例,加深我们对降维算法的应用和理解。

全文8000字左右,预计阅读时间15分钟,若是碎片时间不够,建议先收藏后看,便于找回。

照例,开篇提供本篇文章的目录大纲,方便大家在阅读前总揽全局,对内容框架有预先了解。

一、降维算法的基本概念

降维算法是机器学习中用于减少数据集维度的一种技术,其目的是在尽可能保留数据中有用信息的前提下,降低数据的复杂性。

减少数据集维度是指通过数学变换或特征选择等方法,降低数据集中特征的数量或降低数据点在某个空间中的表示的维度。这一过程通常被称为降维(Dimensionality Reduction)。

减少数据集维度的主要目的是为了简化数据模型,提高数据处理的效率,并可能改善模型的性能。

在实际应用中,数据集往往包含大量的特征,这些特征中有的可能彼此相关,有的可能是噪声或冗余的。如果直接在这些特征上构建模型,可能会导致模型复杂度高,训练时间长,且容易过拟合。

正因为如此,我们需要降维算法出马,来减少数据集维度,解决各种实际问题。

1. 降维的三大优势

在说降维算法之前,我们先单独聊聊降维,降维有三大优势:去除冗余特征、降低计算复杂度、利于数据可视化。

优势一:【去除冗余特征】

在数据中,一些特征可能是其他特征的线性组合,或者与某些特征高度相关。冗余特征不仅会增加模型的复杂性,还可能导致过拟合,降低模型的泛化能力。通过降维,我们可以去除这些冗余特征,从而简化模型。

假设我们有一个关于房价的数据集,其中包含了房屋的大小(Feature A)、房屋的年龄(Feature B)、房屋的卧室数量(Feature C)和房屋的卫生间数量(Feature D)。

如果我们发现Feature A和Feature B之间存在高度相关性(例如,房屋年龄越大,通常房屋面积也越大),那么Feature A就可以被Feature B所线性表示。

在这种情况下,我们可以考虑去除Feature A,因为它提供了与Feature B相似的信息。

又例如,如果我们发现Feature C和Feature D之间也存在高度相关性,这可能意味着卧室数量和卫生间数量在某种程度上是相关的(例如,在一些地区,随着房屋面积的增加,卧室和卫生间数量也会增加)。

在这种情况下,我们可以考虑去除其中一个特征,因为它们可能包含冗余信息。

从例子中,我们通过去除一些冗余特征,就可以简化模型,降低模型的复杂性,并可能提高模型的性能。

不过在实际应用中,选择合适的特征去除方法需要根据数据的特点和业务需求来决定,切不可无脑照搬。

优势二:【降低计算复杂度】

降低计算复杂度是降维可以解决的另一大问题,尤其是在处理大规模数据集时。通过减少数据集的维度,可以显著减少模型所需的计算资源,从而加快训练和预测的速度。

假设我们有一个关于用户行为的数据集,其中包含了成千上万个特征,如用户的人口统计信息、浏览历史、购买记录等。

如果直接在这些特征上构建一个线性回归模型,模型可能会非常复杂,训练和预测的速度会很慢。

但是通过使用主成分分析(PCA)进行降维,我们可以将原始特征的数量减少到几百个最重要的特征,这些特征能够解释大部分的方差。

在这种情况下,降维后的模型将具有更少的参数,训练和预测的速度将显著提高。其中,主成分分析(PCA)是降维算法中比较常见的算法之一,我们后续会讲解到。

优势三:【利于数据可视化】

降维还可以帮助我们更好地理解和可视化数据,通过将高维数据投影到二维或三维空间,我们可以更容易地观察数据的结构和模式。

高维数据投影到二维或三维空间后,我们可以使用各种可视化工具来辅助分析,如散点图、柱状图、热力图等,来展示数据之间的关系和模式。

假设我们有一个关于社交网络用户的数据集,其中包含了用户的基本信息(如年龄、性别、地理位置等)以及他们的社交行为(如发帖频率、互动数量、内容类型等)。这个数据集可能是高维的,包含了成百上千个特征。

为了更好地理解这个社交网络的数据结构和用户群体的行为模式,我们可以使用降维技术来简化数据。

例如,我们可以使用主成分分析(PCA)将数据投影到二维空间,然后使用t-SNE进一步细化到低维空间。

t-SNE是一种基于概率的降维技术,它能够在低维空间中保持高维空间中数据点之间的相似性。t-SNE通常用于生成数据点之间的复杂关系图,从而更好地理解数据的结构。

通过以上的降维处理,我们可以生成一张二维的散点图,每个点代表一个用户,点的坐标由PCA或t-SNE算法确定。

在这个散点图中,我们可以观察到不同年龄、性别和地理位置的用户的社交行为模式。

例如,我们可以看到哪些类型的用户更活跃,哪些类型的用户更倾向于与特定类型的内容互动。

通过这样的数据可视化,我们可以直观地看到用户群体的分布和行为模式,它可以帮助我们识别目标用户群体,了解他们的行为习惯,并据此优化用户体验,提高用户参与度和满意度。

2. 降维的两大方法

既然降维有那么多好处,那么它又是如何在人工智能领域发挥其优势的呢?这源于降维的两大方法:特征选择和特征提取。

方法一:【特征选择】

特征选择是从原始特征集合中选择出一组对目标变量有较强解释能力的特征子集的过程。这一过程的目标是去除冗余特征和不相关的特征,以简化模型并提高模型的性能。特征选择不改变数据本身的维度,只是简化特征空间。

比如,基于相关性分析来实现特征选择,通过计算特征与目标变量之间的相关系数或相关性矩阵,可以找出与目标变量相关性较高的特征。

通常选择相关性较高的特征,去除相关性较低的特征。因为相关性较高的特征通常被认为对目标变量有较强的解释能力,而相关性较低的特征可能与目标变量关系不大或包含冗余信息。

就拿我们刚举例过的房价数据集来继续假设一下吧。

房价的数据集中包含了房屋的大小(Feature A)、房屋的年龄(Feature B)、房屋的卧室数量(Feature C)和房屋的卫生间数量(Feature D),我们的目标是预测房价。

通过相关性分析,我们计算了每个特征与房价之间的相关系数。假设我们发现Feature A(房屋的大小)与房价之间的相关系数为0.8,而Feature B(房屋的年龄)与房价之间的相关系数为0.5。

在这种情况下,我们可以认为Feature A与房价之间的关联程度更高,因此选择Feature A作为重要的特征。而Feature B与房价之间的关联程度较低,可能包含冗余信息或其他不重要的因素。

因此,我们可能会考虑去除Feature B,或者在模型中给予较低的权重。这便是降维中的特征选择方法在实际问题中可以运用的地方。

方法二:【特征提取】

特征提取是通过数学变换将高维数据映射到低维空间的过程,同时尽可能保留原始数据中的信息,这种方法会改变数据的维度。特征提取的目标是减少数据的复杂性,同时保持数据的主要结构和特征。

由理论代入实践,我们来继续假设一些案例。

假设我们有一个关于社交媒体平台用户生成内容的数据集,其中包含了用户的帖子、评论、点赞、分享等互动行为,以及用户的人口统计信息、地理位置、兴趣偏好等特征。

我们期望通过数据集分析用户行为模式,识别有影响力的内容创作者,以及发现热门话题。

为了简化这个高维数据集并识别出关键的用户行为和内容特征,我们可以使用主成分分析(PCA)进行特征提取。

通过PCA,我们可以将原始数据投影到二维空间,生成一张散点图。在这个散点图中,我们可以观察到不同用户或内容的互动模式,以及它们如何与特定的人口统计特征或兴趣偏好相关联。

又或者,在文本数据分析中,每条帖子或评论都可以被表示为一个高维的特征向量,包括词汇频率、情感分析得分、主题模型等。

通过使用PCA或t-SNE进行特征提取,我们可以将文本的特征向量降低到二维或三维,生成一张关系图。

在这个关系图中,我们可以观察到内容之间的相似性和差异性,从而更好地理解内容的主题分布和用户互动模式。

通过这样的特征提取,我们可以识别出对用户行为和内容趋势最重要的特征,如情感倾向、话题相关性、互动热度等,从而简化数据并保持数据的主要结构和特征。

这对于新媒体平台的内容策略制定、用户参与度提升和市场趋势分析非常重要,因为它可以帮助他们优化推荐算法,提升用户体验,并制定更有效的内容营销策略。

通过特征提取,通过数学变换将高维数据映射到低维空间,简化数据并保持数据的主要结构和特征,可以在很多业务场景中发挥算法的魅力。

二、常见的降维算法

如果说,降维是一个目标,那么降维算法就是达到目标的具体技术或方法。降维是通过减少数据集的维度来简化数据的过程,而降维算法则是通过数学变换或特征选择,将这过程得以实现。

在人工智能领域,我们常用的降维算法有主成分分析(PCA)、线性判别分析(LDA)、因子分析(Factor Analysis)、局部线性嵌入(LLE)、等距映射(Isomap)、t-SNE、自编码器(Autoencoder)等。

主成分分析(PCA)

原理:PCA通过正交变换将数据投影到新的坐标系上,使得新坐标系的前几个主成分能够解释大部分的方差。

应用:PCA常用于数据可视化、特征提取和噪声过滤。

线性判别分析(LDA)

原理:LDA旨在找到投影方向,使得不同类别的样本尽可能分开,而同类的样本尽可能聚集。

应用:LDA常用于特征选择和分类任务,特别是在需要考虑不同类别间差异的情况下。

因子分析(Factor Analysis)

原理:因子分析类似于PCA,但它试图找到数据的潜在因子结构,并允许因子之间存在相关性。

应用:因子分析常用于心理学、市场研究等领域,用于发现数据中的潜在维度。

局部线性嵌入(LLE)

原理:LLE是一种非线性降维方法,它试图保持数据在低维空间中的邻近性关系。

应用:LLE适用于发现非线性数据中的结构,常用于图像和文本数据的降维。

等距映射(Isomap)

原理:Isomap是一种基于流形的降维技术,它通过保持数据点之间的局部距离关系来降低数据的维度。

应用:Isomap适用于高维空间中的数据,特别是在数据点之间存在复杂非线性关系时。

t-SNE

原理:t-SNE是一种基于概率的降维技术,它试图在低维空间中保持高维空间中数据点之间的相似性。

应用:t-SNE常用于生成数据点之间的复杂关系图,从而更好地理解数据的结构,特别是在图像和文本数据中。

自编码器(Autoencoder)

原理:自编码器是一种神经网络,它试图通过编码器将数据编码到一个低维空间,然后通过解码器重建原始数据。

应用:自编码器可以用于无监督的降维,特别是在数据量较大时,也常用于特征学习和数据去噪

降维算法各有优缺点,适用于不同的应用场景。在实际应用中,选择合适的降维算法需要根据数据的特点和降维的目的来决定。

为了能更清晰透彻地了解降维算法,接下来我们就取最常见的主成分分析(PCA),围绕这一算法展开进一步地深入解读。

1. 主成分分析(PCA)是什么?

我们从降维的概念中已知降维可以减少数据集的维度,同时保留数据集中的重要信息。

主成分分析(PCA)作为降维技术之一 ,它通过线性变换将原始数据映射到一个新的坐标系中,在新的坐标系中,数据的方差被最大化。

这样做的目的是为了找到数据中最重要的特征或者主成分,简化数据的分析和可视化过程。

PCA可以去除数据中的冗余特征,减少数据的存储和处理成本,也可以用于图像识别、语音识别等模式识别任务。

2. PCA的工作原理和步骤

主成分分析(PCA)的实现步骤主要分5步完成,我们可以从其工作原理和步骤中,进一步了解PCA的特点。

1.数据标准化】

数据标准化是数据预处理的一个重要步骤,它涉及到将数据集中的每个特征转换为具有零均值和单位方差的分布。首要的就是对原始数据进行标准化处理,让每个特征的均值为0,标准差为1。

其目的是将原始数据转换为具有相同尺度的标准化数据,以消除不同特征之间的量纲差异,确保各个特征对主成分分析的影响权重相同,避免某些特征的方差过大对主成分分析结果产生影响。

数据标准化的计算过程大致分三步:均值移除、标准差计算、数据标准化。

数据标准化后,每个特征的均值为0,标准差为1,从而保证了数据的相对一致性,有利于主成分分析的准确性和稳定性。

【2.计算协方差矩阵】

PCA通过计算数据集的协方差矩阵来确定数据之间的相关性。协方差矩阵表示了数据中各个特征之间的相关性程度,可通过对角线元素和非对角线元素进行进一步分析,得出结论。

在直言协方差矩阵前,我们要重温一些数学基础知识,相信大家上学时,都接触过方差和协方差。

方差是描述随机变量分布的一种统计量,它衡量了随机变量的取值偏离其均值的程度。在数学上,方差表示了每个样本与均值之间的差异的平方的平均值。方差越大,意味着样本的取值越分散;方差越小,意味着样本的取值越集中。

方差的计算公式如下:

而协方差,是衡量两个随机变量(或特征)变异程度的一种方式,它描述了两个变量如何一起变化。协方差可以是正的、负的或零,正协方差表示两个变量正相关,负协方差表示它们负相关,零协方差表示它们不相关。

协方差计算中,对于两个随机变量X和Y,它们的协方差可以通过以下公式来表示:

再就是计算协方差矩阵,对于数据集中的所有特征,我们需要计算每对特征之间的协方差,这将形成一个协方差矩阵。这个矩阵的对角线元素是每个特征的方差,表示该特征的分散程度。非对角线元素表示了不同特征之间的协方差,表示了不同特征之间的相关性。

协方差矩阵在PCA中的应用是为了找到能够最大程度地保留数据变异性的主成分。通过分析协方差矩阵,我们可以确定哪些特征之间存在较强的相关性,并据此进行降维。

【3.计算特征值和特征向量】

对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值表示了数据集中各个主成分的重要程度,而特征向量则表示了每个主成分的方向。

在特征值分解后,我们可以按照特征值的大小顺序来确定主成分的重要性,因为特征值越大,对应的主成分在数据中所解释的方差就越大。换句话说,特征值越大的主成分所包含的信息量越丰富,对数据集的整体变化越具有代表性。

特征向量指示了数据集在每个主成分方向上的变化趋势。换句话说,每个特征向量对应于一个特征值,它定义了一个主成分在数据空间中的方向。因此,特征向量是我们理解主成分在数据中如何分布和变化的关键。

特征值和特征向量的结果对于理解数据的内在结构、进行数据降维以及构建高效的机器学习模型至关重要。

它们可以帮助我们识别出最重要的数据特征,进行特征选择。或者通过保留最大的几个特征值对应的特征向量,实现数据的降维,简化模型。

它们还可以理解不同特征之间的关系,进行数据可视化和探索性数据分析。在某些情况下,特征值和特征向量还可以用于数据清洗,识别和去除噪声或异常值。

在Python中,可以使用NumPy库来计算矩阵的特征值和特征向量。以下是一个简单的示例代码:

在这个示例中,我们导入NumPy库,并创建了一个示例矩阵 A。然后,使用 np.linalg.eig() 函数来计算矩阵 A 的特征值和特征向量。这只是一个简单的示例,实际应用中,还需要根据实际情况做出灵活调整。

【4.选择主成分】

根据特征值的大小,选择前k个最大的特征值对应的特征向量作为新的主成分。这些主成分捕获了数据中最显著的变化方向,并且能够保留大部分数据的信息。

通常,选择的k值是降维后的维度,即最终保留的主成分个数。k 代表了降维后数据的新维度数。选择 k 个主成分意味着我们将原始数据从高维空间投影到由 k 个主成分定义的低维空间。

比如说,我们有一个包含1000个样本和50个特征的数据集。通过PCA分析,我们计算出了协方差矩阵的特征值和特征向量。我们发现前5个特征值远大于其他特征值,因此我们选择这5个特征值对应的特征向量作为主成分。这意味着我们将数据从50维降维到5维,同时保留了数据中的大部分信息。

【5.投影数据】

投影数据就是将原始数据投影到选定的主成分上,得到降维后的数据集。

这一步实现了数据的降维,也是主成分分析(PCA)中的最后一个步骤:将数据从原始的特征空间转换到新的特征空间。

我们先理解一下,什么是投影。在数学上,投影是一种将数据从一个空间转换到另一个空间的过程。在PCA中,我们将原始数据从原始特征空间(高维空间)投影到由主成分定义的新特征空间(低维空间)。

对于原始数据集中的每个样本,我们需要计算它在每个主成分上的投影。这个过程可以使用以下公式表示:

通过将每个样本在所有主成分上的投影相加,我们可以得到降维后的数据集。这个数学过程可以表示为:

完成计算后,接下来就是数据转换,通过上述投影过程,每个样本都被转换到了新的特征空间,这个空间由选定的主成分定义。在新的特征空间中,每个样本都由主成分的线性组合表示,从而实现了数据的降维。

通过投影,我们可以得到降维后的数据集,从而简化数据并保留数据中的关键信息。这一步可以让数据集更加简洁、易于理解,也适合用于后续的数据分析和建模任务。

通过以上五步,从数据标准化直到投影数据,我们详细讲解了主成分分析(PCA)的实现过程。PCA的应用非常广泛,包括但不限于数据可视化、特征提取、数据压缩、过滤噪声等。

知其然也知其所以然,知其原理后方可结合应用场景解决问题。接下来,我们不妨看看降维算法在实际场景中的案例应用。

三、场景案例-人脸识别

别小看降维算法,其貌不扬的一堆数学公式和逻辑关系可以解决很多业务问题。

就拿我们身边再熟悉不过的人脸识别场景为例,降维算法可以用于特征提取,帮助区分不同人的面部特征,提高识别的准确性。

众所周知,人脸识别已经运用在了各行各业,刷脸支付,门禁系统,银行转账,检票系统等等。

同时,科技也是把双刃剑,人工智能(AI)带来便利和高效,也引发了越来越多的问题,比如“AI换脸”问题。有新闻报道,泰勒·斯威夫特(Taylor Swift)便是受害者之一。由AI合成的霉霉“不雅照”在国外社交疯传,带来了相当恶劣的影响。

科技是中性的,我们作为AI的使用者,要致力于将AI运用在有助于社会发展,为人类谋福祉的领域中去,少动一些蝇营狗苟的歪心思。

降维算法在人脸识别的落地应用中,我们最熟悉的场景之一就是高铁检票了。我们在检票环节,需要你刷身份证进站的同时还需通过人脸识别。

高铁站的人脸识别检票系统,不仅需要承载大量的人脸数据,还需要保证高质量的准确性。旅游高峰期,高铁站的客流量当日便可冲破千万,而每一张脸在初入系统时都具有高维特征。

所以,人脸识别中的降维算法不仅需要处理和分析海量的图像数据,还需要在非常短的时间内提取出人脸的关键特征,在降维之后依旧保证准确度。

我们不妨就来拆解一下,高铁检票系统中的人脸识别,是如何通过降维算法,准确地识别旅客的身份,大大提高检票效率和检票体验的。

就在我们站在检票口的那一瞬间,高铁检票系统会使用高清摄像头捕捉旅客的面部图像。这些图像通常包括旅客的正面脸部,以便进行准确的识别。

为了提高识别的准确性和鲁棒性,需要对采集到的图像进行预处理。这包括灰度化、归一化、去噪和边缘增强等步骤,以改善图像质量并标准化数据。

图像数据预处理后,就可以通过降维算法进行特征提取。这里补充一下,在实际应用中,特征提取往往不会依赖单一算法实现,特别是像高铁检票这类大量又复杂且还需高准确度的系统,只不过我们本篇重点说的是降维算法,所以会以降维算法为重点来讲述。

如果待识别的面部数据复杂因素过多,就会影响识别系统的特征提取准确度,比如有时候你戴上眼镜或者戴着帽子时,系统就容易识别错误。

特性提取后,提取出的特征需要被编码成一个紧凑的向量,以便于后续的识别和匹配操作。

接下来就是系统识别决策环节,如果图像的特征编码与某个已注册旅客的特征编码足够相似,系统将认为该旅客是已注册的旅客,并允许其通过检票口。

此时,检票窗口会反馈识别成功,检票门闸会自动打开,你就可以顺利通行啦。

没想到吧,就在你进入检票口到通过检票口的短短几秒间,人脸识别系统就借助降维算法,完成了图像采集、预处理、特征提取、特征编码、编码比较、识别决策等一长串自动化流程。

不仅如此,人脸识别技术涉及到旅客的生物识别信息,因此安全性至关重要。高铁检票系统通常会采用加密技术和安全协议来保护旅客的数据,并确保系统的安全性。

四、最后总结

写在最后,我们来总结一下,本篇主要围绕降维算法展开介绍。

降维算法属于无监督学习中的方法。无监督学习不需要标签数据来进行训练,而是通过数据本身的特性来发现数据中的模式和结构。想了解无监督学习的朋友,可以看看这篇现在入门“AI无监督学习”还来得及(9000字干货)

降维算法就是无监督学习的一种应用,其核心目的是通过减少数据集的维度来简化数据,同时尽可能保留原始数据中的关键信息。

降维有三大优势和两大方法。三大优势指的是去除冗余特征、降低计算复杂度、利于数据可视化。两大方法则是特征选择和特征提取。

在常见的降维算法中,主成分分析(PCA)的应用非常广泛,本篇剖析了PCA的工作原理和实现步骤。在场景案例中,以人脸识别为例,介绍了降维算法在检票系统的人脸识别环节是如何发挥又快又好的价值的。

由此可见,未来已来,AI就在我们身边,算法也并没有我们以为的那么高不可攀,只要我们保持开放包容的心态,去学习,去接纳,就可以让AI帮助我们解决很多问题。

作者:果酿,公众号:果酿产品说

本文由 @果酿 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自 Unsplash,基于CC0协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 📚本文主要介绍了,这是无监督学习中的一种算法,主要用于减少数据集的维度,以简化数据模型,提高数据处理效率,并可能改善模型的性能。文章首先从概念入手,介绍了降维算法的技术原理和特点,然后结合实际场景案例,加深了读者对降维算法的应用和理解。

    ➡️降维算法的概念:降维算法是机器学习中用于减少数据集维度的一种技术,其目的是在尽可能保留数据中有用信息的前提下,降低数据的复杂性。减少数据集维度是指通过数学变换或特征选择等方法,降低数据集中特征的数量或降低数据点在某个空间中的表示的维度。

    ➡️降维算法的应用:降维算法的主要目的是为了简化数据模型,提高数据处理的效率,并可能改善模型的性能。在实际应用中,数据集往往包含大量的特征,这些特征中有的可能彼此相关,有的可能是噪声或冗余的。如果这些特征不进行处理,可能会导致模型的复杂度过高,影响模型的性能。因此,通过降维算法可以有效地处理这些特征,提高模型的性能。

    ➡️降维算法的案例:文章通过实际的案例,详细介绍了降维算法的应用。例如,在客户细分中,可以通过降维算法将客户分为不同的群体,帮助企业更好地了解客户,制定更有效的营销策略。在文档管理和分析中,可以通过降维算法将相似的文档归为一类,帮助企业更好地管理和分析文档。在学情分析中,可以通过降维算法完成学情分析,帮助学校或教育机构更好地了解学生的学习情况,制定更有效的教学策略。

    来自广东 回复