机器学习:降维技术完整指南

第1章:降维简介:

什么是降维?

在统计学、机器学习和信息论中,降维是将n维降为k维的过程,其中k<n。

数据降维

数据可视化:

一维数据:

在这里,我们经常把维度称为特征。例如,我们用一个一维数组开始绘制数轴上的值。

二维数据:

现在,我们有一个二维数组,并开始在彼此正交的X和Y轴上绘制数据。

三维数据:

现在,我们将使用3D数组,并在X,Y和Z轴上进行绘制。

我们可以看到,随着维度的增加,对我们而言,数据的可视化变得越来越困难。

n维数据:

对于N- d数据,我们需要N个维度,无法再对其进行可视化。因此,为了可视化3D以上的任何数据,我们将使用降维技术将其降为2维或3维。

降维的本质:

在高维数据的微观层次上分析每一个维度是不可能的。我们可能需要几天或几个月的时间来进行有意义的分析,这些分析需要大量的时间、金钱和人力。训练一个高维的数据会给我们带来如下问题:

  • 存储数据所需的空间随着维度的增加而增加。
  • 维度越小,训练机器学习模型所需的时间就越少。
  • 随着维度的增加,过度拟合机器学习模型的可能性也会增加。
  • 我们无法可视化高维数据。通过降维,我们会将数据缩减为2D或3D,以实现更好的可视化。
  • 它将删除我们数据中的所有相关特征。

降维的组成部分:

降维有两个主要的组成部分,我们将在这里详细讨论

1)特征选择:

大多数情况下,这些特征与我们的问题无关。例如,我们正在训练一个预测人身高的机器学习模型,我们拥有特征(体重,肤色,痣,婚姻状况,性别)的数据。我们可以看到肤色、痣和婚姻状况等特征与人的身高没有关系。因此,我们需要找到一种解决方案,以找到对我们的任务最有用的特征。我们可以通过以下方式实现:

  • 业务理解、领域知识和专家解决方案可以帮助我们选择影响响应变量(目标)的预测变量(特征)。但是,如果我们找不到有用的预测变量,或者我们错过了有用的特征,它们就有可能丢失信息。
  • 我们建立了一个经典的机器学习模型,并根据与目标变量的相关性来选择特征。与拟合度低的特征相比,拟合度高的特征更容易被选择。
  • 减少特征也可以帮助我们解决此问题。
  • 另一种方法是删除所有相关的特征。例如,如果我们有与其他特征(f1=2f2+3f3)的线性组合的特征,那么它们将不会向我们的数据添加任何额外的信息。因此,这些特征对我们的机器学习模型训练不再有用。

特征选择涉及到寻找原始数据的子集,使它们的信息损失最小。它有以下三种策略:

  1. Filter策略:获取更多数据信息的策略。
  2. Wrapper策略:根据模型的准确度选择特征
  3. Embedded策略:根据模型预测误差,我们将决定是否保留或删除所选择的特征。

2)特征投影:

特征投影又称特征提取,是将高维空间中的数据转换为低维空间中的数据。数据转换可以是线性的,也可以是非线性的。

对于线性变换,我们应用主成分分析(PCA)和线性判别分析(LDA);对于非线性变换,我们应用T-SNE。

第2章:主成分分析

1、PCA介绍

PCA主要用作探索性数据分析(EDA)中的工具和用于建立预测模型的工具。它通常用于可视化群体之间的遗传距离和相关性。PCA可以通过数据协方差(或相关)矩阵的特征值分解或数据矩阵的奇异值分解来完成。

2、PCA的工作方法:

为了更好地理解PCA的原理,让我们使用2D数据。

  1. 首先我们对数据进行归一化处理,使平均值移动到原点,所有数据都在一个单位正方形中。
  2. 现在我们将试着用一条线来拟合数据。为此,我们将尝试用一条随机的线。现在我们将旋转这条直线,直到它最适合数据为止。

最终,我们得到了下面的拟合(高度拟合),它解释了特征的最大方差。

最佳拟合线

PCA如何找到最佳拟合线的呢?

让我们从一个点开始。

为了确定直线与数据的匹配程度,PCA将数据投射到它上。

i)可以测量从数据到直线的距离,并试图找到一条最小化这些距离的直线。

ii)或者可以试着找到一条直线,使投影点到原点的距离最大化。

数学直觉:

为了理解这种技术背后的数学原理,让我们回到我们的单数据点概念。

将数据投影到线上之后,我们将得到一个直角三角形。根据毕达哥拉斯定理,我们得到A²=B²+C²。

我们可以看到B和C彼此成反比。这意味着如果B变大,则c必须变小,反之亦然。

因此PCA既可以最小化到直线的距离,也可以最大化从投影点到原点的距离。

从投影点到原点的最大距离更容易计算。因此,PCA会找到最佳拟合线,以使从投影点到原点的距离平方的总和最大。

距离平方和的最大值

pca的成本函数

注意:这里我们采用距离的平方,以便负值不会抵消正值。

现在我们得到了最佳拟合线y = mx + c。这称为PC1(主成分1)。假设比例为4:1,这意味着我们在X轴上移动4个单位,在Y轴上移动1个单位,这说明数据大部分分布在X轴上。

根据毕达哥拉斯定理,a²=b²+c²=>a²=4²+1²=> sqrt(17)=> 4.12,但是数据是按比例缩放的,因此我们将每一边除以4.12,以获得单位向量。即

F1 = 4 / 4.12 = 0.97

F2 = 1 / 4.12 = 0.242

我们刚刚计算的单位向量称为特征向量或PC1,特征的比例(0.97:0.242)称为loading scores。

SS(PC1的距离)= PC1的特征值。

sqrt(PC1的特征值)= PC1的奇异值。

现在我们对其他特征做同样的事情来得到主成分。为了投影数据,现在我们将旋转轴,使PC1与x轴平行(水平)。

旋转轴,使PC1变为水平

根据主成分投影数据

我们可以使用在PCA中计算的特征值来计算方差。

假设我们得到方差:PC1 = 0.83和PC2 = 0.17

现在,如果要将数据从2D转换为1D,我们选择feature1作为最终的1D,因为它覆盖了83%。

这就是主成分分析的工作原理,它根据主成分的方差估计需要消除的特征,从而进行降维。

3、优点和缺点:

优点 :

  • 它删除了相关特征。
  • 提高了模型效率。
  • 减少过度拟合。
  • 改善可视化效果。

缺点:

  • PCA是一种线性算法,对于多项式或其他复杂函数来说效果不佳。我们可以找到一些如何使用核PCA来处理此类数据的方法。
  • 在PCA之后,如果我们不选择正确的维数来消除,我们可能会丢失很多信息。
  • 由于原始特征转换为不像原始特征那样可读的主成分,因此可解释性较低。
  • 它保留全局形状而不是局部形状。

4、通过python代码段在MNIST数据集上进行PCA:

可以从kaggle 下载data(train.csv)(https://www.kaggle.com/c/digit-recognizer/data)

加载mnist数据

mnist图像的维度表示

作为预处理步骤,我们对数据进行标准化处理,以使平均值移至原点,并且所有数据均位于单位正方形中。

PCA有两种应用方式,一种是寻找特征向量,另一种是使用sklearn实现。在大多数情况下,这两种实现都会得到类似的结果。

方法1:

我们将得到协方差矩阵,该协方差矩阵用于求特征值和特征向量。

在将数据转换为二维之后,我们将使用这两个特征来实现数据的可视化。

利用特征向量进行主成分分析

方法:2

我们将使用sklearn的PCA实现。

PCA的Sklearn实现

通过sklearn进行主成分分析

让我们看看每个特征解释的方差百分比。

由每个特征解释的方差百分比

如果我想保留80%的数据信息,那么我可以将维度减少到110。

第3章:线性判别分析(LDA):

1、简介:

LDA是器学习和统计、模式识别中预处理步骤中最常用的降维技术。 此算法的目标是将数据集投影到具有类别可分的低维空间,以避免过度拟合并降低机器计算量。

2、LDA的工作方式:

PCA和LDA都是线性约简技术,但与PCA不同的是,LDA侧重于最大化两个组的可分性。

LDA使用特征来创建一个新轴,并尝试将数据投射到一个新轴上,以最大限度地分离两个类。这就是为什么LDA是一种监督学习算法,因为它利用目标值来寻找新的轴。

PCA试图找到方差最大的成分,而LDA则试图找到新的轴

i)最大化类的可分离性

ii)最小化类之间的方差。

通过最小化方差,我们可以很好地分离各个组的聚类。 与最大化组的平均值一样重要。

LDA根据最大化下列公式的准则找到新的坐标轴

LDA的成本函数

2个类以上的LDA:

在这种情况下,如果数据有2个以上的组,LDA会找出整个数据的平均值和各个组之间的中心,它试图最大化从中心平均值到各个组平均值的距离。为了更好地理解,请看以下3个类的数据。

我们可以找到一个能将这三组分开的平面。

算法:

  1. 计算数据集中不同类别的d维平均向量。
  2. 计算散点矩阵(类间和类内散点矩阵)。
  3. 计算散点矩阵的特征向量(e1,e2,…,ed)和相应的特征值(λ1,λ2,…,λd)。
  4. 通过减少特征值对特征向量进行排序,并选择特征值最大的k个特征向量以形成ad×k维矩阵W(其中每列代表一个特征向量)。
  5. 使用此d×k特征向量矩阵将样本转换到新的子空间上。Y = X×W(其中X是代表n个样本的x维矩阵,y是新子空间中变换后的n×k维样本)。

3、LDA的扩展

当分布的平均值是共享的(具有高方差的组)时,线性判别分析会失败,因为LDA不可能找到使两个类线性分离的新轴。当数据不是线性可分的时候,LDA也会失败。在这种情况下,我们可以使用非线性判别分析。

  1. QDA:每个类都使用自己的方差估计值(如果有多个输入变量,则为协方差)。
  2. FDA:使用输入的非线性组合(例如样条曲线)。
  3. RDA:将正则化引入方差(实际上是协方差)的估计中,以缓和不同变量对LDA的影响。

4、在IRIS数据集上LDA的Python Sklearn实现

让我们使用IRIS数据集

像PCA一样,LDA也可以使用sklearn实现。使用LDA,我们已将数据从4维减少到2维。

为了了解PCA和LDA工作的区别,让我们看看下面的图。PCA试图使方差最大化,而LDA则试图使三个类别的可分离性最大化。

在PCA中,他们的数据有一些重叠,很难找到一条线把两组分开。LDA可以帮助我们将这三个组分开,因为他们的数据重叠较少。


第4章:T-SNE

1、T-SNE简介:

T-SNE是Laurens van der Maaten和Geoffrey Hinton(深度学习之父)开发的一种经常用于可视化的机器学习算法。它是一种非线性降维技术,非常适合在二维或三维的低维空间中嵌入高维数据进行可视化。它以二维或三维点对每个高维对象进行建模,使得相似的对象由附近的点建模,而不相似的对象则由远处的点建模。

T-SNE被广泛应用于可视化领域,包括计算机安全研究、音乐分析、癌症研究、生物信息学和生物医学信号处理。它经常被用于可视化高级表示的人工神经网络学习。

2、工作方式

在进行数学直觉之前,让我们学习T-SNE涉及的一些术语。

邻域:点的邻域定义为几何上相互接近的点的聚类。

嵌入:嵌入是通过创建xi¹将高维空间中的点投影到低维空间中的过程。

随机:

首先,T-SNE以这样的方式在几对高维对象上构建概率分布,即相似的对象被拾取的可能性很高,而相异的点被拾取的可能性非常小。这就是为什么将T-SNE称为随机(概率)的原因。

T-SNE构造了多对高维对象的概率分布,使得相似的对象被选中的概率很高,而不相似的点被选中的概率极小。这就是为什么T-SNE被称为随机(概率)。

T-SNE定义了在低维图中的点上的相似概率分布,相对于图中点的位置,它使两个分布之间的Kullback-Leibler散度(KL散度)最小化。请注意,虽然原始算法使用对象之间的欧氏距离作为其相似度度量的基础,但这应该根据需要进行更改。

T-SNE的成本函数是

3、处理拥挤问题:

拥挤是指我们在较小的空间中尝试项目点的情况,由于空间不足,所有内容都变得混乱。

T分布:

高斯分布

通过使用高斯分布,所有低相似度值都落在曲线的尾部区域,我们可以看到尾部的空间很小,不像曲线两端的T分布那么高。最终,低相似度值与不同聚类的其他低相似度值混合在一起。为了克服这个问题,传统的SNE算法被T-SNE代替,其中T表示T分布。

高斯分布与T分布

4、优点和缺点:

优点:

  • 与PCA不同,T-SNE是一种非线性约简技术,这意味着它可以很好地处理任何多项式或非线性数据。
  • T-SNE能够保留局部和全局结构,而PCA则尝试将高维投影到低维,以解释数据中的大部分方差。因此,它只关心全局结构。
  • T-SNE被广泛用于可视化任务。

缺点:

  • T-SNE具有二次时间和空间复杂度。
  • 在处理大型机器学习数据集时,不建议使用T-SNE。
  • T-SNE是一种非参数映射方法,这意味着它没有将给定点映射到低维空间的显式函数。T-SNE根据该点的邻域将该点嵌入到低维中。因此,当一个测试数据点出现时,由于之前没有出现,我们需要再次训练整个T-SNE算法进行嵌入,由于它的二次时间复杂度,这种方法很少被使用。

Barnes-Hut SNE (BHTSNE)

这项技术是在2014年引入的,与T-SNE非常相似,但是有一些细微的变化。该算法利用了天文学家常用的Barnes-Hut算法进行N body模拟来近似对应点间的力。

与标准T-SNE(O(N log N))相比,这些算法带来了实质性的计算优势,远优于二次时间复杂度。可以使用sklearn manifold.TSNE库轻松地实现,方法是使用method ='barnes-hut'属性。

5、通过python代码段在MNIST数据集上进行T-SNE:

我们已经看到了PCA在MNIST上的工作方式。现在,让我们尝试使用相同的数据集进行T-SNE。与PCA不同,T-SNE具有两个参数:Perplexity和n_iter。我们将尝试使用这些参数的不同值来拟合数据。

使用perplexity = 30,n_iter = 1000

使用perplexity =50,n_iter = 1000

使用perplexity = 2,n_iter = 1000

我们可以看到perplexity降低后,数据会与所有聚类混合。因此,选择正确的参数值始终很重要。

使用perplexity = 100,n_iter = 1000

perplexity= 100在我们的数据上运行良好。但是请注意,我们只在5000个数据点上尝试了T-SNE,因为它的时间复杂性,这会花费大量时间。

第5章:数据归一化:

通过数据归一化,我们可以将数据从无限范围转换为范围的有限集。

降维之前需要数据归一化:

假设有两个特征,其中一个特征的值范围是1到10(市场每小时的购买者数量),而另一个特征的值范围是50到1000(市场的访问者数量)。可能每小时的访客数是>>每小时的买家数。

因为像PCA这样的技术是基于方差最大化的,如果我们在使用PCA寻找特征向量之前不进行归一化,他们会更关注大值维度,特征向量不会捕捉其他维度中的信息。

因此,特征归一化用于摆脱公斤,厘米,毫米,升等刻度。在归一化后,我们将所有数据绘制在一个单位正方形内。

数据归一化技术:

数据可以通过多种方式进行转换。一些最常用的技术是:

  1. Linear Scaling或者min-max Scaler:

X =数据点

Xmin =最小数据点

Xmax =最大数据点

当我们知道数据的近似上界和下界很少或没有离群值值时,我们将使用这种技术。当我们知道我们的数据在整个范围内大致均匀分布时也使用此技术。缩放后,所有值将位于[0,1]范围内。

2.Feature Clipping

当数据包含极端异常值时,这些技术将某个值之上或之下的特征值限制为一个固定值。例如,将高度超过120cm的所有值裁剪为正好120cm。这意味着我们将这些值压缩到一个固定的范围。

3.Log Scaling:

当数据的分布遵循幂律或是帕雷托分布时,即一个值有很多点而其他值很少时,使用它。

4. Z分数或标准化:

标准化后,均值将转换为0,标准差将转换为1。当离群值很少时(不是极端到需要剪裁),它是很有用的。

最后

处理成千上万的特征是任何数据科学家必备的技能。我们每天生成的数据量是空前的,我们需要找到不同的方法来弄清楚如何使用它们。

(0)

相关推荐