主成分分析

《统计学习方法》(第十六章)——主成分分析

自古美人都是妖i 提交于 2020-02-05 04:15:22
总体主成分分析 基本想法 定义和导出 主要性质 主成分的个数 规范化变量的总体主成分 样本主成分分析 样本主成分的定义和性质 相关矩阵的特征值分解算法 数据矩阵的奇异值分解算法 来源: CSDN 作者: mkopvec 链接: https://blog.csdn.net/mkopvec/article/details/103866444

深入理解主成分分析(PCA)

二次信任 提交于 2020-01-30 18:20:36
主成分分析: 1. 降维法 2. 最大方差解释 3. 最小均方误差解释 PCA 的定义方式有很多,其中最常见的有三个:   其一,PCA 可以理解为降维法,在保留尽可能多的离散程度信息的基础上减少变量的个数,消除变量之间的线性相关性;   其二,PCA 可以理解为向其他方向上的正交投影,使得投影点的方差最大(Hotelling,1933);   其三,它也可以理解为正交投影,使得复原损失最小,这一损失通过数据点与估计点间平方距离的平均值来刻画(Pearson,1901). 下面我们分别考虑这三种定义方式. 1. 降维法   这里的"维"指的便是变量的个数,在记录数据时,例如采集一个人的信息,需要收集其身高、体重、胸围等数据,这里的身高、体重和胸围即是"变量";每个人的数据,例如(173(cm), 65(kg), 887(mm)),称为一个样本,或数据点.   PCA 可以这么理解:一方面,在保留尽可能多的离散程度信息的情况下减少变量的个数;另一方面,消除变量之间的线性相关性(在上述例子中,身高、体重、胸围之间显然具有某种正相关性). 至于为什么要这样做,这就涉及到 PCA 的来历,可参见: A Tutorial on Principal Component Analysis(译). 离散程度信息可以通过变量的方差来刻画,方差越大,含有的信息越多;

建模随手记4 --- 主成分分析

五迷三道 提交于 2020-01-30 03:49:19
在进行数据处理时,有可能会遇到数据属性的数量要比每种数据的数据量还要多,甚至相当,而且对于这些不同属的数据所描述的信息有重合的时候,这时候需要对数据进行降维处理,来减少数据处理的维度。一句话来说就是当我们对一个对象进行数据分析时,所获得的数据的属性很多,为了减少数据处理的维度,我们可以通过计算出几个主要因素来代表这些数据,主成分分析可以做到这点。 比如说衡量一个人的智商,我们要综合其个方面因素来评价,数学成绩,语文成绩,英语成绩,各种成绩,但是我们可以选出数学成绩,理科成绩来衡量他的智商,虽然不能代表全部,但是可以代表大部分。 概述 主要参考《机器学习实战》,书中的介绍十分详细清楚,这里只记录代码实现以及分析数据的过程。 主成分分析实现要解决两个问题,降维度降到多少可以很好的表达原始数据,如何获得降维后的数据。 将多少维度 在确定降多少维度之前我们需要对数据进行标准化: X ∗ = X ‾ − μ σ X^{*}=\frac{\overline{X}-\mu}{\sigma} X ∗ = σ X − μ ​ 加载数据,同时进行数据预处理: import numpy as np from matplotlib import pyplot as plt import os from sklearn import preprocessing from pprint import

主成分分析评价模型

跟風遠走 提交于 2020-01-16 18:34:59
以下内容为本人比赛所用算法: 1.1 各省经济指标的选取 首先从附件1[1]中有目的选取2017年各省份的经济指标分别为地区生产总值(亿元)、人均地区生产总值(元每人)、农林牧渔业增加值(亿元)、工业增加值(亿元)、建筑业增加值(亿元)、地方财政一般预算收入(亿元)、居民人均可支配收入(元)、地方财政环境保护支出(亿元),依次设为 1.2 主成分分析模型的建立 把选取的2017年各省经济指标代入 SPSS 中,运用主成分分析得到如下表所示: 从表1上可以看出第一和第二主成分已经累积达到89.551%,可以代表大部分数据的信息,故可以用上述两个主成分表示2017各省的经济指标的全部信息。 从表2中可以看出对于模型的检验,显著性为0小于0.05故模型比较合理,根据表3和表4可以根据公式: 可以计算出主成分1和2的特征根大约分别为 而主成分综合模型计算公式为: 1.3 模型的求解与结果分析 对于 FAC1_1 和 FAC2_1 从SPSS中的数据集中可以得出其第一主成分值和第二主成分值,在 MATLAB 中运用公式(2)得出各省份经济指标综合值,其综合值越大,说明其经济水平越高,2017年各省的经济排序见下表5: 从表5中可以看出广东经济综合指标排第一位,其次依次为江苏、山东、北京、浙江等,排列为靠后的是西藏、青海、甘肃、宁夏回族。 广东的核心竞争力创新能力和产业,人才的聚集力

用scikit-learn学习主成分分析(PCA)

本秂侑毒 提交于 2020-01-15 07:44:00
    在 主成分分析(PCA)原理总结 中,我们对主成分分析(以下简称PCA)的原理做了总结,下面我们就总结下如何使用scikit-learn工具来进行PCA降维。 1. scikit-learn PCA类介绍     在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中。最常用的PCA类就是sklearn.decomposition.PCA,我们下面主要也会讲解基于这个类的使用的方法。     除了PCA类以外,最常用的PCA相关类还有KernelPCA类,在原理篇我们也讲到了,它主要用于非线性数据的降维,需要用到核技巧。因此在使用的时候需要选择合适的核函数并对核函数的参数进行调参。     另外一个常用的PCA相关类是IncrementalPCA类,它主要是为了解决单机内存限制的。有时候我们的样本量可能是上百万+,维度可能也是上千,直接去拟合数据可能会让内存爆掉, 此时我们可以用IncrementalPCA类来解决这个问题。IncrementalPCA先将数据分成多个batch,然后对每个batch依次递增调用partial_fit函数,这样一步步的得到最终的样本最优降维。     此外还有SparsePCA和MiniBatchSparsePCA。他们和上面讲到的PCA类的区别主要是使用了L1的正则化

主成分分析

白昼怎懂夜的黑 提交于 2020-01-06 16:08:45
PCA的思想是将n维特征映射到K维上(k < n),这k维是全新的正交特征。这k维特征成为主成分,是重新构造出来的k维特征,而不是简单的从n维特征中去除其余 n-k维特征。 (1)计算数据的协方差矩阵: https://blog.csdn.net/Mr_HHH/article/details/78490576 (2) 计算数据协方差矩阵的特征值和特征向量 python 样例代码: # coding:UTF-8 import os import numpy as np # 原始的数据 x = [0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31, -0.71] y = [0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31,-0.81, -0.31, -1.01] npx = np.array(x) npy = np.array(y) # 去除均值 ma = np.matrix([x - npx.mean(), y - npy.mean()]) print(u"协方差矩阵") cov = ma.dot(ma.T) print("------------------下面计算原始矩阵的特征值和特征向量-----------------------") eigenvalue

PCA主成分分析

我是研究僧i 提交于 2019-12-28 00:23:34
PCA的流程: 代码参考: https://www.cnblogs.com/clnchanpin/p/7199713.html 协方差矩阵的计算 https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html 思想: https://www.cnblogs.com/clnchanpin/p/7199713.html 求解协方差矩阵的特征值和特征向量 为什么PCA第一步是进行去掉数据中的平均值? 因为每列数据减去该列的平均值后才能进行协方差计算。 按照特征值的大小进行排序,用到了numpy 中argsort函数 https://blog.csdn.net/maoersong/article/details/21875705 这篇对numpy中的matrix 总结的很好 https://www.cnblogs.com/sumuncle/p/5760458.html 三、特征值和特征向量的应用实例 1、主成分分析(Principle Component Analysis, PCA) (1)方差、协方差、相关系数、协方差矩阵 方差: 协方差: , , **方差是衡量单变量的离散程度,协方差是衡量两个变量的相关程度(亲疏),协方差越大表明两个变量越相似(亲密),协方差越小表明两个变量之间相互独立的程度越大。 相关系数:

采用主成分法实现因子分析中的参数估计

半腔热情 提交于 2019-12-27 18:50:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> factpca<-function(x,score="Bartlett",rotation="varimax") { if(!is.matrix(x)){ x<-as.matrix(x) #x为原始的数据矩阵 } z<-scale(x,center=TRUE,scale=TRUE) #将原始数据矩阵标准化 p<-ncol(x) #求观测变量的个数 if(p<3){ stop("factor analysis requires at least three variables") } cr<-cor(z) #求相关系数矩阵 eig<-eigen(cr) #求矩阵的特征值与特征向量 s=sum(eig$values) tmp=0.0 flag=0 for(i in 1:length(eig$values)){ tmp=tmp+eig$values[i] flag=i if(tmp/s>=0.8) break } rowname<-paste("X",1:p,sep="") colname<-paste("Factor",1:flag,sep="") A<-matrix(0,nrow=p,ncol=flag,dimnames=list(rowname,colname)) #构造因子载荷矩阵,初始化为0 for(j

CDA Level1 PART4.1:主成分分析

倾然丶 夕夏残阳落幕 提交于 2019-12-23 05:35:32
CDA Level1 PART4.1:主成分分析 本质降维 主成分VS因子分析 主成分分析:用原始变量构造主成分,第一个主成分的方差最大,代表的信息越多。特征向量的方向表示了拉伸的方向。 因子分析:用原始变量中找出(抽象出)隐性的公共因子,选择比较重要的公共因子表示变量,实现降维。计算公共因子前的系数:载荷矩阵,采用的是主成分计算法,方差最大。 多维尺度分析VS主成分、因子分析 主成分分析:主成分分析可以解释变量之间的相关关系。 因子分析:一般采用相关系数,找出隐性的公共因子。 多维尺度分析:从距离矩阵出发,而不是方差。以样本个体作为一个单位,关注样本与样本之间的相似程度。降维前后,样本点与点之间的距离能够尽可能接近。维度不是重点,样本与样本之间的距离是关注的重点。 多维尺度分析VS对应分析 多维尺度分析:关注行变量之间的相似性。 对应分析:关注行变量和列变量之间的关系 来源: CSDN 作者: skyHdd 链接: https://blog.csdn.net/u010591976/article/details/103653963

奇异值分解(SVD)与主成分分析(PCA)

给你一囗甜甜゛ 提交于 2019-12-11 18:14:30
奇异值分解(SVD)与主成分分析(PCA) 1 算法简介 奇异值分解(Singular Value Decomposition),简称SVD,是线性代数中矩阵分解的方法。假如有一个矩阵A,对它进行奇异值分解,可以得到三个矩阵相乘的形式,最左边为m维的正交矩阵,中间为m*n 的对角阵,右边为n维的正交矩阵: A = U Σ V T A=U\Sigma V^{T} A = U Σ V T 这三个矩阵的大小如下图所示: 矩阵 Σ \Sigma Σ 除了对角元素其他元素都为0,并且对角元素是从大到小排列的,前面的元素比较大,后面的很多元素接近0。这些对角元素就是奇异值。( u i u_i u i ​ 为m维行向量, v i v_i v i ​ 为n维行向量) Σ \Sigma Σ 中有n个奇异值,但是由于排在后面的很多接近0,所以我们可以仅保留比较大的前r个奇异值,同时对三个矩阵过滤后面的n-r个奇异值, 奇异值过滤之后,得到新的矩阵: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Y9zuN9s-1576054984887)(./Img/fig2.png)] 在新的矩阵中, Σ \Sigma Σ 只保留了前r个较大的特征值: 实际应用中,我们仅需保留三个比较小的矩阵,就能表示A,不仅节省存储量,在计算的时候更是减少了计算量。SVD在信息检索(隐性语义索引