第1章:降维简介:什么是降维? 在统计学、机器学习和信息论中,降维是将n维降为k维的过程,其中k<n。 数据降维 数据可视化: 一维数据: 在这里,我们经常把维度称为特征。例如,我们用一个一维数组开始绘制数轴上的值。 二维数据: 现在,我们有一个二维数组,并开始在彼此正交的X和Y轴上绘制数据。 三维数据: 现在,我们将使用3D数组,并在X,Y和Z轴上进行绘制。 我们可以看到,随着维度的增加,对我们而言,数据的可视化变得越来越困难。 n维数据: 对于N- d数据,我们需要N个维度,无法再对其进行可视化。因此,为了可视化3D以上的任何数据,我们将使用降维技术将其降为2维或3维。 降维的本质: 在高维数据的微观层次上分析每一个维度是不可能的。我们可能需要几天或几个月的时间来进行有意义的分析,这些分析需要大量的时间、金钱和人力。训练一个高维的数据会给我们带来如下问题:
降维的组成部分: 降维有两个主要的组成部分,我们将在这里详细讨论 1)特征选择: 大多数情况下,这些特征与我们的问题无关。例如,我们正在训练一个预测人身高的机器学习模型,我们拥有特征(体重,肤色,痣,婚姻状况,性别)的数据。我们可以看到肤色、痣和婚姻状况等特征与人的身高没有关系。因此,我们需要找到一种解决方案,以找到对我们的任务最有用的特征。我们可以通过以下方式实现:
特征选择涉及到寻找原始数据的子集,使它们的信息损失最小。它有以下三种策略:
2)特征投影: 特征投影又称特征提取,是将高维空间中的数据转换为低维空间中的数据。数据转换可以是线性的,也可以是非线性的。 对于线性变换,我们应用主成分分析(PCA)和线性判别分析(LDA);对于非线性变换,我们应用T-SNE。 第2章:主成分分析1、PCA介绍 PCA主要用作探索性数据分析(EDA)中的工具和用于建立预测模型的工具。它通常用于可视化群体之间的遗传距离和相关性。PCA可以通过数据协方差(或相关)矩阵的特征值分解或数据矩阵的奇异值分解来完成。 2、PCA的工作方法: 为了更好地理解PCA的原理,让我们使用2D数据。
最终,我们得到了下面的拟合(高度拟合),它解释了特征的最大方差。 最佳拟合线 PCA如何找到最佳拟合线的呢? 让我们从一个点开始。 为了确定直线与数据的匹配程度,PCA将数据投射到它上。 i)可以测量从数据到直线的距离,并试图找到一条最小化这些距离的直线。 ii)或者可以试着找到一条直线,使投影点到原点的距离最大化。 数学直觉: 为了理解这种技术背后的数学原理,让我们回到我们的单数据点概念。
因此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、优点和缺点: 优点 :
缺点:
4、通过python代码段在MNIST数据集上进行PCA: 可以从kaggle 下载data(train.csv)(https://www./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个类的数据。 我们可以找到一个能将这三组分开的平面。 算法:
3、LDA的扩展 当分布的平均值是共享的(具有高方差的组)时,线性判别分析会失败,因为LDA不可能找到使两个类线性分离的新轴。当数据不是线性可分的时候,LDA也会失败。在这种情况下,我们可以使用非线性判别分析。
4、在IRIS数据集上LDA的Python Sklearn实现 让我们使用IRIS数据集 像PCA一样,LDA也可以使用sklearn实现。使用LDA,我们已将数据从4维减少到2维。 为了了解PCA和LDA工作的区别,让我们看看下面的图。PCA试图使方差最大化,而LDA则试图使三个类别的可分离性最大化。 在PCA中,他们的数据有一些重叠,很难找到一条线把两组分开。LDA可以帮助我们将这三个组分开,因为他们的数据重叠较少。 第4章:T-SNE1、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、优点和缺点: 优点:
缺点:
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寻找特征向量之前不进行归一化,他们会更关注大值维度,特征向量不会捕捉其他维度中的信息。 因此,特征归一化用于摆脱公斤,厘米,毫米,升等刻度。在归一化后,我们将所有数据绘制在一个单位正方形内。 数据归一化技术: 数据可以通过多种方式进行转换。一些最常用的技术是:
当我们知道数据的近似上界和下界很少或没有离群值值时,我们将使用这种技术。当我们知道我们的数据在整个范围内大致均匀分布时也使用此技术。缩放后,所有值将位于[0,1]范围内。 2.Feature Clipping 当数据包含极端异常值时,这些技术将某个值之上或之下的特征值限制为一个固定值。例如,将高度超过120cm的所有值裁剪为正好120cm。这意味着我们将这些值压缩到一个固定的范围。 3.Log Scaling: 当数据的分布遵循幂律或是帕雷托分布时,即一个值有很多点而其他值很少时,使用它。 4. Z分数或标准化: 标准化后,均值将转换为0,标准差将转换为1。当离群值很少时(不是极端到需要剪裁),它是很有用的。 最后处理成千上万的特征是任何数据科学家必备的技能。我们每天生成的数据量是空前的,我们需要找到不同的方法来弄清楚如何使用它们。 |
|
来自: taotao_2016 > 《AI》