数据降维

PCA:主成分分析

和自甴很熟 提交于 2019-12-01 07:52:24
PCA的概念: 主要思想是将n维特征映射到k维上,这k维是全新的正交特征,这k维特征被称为主成分,在原数据的基础上重新构造出来k维。就是从原始的空间顺序的找出一组相互正交的坐标轴,新坐标轴的选择和数据本身有很大的关系。其中,第一个坐标轴是从原数据中方差最大的方向,第二个新坐标轴选择是与第一个坐标轴正交平面中使得方差最大的,第三个轴是与第一二轴正交的平面中方差最大的,依次类推。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。 PCA算法: 优点:降低数据的复杂性,识别最重要的多个特征 缺点:不一定需要, 可能损失有用信息 适用数据类型:数值型数据 数据集下载链接: http://archive.ics.uci.edu/ml/machine-learning-databases/ 在PCA中应用的数据集: http://archive.ics.uci.edu/ml/machine-learning-databases/ secom/ (1)打开数据集计算特征数目:(列为特征数)在secom数据集中一行代表一条数据

10 协方差矩阵与主成成分分析

梦想与她 提交于 2019-11-29 08:20:27
协方差矩阵 由上,我们已经知道:协方差是衡量两个随机变量的相关程度。且随机变量 之间的协方差可以表示为: 故根据已知的样本值可以得到协方差的估计值如下: 可以进一步地简化为: 如此,便引出了所谓的协方差矩阵: 主成成分分析 尽管从上面看来,协方差矩阵貌似很简单,可它却是很多领域里的非常有力的工具。它能导出一个变换矩阵,这个矩阵能使数据完全去相关(decorrelation)。从不同的角度看,也就是说能够找出一组最佳的基以紧凑的方式来表达数据。这个方法在统计学中被称为主成分分析(principal components analysis,简称PCA),在图像处理中称为Karhunen-Loève 变换(KL-变换)。 根据wikipedia上的介绍,主成分分析PCA由卡尔·皮尔逊于1901年发明,用于分析数据及建立数理模型。其方法主要是 通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征矢量)与它们的权值(即特征值) 。PCA是最简单的以特征量分析多元统计分布的方法。其结果可以理解为对原数据中的方差做出解释:哪一个方向上的数据值对方差的影响最大。 然为何要使得变换后的数据有着最大的方差呢?我们知道,方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们 用于机器学习的数据(主要是训练数据)

PCA LDA降维测试

谁说胖子不能爱 提交于 2019-11-27 16:12:43
测试概述 该实验的目的是测试LDA(Linear Discriminant Analysis,线性判别分析)的降维效果(主要是训练时间),同时引入了PCA(Principal components analysis,主成分分析)作为比较。 程序比较简单,降维算法和训练算法均是调用python的sklearn库的函数,所有代码都在程序中给出。 每次使用相同数据集,通过三种不同方式测试,分别是直接训练、PCA降维后训练、LDA降维后训练。 文件说明 code 测试程序文件夹,内含LDA_test.py程序 dataset 测试数据集文件夹 output 测试结果截图文件夹 测试环境 操作系统 win10 64位 CPU AMD Ryzen 5 2600x 6-core 3.60GHz 内存 16GB IDE/编辑器 PyCharm Python版本 3.6 LDA_test.py代码 import numpy as np from pandas import read_csv import time from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.decomposition import PCA from sklearn.svm import SVC from

数据降维可视化

三世轮回 提交于 2019-11-26 14:11:43
参考: SNE、TSNE 一:TSNE TSNE是由SNE衍生出的一种算法,SNE最早出现在2002年,它改变了MDS和ISOMAP中基于距离不变的思想, SNE将高维映射到低维的同时,尽量保证相互之间的分布概率不变,SNE将高维和低维中的样本分布都看作高斯分布,而Tsne将低维中的坐标当做T分布,这样做的好处是为了让距离大的簇之间距离拉大,从而解决了拥挤问题。 从SNE到TSNE之间,还有一个对称SNE,其对SNE有部分改进作用。 SNE算法 对称SNE算法 TSNE算法(***) 1、SNE 高维数据用X表示,Xi表示第i个样本,低维数据用Y表示,则高维中的分布概率矩阵P定义如下: P(i,j)表示第i个样本分布在样本j周围的概率。delta是依据最大熵原理来决定,entropy=sum(pi*log(pi)),以每个样本点作为中心的delta都需要使得最后分布的熵较小,通常以log(k)为上限,k为你所决定的邻域点的个数。 低维中的分布概率矩阵计算如下: 这里我们把低维中的分布看作是均衡的,每个delta都是0.5,由此可以基本判断最后降维之后生成的分布也是一个相对均匀的分布。 随机给定一个初始化的Y,进行优化,使得Y的分布矩阵逼近X的分布矩阵。我们给定目的函数,用KL散度来定义两个不同分布之间的差距: 则可以计算梯度为: 每次梯度下降的步长可设定固定或者自适应、随机等