导航:首页 > 研究方法 > 降纬分析方法

降纬分析方法

发布时间:2023-05-13 10:53:29

1. 降维的方法主要有

在分析高维数据时,降维(Dimensionality rection,DR)方法是我们不可或缺的好帮手。

作为数据去噪简化的一种方法,它对处理大多数现代生物数据很有帮助。在这些数据集中,经常存在着为单个样本同时收集数百甚至数百万个测量值的情况。

由于“维度灾难”(curse of dimensionality)的存在,很多统计方法难以应用到高维数据上。虽然收集到的数据点很多,但是它们会散布在一个庞大的、几乎不可能进行彻底探索的高维空间中。

通过降低数据的维度,你可以把这个复杂棘手的问题变得简单轻松。除去噪音但保存了所关注信息的低维度数据,对理解其隐含的结构和模式很有帮助。原始的高维度数据通常包含了许多无关或冗余变量的观测值。降维可以被看作是一种潜在特征提取的方法。它也经常用于数据压缩、数据探索以及数据可视化。

虽然在标准的数据分析流程中已经开发并实现了许多降维方法,但它们很容易被误用,并且其结果在实践中也常被误解。

本文为从业者提供了一套有用的指南,指导其如何正确进行降维,解释其输出并传达结果。

技巧1:选择一个合适的方法

当你想从现有的降维方法中选择一种进行分析时,可用的降维方法的数量似乎令人生畏。事实上,你不必拘泥于一种方法;但是,你应该意识到哪些方法适合你当前的工作。

降维方法的选择取决于输入数据的性质。比如说,对于连续数据、分类数据、计数数据、距离数据,它们会需要用到不同的降维方法。你也应该用你的直觉和相关的领域知识来考虑收集到的数据。通常情况下,观测可以充分捕获临近(或类似)数据点之间的小规模关系,但并不能捕获远距离观测之间的长期相互作用。对数据的性质和分辨率的考虑是十分重要的,因为降维方法可以还原数据的整体或局部结构。一般来说,线性方法如主成分分析(Principal Component Analysis, PCA)、对应分析(Correspondence Analysis, CA)、多重对应分析(Multiple Correspondence Analysis, MCA)、经典多维尺度分析(classical multidimensional scaling, cMDS)也被称为主坐标分析(Principal Coordinate Analysis, PCoA) 等方法,常用于保留数据的整体结构;而非线性方法,如核主成分分析(Kernel Principal Component Analysis, Kernel PCA)、非度量多维尺度分析(Nonmetric Multidimensional Scaling, NMDS)、等度量映射(Isomap)、扩散映射(Diffusion Maps)、以及一些包括t分布随机嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE)在内的邻近嵌入技术,更适合于表达数据局部的相互作用关系。NE技术不会保留数据点之间的长期相互作用关系,其可视化报告中的非临近观测组的排列并没有参考价值。因此,NE的图表不应该被用于数据的大规模结构的推测

2. 机器学习四大数据分析降维方法详解

【导读】近几年来,随着人们对数据分析领域的情况愈发了解后,很多大数据分析师利用机器学习四大数据分析降维方法来解决一些数据分析过程中的难题,从而更容易更便捷的工作和避免一些工作中的重复动作和流程,今天小编就对机器学习四大数据分析降维方法进行详细解读,希望对大家有所帮助。

就像在拥挤的体育场内找到特定人物并不容易,将所有数据都放在同一个物理位置并不一定会使发现变得容易,另外由于来自原始系统的数据复制缓慢且成本高昂,因此相关数据中只有一小部分倾向于存储在湖泊中,更为复杂的是,许多公司可能拥有数百个分布在多个本地数据中心和云提供商之间的数据存储库,当涉及数据集成时,以原始格式存储数据并不会消除使数据适应每个机器学习过程的需求,相反它只是将执行该过程的负担转移给了数据科学家,尽管湖中可能具有所需的处理能力,但数据科学家通常不具备集成数据所需的技能。

过去几年中出现了一些数据准备工具,以使数据科学家可以访问简单的集成任务

更复杂的任务仍然需要高级技能。IT部门通常需要通过在数据湖中为特定的ML流程创建新的数据集来进行救援,从而大大减慢了进度,数据虚拟化的好处为了应对这些挑战,组织已开始应用新流程,例如数据虚拟化,可以提供对任何数据的单一访问点-无论位于何处,也无论其本机格式如何-都无需先将其复制到中央存储库中,提供相同物理数据的不同逻辑视图,而无需创建其他副本。这提供了一种快速而廉价的方式来提供数据的不同视图,以满足每种类型的用户和应用程序的独特需求,这些逻辑视图可以通过使用复杂的优化技术在物理数据之上应用复杂的数据转换和组合功能来创建,以实现最佳性能。

具体而言,数据虚拟化通过以下方式帮助应对两个主要挑战

数据发现使数据科学家可以访问更多数据,由于无需从原始系统复制数据集即可在系统中使用,因此添加新内容会更快,更便宜。这些工具为实际复制哪些数据提供了完全的灵活性。例如,对于某个过程,您可以选择从源实时访问所有数据,而对于另一个过程,则可以选择首先在物理存储库(例如数据湖)中实现所有必需的数据,而对于另一个过程,则可以选择可以选择仅体现一部分数据的混合策略(例如,将在流程中频繁使用或可能对许多流程有用的数据)。

提供的所有数据集提供了可搜索的,可浏览的目录

该目录包含有关每个数据集的大量元数据、标签,列说明和使用信息,例如谁使用每个数据集,何时以及如何使用,数据集的内容也可以直接从此目录中搜索和查询。

工具根据一致的数据表示和查询模型公开所有数据

这意味着无论数据最初存储在关系数据库,Hadoop集群,SaaS应用程序还是NoSQL系统中,数据科学家都可以看到所有数据,就像将其存储在单个关系数据库中一样。可以通过SQL,REST或OData等标准方法访问此“虚拟数据库”,这些方法支持包括R,Scala,Python和Spark
ML等标准工具/语言。

使IT数据架构师和数据科学家之间的职责明确,成本有效地分开

IT数据架构师可以使用DV创建“可重用的逻辑数据集”,以对许多流程有用的方式公开信息,这些逻辑数据集也不需要物理复制数据,因此与传统方法相比,创建和维护它们的工作量要少得多,然后数据科学家可以对这些可重复使用的数据集进行修改,以满足每个ML流程的需求。根据定义,可重用的逻辑数据集会处理诸如转换和性能优化之类的复杂问题,因此数据科学家可以根据需要执行最终(且更轻松)的自定义。

现代工具还包括高级管理功能

因此可以集中实施安全策略,可以保留虚拟数据集的沿袭,并且可以在多个ML流程之间重用常见的转换和计算,数据虚拟化平台还可以将ML分析的结果无缝地呈现给业务用户和应用程序,因此可以轻松地将其合并到业务流程和报告中,随着机器学习和数据湖的不断扩散并支持现代分析,数据虚拟化是大幅提高数据科学家生产率的关键,它使他们可以专注于自己的核心技能,而不是数据管理,使数据科学家可以访问更多数据并利用基于目录的数据发现,并且极大地简化了数据集成,因此组织可以真正从手头的数据中受益。

以上就是小编今天给大家整理发送的关于“机器学习四大数据分析降维方法详解”的相关内容,希望对大家有所帮助。想了解更多关于数据分析及人工智能就业岗位分析,关注小编持续更新。

3. 三种常用降维方法的思想总结

     LDA降维和PCA的不同是LDA是有监督的降维,其原理是将特征映射到低维上,原始数据的类别也能清晰的反应在低维的数据上,也就是低维的数据也可以用来判别分类。

     我们先看看二维的情况,我们希望找到一个向量,使得数据点映射到这个向量上后,两个类间的距离尽可能,两个类内的样本的距离尽可能小。这样就得到了一个目标函数,分子是投影后两个类间均值的差的平方,我们希望这个值尽可能大,分母是投影后的类的散列值的和,是少除以样本数量的方差,进一步化简分子得到投影向量的转置乘以投影前的类均值差向量的外积再乘以投影向量,分母是投影向量的转置乘以投影前的类间散列矩阵的和再乘以投影向量,此时我们需要求使得目标函数最小的投影向量,由于投影向量扩大或缩小多少倍,目标函数值不变,那么我们可以让分母的模长为1,此时可以使用拉格朗日乘子法,最后求得:当类间散列矩阵的和存在逆矩阵时,投影向量就是类间散列矩阵的和的逆矩阵和投影前的类均值差向量的外积的特征向量。进一步的,我们化简等式左边得到类间散列矩阵的逆矩阵乘以投影前类间均值向量的差乘以一个常数,那么由于投影向量可以放缩常数倍不影响结果,我们约掉两边的常数,得到投影向量等于投影前类均值向量的差左乘散列矩阵的逆矩阵,这就是fisher提出的判别分析

      PCA是将原始样本投影到低维的空间上,使得样本的绝大部分信息得以保留,并且特征的维度降低使得模型不易过拟合。思想是:对于原始空间中的m维向量而言,找到k个投影向量使得这m维向量投影到这k个投影向量上的方差最大,保留原始的样本信息最多,我们首先可以看看找第一个向量,使得在这个方向上的投影方差最大。步骤如下:

1.在投影之前,我们对数据做中心化处理,使得原始数据均值为0

2.计算中心化后的样本的协方差矩阵,这是个m*m维的矩阵,m表示原始特征的数目。第i行第j列的元素表示数据中第i列和第j列的协方差

3.计算协方差矩阵的特征值和特征向量,特征向量是单位向量,模长为1,

4.选择带有最大特征值的k个特征向量

5.计算k个最大特征值对应的k个特征,对于每一个特征,都是用原数据矩阵(n行m列)乘以对应的特征向量(m行1列,m是原始变量的数目):因此最后的特征有n行一列,表示每个样本一个特征值

      对数据进行中心化和归一化,然后将其投影到某个向量上,计算这一维上的数据点的方差,经过化简就是投影向量的转置乘以原始数据的协方差矩阵再乘以投影向量,前提是这个投影向量是单位向量,然后我们令这个方差λ最大,得到最大方差时对应的那个投影向量就是第一个主成分,那么这个向量如何求解呢?因为这个投影向量是单位向量,那么等式两边左乘以投影向量,得到了λu=Σu,则说明这个投影向量u的方向其实就是这个协方差矩阵的特征向量,那么最大方差λ对应的就是Σ的最大特征值对应的特征向量的方向,就是第一主成分的方向,第二大特征值对应的特征向量就是第二主成分的方向

       数据的中心化并不是必要的,但是却方便了表示和计算,PCA是计算样本协方差矩阵的,因此中心化或者中心化并不改变特征向量的方向或者特征值的大小,因此即使不中心化,PCA一样的起作用,然而如果你中心化数据了,那么样本的协方差矩阵的数学表示就会得以简化,如果你的数据点就是你的数据矩阵的列,那么协方差矩阵就表示为xx',多么简便啊!技术上,PCA是包括数据中心化这一步的,但是那只是为了计算协方差矩阵,然后对协方差矩阵做特征值分解,得到各个特征值和特征向量

      数据的归一化也不是必须的,如果某些变量有很大或者很小的方差,那么PCA将会倾向于这些大的方差的变量,例如如果你增加了一个变量的方差,也许这个变量对第一个主成分会从很小的影响到起主导性的作用,因此如果你想要PCA独立于这样的变化,归一化可以做到,当然,如果你的变量在那个规模上很重要,那么你可以不归一化,归一化在PCA中是很重要的,因为PCA是一个方差最大化的实验,它就是投影你的原始数据到方差最大化的方向上

(1)如果原始的特征是高度相关的,PCA的结果是不稳定的;

(2)新的特征是原始特征的线性组合,所以缺乏解释性。

(3)原始数据不一定要是多元高斯分布的,除非你使用这个技术来预测性的建模去计算置信区间

       矩阵乘法的作用是线性变换,对一个向量乘以一个矩阵,可以使得这个向量发生伸缩、切变和旋转。我们都知道对称矩阵的特征向量是相互正交的,给定一个对称矩阵M,可以找到一些这样的正交向量v,使得Mv=λv,即这个矩阵M对向量做了拉伸变换,λ是拉伸的倍数。那么对于普通的矩阵呢,才能让一个原来就是相互垂直的网格平面(orthogonal grid), 线性变换成另外一个网格平面同样垂直呢?

       对于一个正交矩阵,其对应的变换叫做正交变换,这个变换的作用是不改变向量的尺寸和向量间的夹角。正交变换中的旋转变换只是将变换向量用另一组正交基表示,在这个过程中并没有对向量做拉伸,也不改变向量的空间位置,只是将原坐标系旋转得到新的坐标系,那么这个旋转矩阵怎么求呢?对于二维空间中的某个向量而言,其经过旋转变换的结果就是从用一组坐标系表示到用另外一组坐标系表示,新的坐标系下的坐标各个分量相当于是原坐标系下的坐标的各个分量在新的坐标系的两个正交基下的投影,或者是相当于将原来的二维向量经过旋转到了新的坐标,因此相当于对向量左乘一个旋转矩阵,求出这个矩阵就是旋转变换的矩阵。刚刚说正交变换不改变向量的空间位置是绝对的,但是坐标是相对的,从原来的坐标系的基向量位置看这个二维向量,到从新的坐标系下看这个向量的坐标是变化的

      矩阵乘以一个向量的结果仍是同维数的一个向量。因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量。

      对特定的向量,经过一种方阵变换,经过该变换后,向量的方向不变(或只是反向),而只是进行伸缩变化(伸缩值可以是负值,相当于向量的方向反向)?这就是相当于特征向量的定义

     特征向量的几何含义是:特征向量通过方阵A变换只进行伸缩,而保持特征向量的方向不变。特征值表示的是这个特征到底有多重要,类似于权重,而特征向量在几何上就是一个点,从原点到该点的方向表示向量的方向。

      一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。特征值分解则是对旋转和缩放两种效应的归并。因为特征值分解中的A为方阵,显然是不存在投影效应的。或者说,我们找到了一组基(特征向量们),在这组基下,矩阵的作用效果仅仅是缩放。即矩阵A将一个向量从x这组基的空间旋转到x这组基的空间上,并在每个方向进行了缩放,由于前后两组基都是x,即没有进行旋转和投影。

      详细分析特征值分解的过程:首先由于特征向量是正交的,特征向量组成的矩阵是正交方阵,两边同时右乘以这个方阵的逆矩阵,可以得到矩阵A的表达式为A=UΛU',两边同时右乘一个向量,相当于对这个向量左乘矩阵A,对向量做旋转或拉伸的变换。这个变换的过程分为三个映射:第一个是将向量x进行了旋转,它将x用新的坐标系来表示;第二个变换是拉伸变化,对x的每一维分量都进行了特征值大小的拉伸或缩小变换;第三个是对x做第一个变换的逆变换,因为是第一个矩阵的逆矩阵,也是旋转变换。在第二个拉伸变换中,可以看出,如果矩阵A不是满秩的,即有的特征值为0,那么这里相当于将x映射到了m维空间的子空间(m是矩阵A的维数m*m),此时矩阵A是一个正交投影矩阵,它将m维向量x映射到了它的列空间。如果A是二维的,那么可以在二维平面上可以找到一个矩形,使得这个矩形经过A变换后还是矩形

      在特征值分解中,矩阵A要求是方阵,那么对于一个任意的矩阵m*n,能否找到一组正交基使得经过它变换后还是正交基?这就是SVD的精髓所在

      A=UΣU',我们来分析矩阵A的作用: 首先是旋转 ,U的列向量是一组标准正交基,V也是,这表示我们找到了两组基。A的作用是将一个向量从V这组正交基向量空间旋转到U这组正交基向量空间; 其次是缩放 ,当V对向量x做了旋转以后,相当于把向量x旋转使其用V这组正交基表示坐标,然后Σ对向量x的每个分量做了缩放,缩放的程度就是Σ的主对角线上的元素,是奇异值; 最后是投影 ,如果U的维数小于V的维数,那么这个过程还包含了投影

      现在的目的是找一组正交基,使得经过A矩阵变换后仍然是一组正交基,假设已经找到这样一组正交基,那么对这组正交基经过A变换,如何使其仍然是一组正交基呢?只要使得原来的正交基是A'A的特征向量即可,|AVi|就是A'A的特征值的开方,也就是奇异值,然后我们求AVi的单位向量Ui,这些Ui也都是正交的,那么我们就找到了两组正交基使得从V这组正交基变换到U这组正交基,V称作右奇异向量,U称作左奇异向量,AVi的模是奇异值,我们对V1,...,Vk进行扩充Vk+1,..,Vn(Vk+1,..,Vn是Ax=0的零空间)使得V1,...,Vn是n维空间中的一组正交基,对U1,...,Uk进行扩充Uk+1,...,Um,使得U1,..,Um是m维空间中的一组正交基,这个k值是矩阵A的秩,当A是满秩时,分解后的矩阵相乘等于A,k越接近于n,则分解后的矩阵相乘结果越接近于A

      对矩阵A的映射过程分析:如果在n维空间中找到一个超矩形,使其都落在A'A的特征向量的方向上,那么经过A变换后的形状仍为超矩形。Vi是A'A的特征向量,Ui是AA'的特征向量,也是AVi的单位向量,σ是A'A的特征值的开方,根据这个公式可以计算出矩阵A的奇异值分解矩阵

       SVD是将一个相互垂直的网格变换到另外一个相互垂直的网格,按照上面的对于U,V的定位,可以实现用矩阵A将一个向量变换的过程,首先将向量x写成用V这组正交基表示的形式,然后用矩阵A左乘向量x,并带入AVi=σiUi,最后可以得到A的分解式,不是矩阵分解式,而是向量分解式,可以看出,如果有的奇异值很小甚至为0,那么本来有n项相加,就最后只有奇异值不为0的项相加了,假如有k项相加,那么k越接近于n最后A分解的结果越接近于A

(1)可以用来减少元素的存储

(2)可以用来降噪:去掉奇异值小的项,奇异值小的我们认为是含有样本重要信息很少,都是噪声,因此就把这些信息少的给去掉了

(3)数据分析:比如说我们有一些样本点用于建模,我们通过SVD将数据里面的奇异值小的都去掉了,最后得到了分解后的数据,用来做分析,更加准确

       我们知道PCA里面,我们对变量进行降维实际上就相当于对数据矩阵Am*n右乘一个矩阵Pn*r,就得到了Am*r,表示每个样本的特征向量只有r维的,和这个矩阵P代表了r个列向量是数据矩阵A的协方差矩阵n*n的最大的r的特征值对应r个特征向量,都是n维的。和SVD相比,将SVD的表达式两边同时右乘一个Vn*r,这样等式右边就Vr*n和Vn*r相乘是单位向量,因为Vn*r是A'A的r个特征向量,是前r个不为0的特征值对应的特征向量,且由于A'A是对称的,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式

       同理,对数据矩阵Am*n左乘一个矩阵Pr*m,就得到了Ar*n,表示每个特征对应的样本只有r个,矩阵P代表了r个m维向量,每个向量是让每个特征对应的样本向量所要投影的方向向量。和SVD相比,将SVD两边同时左乘以一个矩阵Ur*m,就得到了Ar*n,即在行方向上进行了降维,等式右边是Ur*m和Um*r相乘为单位向量,因为Um*r是AA'的特征向量,是AA'的前r个不为0的特征值对应的特征向量,是m维的,由于AA'是对称矩阵,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式

可以看出:

--PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了

--而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。

4. 第十五章 降维

第二种类型的无监督学习问题,叫做降维。
这里有一些,你想要使用降维的原因:
① 数据压缩
数据压缩不仅能对数据进行压缩,使得数据占用较小的内存或硬盘空间。它还能对学习算法进行加速
② 可视化数据

但首先,让我们谈论降维是什么。举个例子,假设我们收集了一个数据集,它有很多很多的特征,我只在这里绘制两个特征。
假如,对我们来说,这两个特征,x_1 是某物体的厘米长度,另一个特征x_2 是同一物体的英寸长度。这实际上是一种高度冗余的表示。
对于这两个单独的特征 x_1 和 x_2,它们表示的都是基本长度。或许我们想做的是,把数据减少到一维。只有一个数字来测量某物体的长度。
这个例子可能有点牵强,这与我在行业中所见的完全是两回事。

如果你有几百个或成千上万的特征,你很容易就会迷失,自己到底有哪些特征。有时可能有几个不同的工程团队,也许一个工程队给你二百个特征,第二工程队给你另外三百个的特征,第三工程队给你五百个特征。最后加起来你就有一千多个特征,这时就很难去了解某个特征是从哪个小组得到的,这时就比较容易产生这与高度冗余的特征。
并且,如果这里的 厘米 和 英寸 长度都被四舍五入了,这就是这个例子为什么不是完美地落在一条直线上。

👆另一个例子:如果你想要调查或做这些不同飞行员的测试——你可能有两个特征:x_1 是他们的技能(直升机飞行员);x_2 表示他们是否喜欢飞行。也许这两个特征将高度相关。你真正关心的可能是这条红线的方向。它是一个不同的特征,用来真正测量飞行员能力的特征。
还是那句话,如果特征高度冗余,那么你可能真的需要降低维数

如果我们将数据从二维(2D)降到一维(1D),究竟意味着什么?
现在我把不同的样本,用不同的颜色标出。在这时,通过降维,我的意思是我想找出这条看起来大多数样本所在的直线(绿色)。所有数据都投影到这条直线上,通过这种做法,我能够测量出每个样本在线上的位置,现在我能做的是建立新特征 z_1。我们只需要一个数,就能确定z_1所在的位置,也就是说z_1是一个全新的特征。它能够指定绿线上每一个点位置。

之前的样本 x_1,它是一个二维向量。在降维后,我们可用一维向量(即,实数)z_1表示第一个样本。

总结一下:
如果我们允许一个近似于原始数据集的数据集, 该数据集通过投射原始样本数据到这个绿色线上而得到。那么,我们只需要一个实数,就能指定点在直线上的位置。所以,我能够只用一个数字表示样本的位置,通过把这些原始样本都投射到绿线上(这是对原始数据集的一种近似,因为我将这些样本都投射到了同一条直线上)。这样(样本从用二维表示,变为用一个实数表示)就能把内存/数据空间的需求减半。

另外,更有趣也更重要的是。在之前的视频中,我们将能够了解到,这么做能够让学习算法运行得更快。

另一个例子,将数据从 3D 降到 2D。

降维的第二个应用:可视化数据
在许多及其学习问题中,如果我们能将数据可视化,我们便能寻找到一个更好的解决方案,降维可以帮助我们。

假使我们有关于许多不同国家的数据,每一个特征向量都有50个特征(如GDP,人均GDP,平均寿命等)。如果要将这个50维的数据可视化是不可能的。使用降维的方法将其降至2维,我们便可以将其可视化了。

比如,你可能发现,横轴(z_1)大致相当于国家的总体规模或者国家的总体经济活跃程度,所以横轴代表的是GDP、一个国家的经济规模。而纵轴大致对应于人均GDP。你可能会发现,这50个 特征,实际上只偏离为两个主要维度。(这样做的问题在于,降维的算法只负责减少维数,新产生的特征的意义就必须由我们自己去发现了)

一个特殊的算法:PAC,也叫做“主成分分析”。它可以用来做降维操作,可以用来实现我们之前所提到的压缩数据。

主成分分析(PCA)是最常见的降维算法。
在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。

PCA 问题的公式描述。换句话说,我们会试着用公式准确地表述PCA的用途。

所以,正式的说,PCA做的就是,它会找到一个低维平面(该例子中,是条直线),然后将数据投影在上面,使这些蓝色小线段(即,点到平面的距离)长度平方最小。这个蓝色小线段的距离,有时也称投影误差。
所以,PCA 所做的就是,它会试图寻找一个投影平面对数据进行投影,使得能最小化这个距离。
另外在应用PCA 之前,常规的做法是,先进行 均值归一化,使得特征量 x_1 和 x_2 其均值为0。并且其数值在可比较的范围之内。(本例中,我们已经处理过了)

后面会详细讲,PCA背景下的均值归一化问题的细节。

PCA做的就是,如果想将数据从二维降到一维。我们要试着找一个方向向量,使得向量 u^(i) ∈ R^n (本例中, n = 2,即,u^(i) ∈ R^2)投影到这个方向向量上的投影误差最小。

更通常的情况是:我们会有N维数据,并且我们想其降到K维,这种情况下,我们不只是想找单个向量来对数据进行投影,而是想寻找K个方向来对数据进行投影,来最小化投影误差。(我们要做的是,将数据投影到这 k 个向量展开的线性子空间上)

u^(1) 和 u^(2) 两个向量一起定义了一个二维平面。我们将我们的数据投影到上面。

因此,PCA做的是其视图找出一条直线,或一个平面,或其他维的空间,然后对数据进行投影,以最小化平方投影。90度投影,或正交投影的误差。

事实上,PCA不是线性回归,尽管看上去有一些相似,但是它们确实是两种不同的算法。
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。
主成分分析最小化的是投射误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。

PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样图像处理领域的KL变换使用PCA做图像压缩。但PCA 要保证降维后数据的特性损失最小。

PCA技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。

PCA技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。

但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

主成分分析算法

在使用PCA之前,首先要做的是,进行数据的预处理。
给定一个交易例子的集合,
预处理:
① 一定要做的一个事情是:执行均值归一化。
② 依据于你的数据,可能也要进行特征缩放。
这两个过程,即在我们有监督学习中,均值标准化过程 与 特征缩放的过程 是相似的。实际上,确实是相同的过程,除了我们现在是对未标记数据 x^(1) 到 x^(m) 做 均值标准化过程 与 特征缩放过程。

接下来,如果不同的特征有非常不相同的缩放,例如 x_1 是房子的尺寸, x_2 是卧室的数量。我们缩放每一个特征,一个相对的价值范围。
相对于之前的监督学习:x_j^(i) = ( (x_j^(i) - u_j) / s_j )。 s_j = x_j 预测的最大值 - 最小值。更普遍的,s_j 是特征 j 的标准偏差。

做完这一系列的数据预处理之后,我们来看PCA算法
我们能从先前的视频看到,PCA所做的就是,它尝试着找到一个 低维 子空间,对数据进行投影,我们希望找到一个向量 u^(k) (比如,从 N 维将到 K 维),是的数据到这个向量的投影误差平方和最小。
给个提示,是什么减少了数据平均值的维度??
对于左边的例子,我们给定的样本 x^(i) 在 R^2 中(即,两个维度,x_1^(i), x_2^(i))。我们要做的就是在 R 中(一维)找到一个数据集 z^(i) 来代表我们原始的样本数据。所以,我们的均值从 2维 降到 1维。
所以,PCA要做的就是,要想出一个方法计算两个东西:
① 计算向量 u^(k)
② 计算 z^(i)

1,首先,我们要做的是计算这个“协方差(covariance matrix)”,通常用希腊字母 Σ。

① 希腊字母 Σ ,表示矩阵
② 累加和标记

‘ [U, S, V] = svd(Sigma); ’:计算 矩阵U = S 和 V 协方差矩阵sigma。
再补充一些细节:这个 协方差矩阵sigma,将会是一个 n*n 的矩阵。

矩阵U 的每一列就是 u^(i) ,即,u ∈ R^(n*n) 。所以,我们想减少数据的维度从 n 维 到 k 维,我们需要做的是提取前 k 个向量。u^1, … , u^k ,这给了我们 k 个方向(构成了一个 k维度的 子空间),即,我们想要投影数据的方向。

有了 u^k 后,我们要做的就是:x ∈ R^n ——> z ∈R^k
我们称 矩阵U 为 U_rece(n*k 矩阵)。这是 矩阵U 被降维的版本,我们将用它来对我们的数据进行降维。

z = (U_rece)^T * x
(U_rece)^T : k * n 矩阵
x 是 “n 维度向量(即,n * 1)”
所以,z 是 “k 维度向量”

在PCA算法中,我们将N维特征减少为K维特征。这个数字 K 是PCA算法的一个参数。这个数 K 也被称为 主成分的数字。或者,我们保留的主成分的数字。
在一般情况下,如何考虑选取这个参数 K ?

我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的k值。
如果我们希望这个比例小于1%,就意味着原本数据的方差有99%都保留下来了,如果我们选择保留95%的方差,便能非常显着地降低模型中特征的维度了。
99%、95%、90% 都是一些具有代表性的范围。

对于许多数据集,你会惊讶,为了保留99%的方差,你可以减少维度,但仍然保留大部分的方差。因为对于真实世界的数据来说,许多特征都是高度相关的。因此,结果证明:对数据进行很多压缩,仍然可以保留99%的方差。

那么该如何实现了?

但是,👆这个方法非常低效。

在以前的视频中,我谈论PCA作为压缩算法。在那里你可能需要把1000维的数据压缩100维特征,或具有三维数据压缩到一二维表示。所以,如果这是一个压缩算法,应该能回到这个压缩表示,回到你原有的高维数据的一种近似。
所以,给定的z (i),这可能100维,怎么回到你原来的表示x (i),这可能是1000维的数组?

我们可以把👆这个过程叫做:原始数据的重构。

我们常常使用PCA算法对监督学习算法进行加速。

假使我们正在针对一张 100×100像素的图片进行某个计算机视觉的机器学习,即总共有10000 个特征。

最后要注意的一点是,PCA所做的是定义一个从 x 到 z 的映射。这个从 x 到 z 的映射只能通过在训练集上运行PCA来得到。这个映射(注意,这里说的是映射,而不是PCA算法)也能够被应用在 交叉校验 和 测试集 上的其他样本中。(即,如果我们有交叉验证集合测试集,也采用对训练集学习而来的U_rece。 )

总结一下:当在运行PCA时,仅仅在训练集中的数据上运行,不能用在交叉验证和测试集上。但,当你定义了 x 到 z 的映射后,你可以应用这个映射到你的交叉验证集和你的测试集。

顺便说一下,实际上,在许多问题中我们确实能减少数据的维度,大概可以减少到 1/5 或者 1/10,而且仍然保留大部分的方差,几乎不影响性能。而且使用较低的维度数据,我们的学习算法通常可以运行的更快。

错误的主要成分分析情况:一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于PCA不需要使用标签y,它仅仅使用输入的 x^(i) ,使用它去寻找低纬数据,来近似你的数据。因此PCA会舍掉一些信息,它扔掉或减少数据的维度,不关心 y 值是什么。所以如果99%的方差信息被保留,你保留了大部分的方差,那么这样使用PCA是可以的。但是它也可能会丢掉一些有价值的信息。
事实证明,只使用正则化来防止过拟合常常会给你带来更好的结果。因为,当你应用 线性回归 或者 logistic回归 或其他的一些方法,进行正则化时,这个最小化问题,实际上是知道 y 的值的,所以不太可能损失掉一些有价值的信息。而PCA不使用标签,更有可能丢失一些有价值的信息。

因此,总结一下,使用PCA比较好的方式,是用它来提高学习算法的速度。但是使用PCA来防止过拟合,这不是PCA的一个好的运用。要使用正则化来防止过拟合。

另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。

5. 降维分析法概念

这种调查问卷或心理测试很明显要用因子分析,因为这些被访者的回答都只是个表象罢了,其实决定他们怎么回答的是内在的因素,比如人们的自信程度啊等等。
用因子分析,分析出这些潜在的变量后,用这些潜在变量做聚类分析,把被访者分成几个群体。

6. (十)PCA降维算法

主成分分析(Principal components analysis,以下简称PCA) 是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。它可以通过 线性变换 将原始数据变换为一组 各维度线性无关 的表示,以此来提取数据的主要线性分量。需要注意的是,PCA一般只用于线性数据降维,对于非线性数据一般采用KPCA。

降维就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据,并且希望损失尽可能的小。首先看几张图,有一个直观的认识。
这里面,把椭圆看成是数据:

基于这个知识,如果我们想对数据进行降维的话,比如图1的两个维度的数据降成一维,我们可以选择保留X1这个维度的数据,因为在这个维度上蕴含的信息量更多。同理,图2就可以保留x2这个维度的数据。但是,问题来了,图3应该保留哪个维度的数据呢?答案是保留哪个维度都不好,都会丢失较大的信息量。但是,如果我们把图3的坐标轴旋转一下

比较容易看出,图3在新的坐标轴下就能进行降维了。
所以,第一,变换正确的坐标轴(基);第二,保留方差最大的几个轴作为主成分,这样的做法就是PCA的核心思想。

从前文可以看出,理想的坐标轴是要求数据投在新坐标轴后,尽可能的分散,也就是数据的方差最大。然后每次选择方差最大的轴作为主成分。
将前文2维降1维的例子扩展到更高维度,还有一个问题需要解决,考虑三维降到二维问题。与之前相同,首先我们希望找到一个方向使得投影后方差最大,这样就完成了第一个方向的选择,继而我们选择第二个投影方向。如果我们还是单纯只选择方差最大的方向,很明显,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因为发生了大量的信息重复,起不到降维的作用,因此,应该有其他约束条件——就是正交。 PCA要求轴与轴之间是正交的,也就是不同维度的信息相关性为0。

在表示相关性中,相关系数与协方差是等价的,这里为了方便计算,使用协方差。下面是协方差公式,当协方差为0时,表示两个特征a,b线性不相关。

可以发现,当a=b时,协方差公式就变成了方差公式,方差是特殊的协方差。如果运气更好,特征a与b的平均数都为0,那么公式会进一步简化,得到:

所以说,为了计算方便,PCA降维前,一般都要求将所有特征属性中心化,即平均数为0。

因为PCA要求,同一轴内方差最大,不同轴协方差为0,如何把它们放在一块呢?这里就引入了协方差矩阵的概念:
假设有m个样本,每个样本特征维度是2,每个特征都经过中心化处理:

我们发现协方差矩阵的对角线是方差,而且是对称矩阵。方差和协方差都放在了一个矩阵里面,只需对这个矩阵优化,使它除了对角线的其余元素都为0,就可以了,美滋滋。

我们知道矩阵乘法,本质上就是一种线性变换的过程。而正交基矩阵的乘法,则是坐标系变换的过程。设原空间的数据为X,协方差矩阵为C,经过正交基矩阵P,得到了新坐标系下的数据Y,即Y=PX。那么新坐标系下的协方差矩阵D是怎样的呢?

我们发现,新旧空间的协方差矩阵是有关系的,而且都和变换矩阵P有关系。问题就转化成了,能不能找到一个矩阵P,使得新空间下的协方差矩阵的非对角线元素都为0.

首先,原始数据矩阵X的协方差矩阵C是一个实对称矩阵,它有特殊的数学性质:

也就是说,P就是是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。 如果设P按照中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y
其实,经过数学上的推导的,我们就可以知道,特征值对应的特征向量就是理想中想取得正确的坐标轴,而特征值就等于数据在旋转之后的坐标上对应维度上的方差。

由于协方差矩阵的维度和特征相同,所以在进行特征值分解时,得到的特征值数目不会超过特征的数目。

在学习线性代数时,我们都会学矩阵的特征值分解,我们知道一个方阵A经过 特征值分解 后就得到 特征向量 特征值 了。那么,这个所谓的特征值和特征向量到底是什么东西呢?
很多人都会说是那个经典的式子:

首先给出概念上的一种解释。所谓的特征值和特征向量,最重要的是理解“特征”这两个字,特征向量翻译为eigen vector, eigen这个单词来自德语,本义是在“本身固有的,本质的”。纯数学的定义下,并不能很明白地理解到底为什么叫做特征值和特征向量。但是举一个应用例子,可能就容易理解多了。

在图像处理中,有一种方法就是特征值分解。我们都知道图像其实就是一个像素值组成的矩阵,假设有一个100x100的图像, 对这个图像矩阵做特征值分解,其实是在提取这个图像中的特征,这些提取出来的特征是一个个的向量,即对应着特征向量。而这些特征在图像中到底有多重要,这个重要性则通过特征值来表示。 比如这个100x100的图像矩阵A分解之后,会得到一个100x100的特征向量组成的矩阵Q,以及一个100x100的只有对角线上的元素不为0的矩阵E,这个矩阵E对角线上的元素就是特征值,而且还是按照从大到小排列的(取模,对于单个数来说,其实就是取绝对值),也就是说这个图像A提取出来了100个特征,这100个特征的重要性由100个数字来表示,这100个数字存放在对角矩阵E中。 在实际中我们发现,提取出来的这100个特征从他们的特征值大小来看,大部分只有前20(这个20不一定,有的是10,有的是30或者更多)个特征对应的特征值很大,后面的就都是接近0了,也就是说后面的那些特征对图像的贡献几乎可以忽略不计。

我们知道,图像矩阵 A 特征值分解后可以得到矩阵 P 和矩阵 E (特征值对角矩阵):

我们可以看到,在只取前20个特征值和特征向量对图像进行恢复的时候,基本上已经可以看到图像的大体轮廓了,而取到前50的时候,几乎已经和原图像无异了。明白了吧,这就是所谓的矩阵的特征向量和特征值的作用。

所以归根结底,特征向量其实反应的是矩阵A本身固有的一些特征,本来一个矩阵就是一个线性变换,当把这个矩阵作用于一个向量的时候,通常情况绝大部分向量都会被这个矩阵A变换得“面目全非”,但是偏偏刚好存在这么一些向量,被矩阵A变换之后居然还能保持原来的样子,于是这些向量就可以作为矩阵的核心代表了。于是我们可以说:一个变换(即一个矩阵)可以由其特征值和特征向量完全表述,这是因为从数学上看,这个矩阵所有的特征向量组成了这个向量空间的一组基底。而矩阵作为变换的本质其实不就把一个基底下的东西变换到另一个基底表示的空间中么?

参考:
https://blog.csdn.net/hjq376247328/article/details/80640544
https://blog.csdn.net/hustqb/article/details/78394058
https://blog.csdn.net/woainishifu/article/details/76418176

7. 用sklearn进行降维的七种方法

在实际的应用中,有时候我们会遇到数据的维度太少,我们需要新生成新的维度,可以用我们之前的分享( 如何自动化进行特征工程 );有时候维度太多,这时候我们就需要降维了。降维的方法有许多,我们这里介绍了sklearn中介绍的7种,供大家学习和收藏。

主成分分析(PCA)用于将多维的数据集分解为一组具有最大方差的连续正交分量。在sklearn这个包中,PCA是一个transformer对象,使用fit方法可以选择前n个主成分,并且用于投射到新的数据中。

PCA有两种实现方式,一种是特征值分解去实现,一种是奇异值分解去实现。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,如果不使用SVD,PCA只会寻找每个特征的中心,但并不会对数据进行缩放(scaled)。使用参数whiten=True ,可以将数据投射到奇异空间中,并且将每个组分缩放到方差为1,这个对于后续分析中,假设每个特征是isotropy 是很有帮助的,例如SVM和Kmeans聚类。

PCA不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。

SVD是一种矩阵分解法,把一个大矩阵分解成易于处理的形式,这种形式可能是两个或多个矩阵的乘积。

参数

例子2:获取每个主成分与特征的关系

PCA虽然很有用,但是需要将数据全部都存入内存,因此当当要分解的数据集太大,会导致内存很大。这时候,增量主成分分析(IPCA)通常用作主成分分析(PCA)的替代,可以通过部分计算的方式,获得跟PCA一样的结果。

IPCA使用与输入数据样本数无关的内存量为输入数据建立低秩近似。它仍然依赖于输入数据功能,但更改批量大小可以控制内存使用量。

该函数,增加了一个batch_size的参数,用来控制批次,其余都一样,至此不再赘述。

实例

对于大型矩阵的分解,我们往往会想到用SVD算法。然而当矩阵的维数与奇异值个数k上升到一定程度时,SVD分解法往往因为内存溢出而失败。因此,Randomized SVD算法,相比于SVD,它更能适应大型矩阵分解的要求,且速度更快。

此外,在某些场景下,我们期望丢掉某些lower sigular values,来达到减少噪音,保留尽可能多的方差,从而达到更好的预测效果。比如人脸的识别,如果是64X64的像素,那么整个维度有4096个。我们利用这个方法,可以保留重要的维度,从而利于后续的分析。

使用 svd_solver='randomized' 可以实现随机化的SVD,来去掉部分的奇异矩阵。

主成分分析(Principal Components Analysis, PCA)适用于数据的线性降维。而核主成分分析(Kernel PCA,KPCA)可实现数据的非线性降维,用于处理线性不可分的数据集。kernel的选择有 {'linear', 'poly', 'rbf', 'sigmoid', 'cosine', 'precomputed'},默认是'linear'。

详细说明见官方说明,与普通的PCA差不多。

SparsePCA 期望找到一组可以最优地重构数据的稀疏主成分。稀疏性的大小由参数alpha给出的L1惩罚系数来控制。Mini-batch sparse PCA是sparsePCA的变种,提高了速度,但是降低了精度。

主成分分析(PCA)的缺点是,该方法提取的成分是一种密集表达式,即用原始变量的线性组合表示时,它们的系数是非零的。这可能会使解释模型变得困难。在许多情况下,真实的基础分量可以更自然地想象为稀疏向量;例如,在人脸识别中,主成分会只包含部分的图像,映射到人脸的某些部分。稀疏主成分产生了一种更简洁的、可解释的表示,清楚地强调是哪些原始特征导致了样本之间的差异。

通过调节alpha来调整惩罚度,alpha越大,越导致许多系数为0。

TruncatedSVD是普通SVD的一个变种,只计算用户指定的前K个奇异值。TSVD通常用于语义分析中,是LSA的其中的一部分,可以解决一词多义和一义多词的问题。

LSA潜在语义分析的目的,就是要找出词(terms)在文档和查询中真正的含义,也就是潜在语义,从而解决上节所描述的问题。具体说来就是对一个大型的文档集合使用一个合理的维度建模,并将词和文档都表示到该空间,比如有2000个文档,包含7000个索引词,LSA使用一个维度为100的向量空间将文档和词表示到该空间,进而在该空间进行信息检索。而将文档表示到此空间的过程就是SVD奇异值分解和降维的过程。降维是LSA分析中最重要的一步,通过降维,去除了文档中的“噪音”,也就是无关信息(比如词的误用或不相关的词偶尔出现在一起),语义结构逐渐呈现。相比传统向量空间,潜在语义空间的维度更小,语义关系更明确。

使用例子如下:

用事先预定义好的字典来对矩阵进行稀疏化编码,达到降维和简化的目的。就像人类的所有语言都是由单词组成一样,因此使用已知的词典可以减少维度;其次,稀疏化可以减少计算的成本,让后续的计算更快。

这个对象没有fit的方法,transformation方法会将数据表示为尽可能少的字典原子的线性组合。可以用transform_method来控制初始化参数,有以下几种:

使用的函数为sklearn.decomposition.DictionaryLearning,会找到一个可以将fitted data足够好稀疏化的字典。

将数据表示为一个overcomplete的字典这个过程,同大脑处理数据的过程类似。这个方法在图像补丁的字典学习已被证明在诸如图像完成、修复和去噪以及监督识别任务的图像处理任务中给出良好的结果。

使用函数为sklearn.decomposition.MiniBatchDictionaryLearning,是一种快速的,但是精确度降低的版本,适应于大数据集合。

默认情况下,MiniBatchDictionaryLearning将数据分成小批量,并通过在指定次数的迭代中循环使用小批量,以在线方式进行优化。但是,目前它没有退出迭代的停止条件。也可以用partial_fit来实现小批次的fit。

从变量中提取共性因子。

因子分析要求原有变量间具有较强的相关性,否则,因子分析无法提取变量间的共性特征,如果相关系数小于0.3,则变量间的共线性较小,不适合因子分析;因子分析得到因子和原变量的关系,因此能够对因子进行解释。

因子分析可以产生与 PCA 相似的特征(载荷矩阵的列)。不过,不能对这些特征做出任何一般性的说明(例如他们是否正交)。

使用的函数为sklearn.decomposition.FactorAnalysis。

使用的函数为sklearn.decomposition.FastICA,ICA可以提取出一系列的主成分,彼此最大的独立。因此,ICA一般不用于降维,而用于区分叠加信号。ICA不考虑noise,为了使模型正确,必须使用whitening,可以使用whiten这个参数。

ICA 通常用于分离混合信号(称为盲源分离的问题),也可以作为一种非线性降维方法,可以找到具有一些稀疏性的特征。

主成分分析假设源信号间彼此非相关,独立成分分析假设源信号间彼此独立。

主成分分析认为主元之间彼此正交,样本呈高斯分布;独立成分分析则不要求样本呈高斯分布。

非负矩阵分解,顾名思义就是,将非负的大矩阵分解成两个非负的小矩阵。在数据矩阵不包含负值的情况下,应用NMF而不是PCA或其变体。

NMF可以产生可以代表数据的主成分,从而可以来解释整个模型。

参数init,可以用来选择初始化的方法,不同的方法对结果会有不同的表现。

在PCA处理中,假使将特征降维为600个,那么降维后的每个人脸都包含了600个特征(所以我们看到降维后的人脸有种“伏地魔”的感觉 ,这是因为降维处理相当于删去了部分细节特征,导致一部分信息丢失,在图片中最直观的体现就是变模糊)。而在NMF的处理中,这1000个特征相当于是被分离了。相当于,一张人脸是由鼻子、耳朵等这些独立的特征叠加出来的。

LDA是文档主题生成模型,对离散数据集(如文本语料库)的集合的生成概率模型。它也是一个主题模型,用于从文档集合中发现抽象主题。LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。

sklearn.decomposition.LatentDirichletAllocation是用于进行LDA的函数。

1、 https://www.jianshu.com/p/1adef2d6dd88
2、 https://www.jianshu.com/p/e574e91070ad
3、 https://scikit-learn.org/stable/moles/decomposition.html#decompositions
4、 https://shankarmsy.github.io/posts/pca-sklearn.html
5、 https://mp.weixin.qq.com/s/Tl9ssjmGdeyNrNuIReo1aw
6、 https://www.cnblogs.com/eczhou/p/5433856.html
7、 https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html#sphx-glr-auto-examples-applications-plot-face-recognition-py
8、 https://blog.csdn.net/fkyyly/article/details/84665361 LSA(Latent semantic analysis)
9、 https://blog.csdn.net/fjssharpsword/article/details/74964127
10、 https://www.jianshu.com/p/e90900a3d03a

阅读全文

与降纬分析方法相关的资料

热点内容
404x125的简便运算方法 浏览:8
水泥多孔砖砌墙方法图片 浏览:705
孢谷草种植方法 浏览:283
莴笋青菜种植方法 浏览:736
前列腺增生怎么治疗方法 浏览:846
12伏蓄电池存电量计算方法 浏览:219
冲压工36技计算方法计算实例 浏览:858
骨化三醇免疫治疗方法 浏览:306
三联疗法如何服用方法 浏览:426
93乘43加91的简便方法 浏览:393
海螺吃了头晕有什么方法解决 浏览:812
如何写通项方法 浏览:674
小学生如何写作业快的方法 浏览:347
卫星手机夜景拍摄方法 浏览:97
怎么做瘦肚子最快方法 浏览:11
考场查词典技巧和方法 浏览:639
魔芋水的制作方法视频 浏览:493
同分母分数加减法教学方法分析 浏览:323
平焊单面焊双面成型的教学方法 浏览:601
查询电脑图片有多张的方法 浏览:429