主成分分析法的数学模型,主成分分析法属于什么模型
目录PCA介绍了SPSS实现的python的简单主成分分析和主成分分析,用于综合评价Notice。
引入PCA
一种多元统计方法,利用主成分分析(PCA)降维方法将多个指标转化为若干个综合指标;
在实际问题中,为了全面分析问题,往往会提出与之相关的变量(因素),每个变量都在一定程度上包含了结果的一些信息;
主成分:由原指标线性组合而成的几个新指标。使用这些新指标,试图解释原指标所包含的大部分信息;
比如在国民经济的研究中,通过主成分分析,用三个新变量代替原来的17个变量,可以保持97.4%的准确率;
主要成分和原始变量之间的关系:
主成分掌握原变量大部分信息的主成分数量远少于原变量,且主成分之间互不相关;主成分是原变量的线性组合,一般是指原M个变量的主成分很多,但不同主成分的信息不能相互包含。统计学上是指两个主成分的协方差为0,两个主成分在几何上正交的描述。
Ss实施步骤:
SPSS导入数据-分析-降维-因子分析;
描述-系数;
提取-砾石图;
显示得分-因子得分系数矩阵;
主成分分析的结果受维度的影响,每个变量的单位可能不同,所以结果也不同。这是最大的问题,需要在主成分分析前无量纲化,然后用协方差或相关系数矩阵分析;
SPSS在分析之前自带无量纲化处理了
无量纲化处理一般分为两种:
(1)标准化
另一方面,min-max归一化=x =xmin(x)max)x)(frac(x)} { max(x)-min(x)} x)=max)x
二、平均归一化=x=xmean(x) m a
x(x)m I n(x)x = frac { x-mean(x)} { max(x)-min(x)} x =max(x)min(x)x-mean(x)
(2)标准化
X=x m e a n (x) (是标准差)x = frac { x-mean(x)} { sigma }( sigma是标准差)x= x mean (x) (是标准差)
手动无量纲SPSS(标准化):分析-描述统计-描述-检查“将标准化分数保存为变量”
相关矩阵
总差异解释
砾石地图
求指数对应的系数。
方法1:利用分量矩阵计算总方差。
Fn的前沿系数是Fn的贡献率/(F1和F2的累计贡献率);比如F1前面的系数:(72.2/84.5);
方法2:使用组件得分系数矩阵(简单但不推荐)
计算综合评价值f=w1 f1 w2 f 2;Wi是第I个主成分的贡献率;
例如,在第一代方法之后,最终结果如下:
例如,替换第二种方法后,最终结果如下:
Python实现了简单主成分分析sklearn.decomposition模块的PCA函数sk learn . decomposition . PCA(n _ components=none,copy=true)。
N_components:默认值为None,保留所有组件;如果设置为2,则提取两个主成分;如果是0.85,自动选择主成分,满足累计贡献率85%;Copy:默认为True,表示算法运行时,复制原始数据的副本进行分析;如果为false,则对原始数据进行降维计算;
步骤
:将数据矩阵A标准化得到B;计算相关系数矩阵NP。修正系数;计算相关系数矩阵R的特征值12…m,对于标准正交特征向量u1,u2…um,向量为列;主成分变量F1=u11x1 u21x2… um1ym,F2=…;计算主成分的贡献率和累计贡献率,一般可以用累计贡献率在85%以上的主成分,用得到的主成分F1,F2,…Fk来分析评价问题;案例:
从sklearn.decomposition导入numpy作为np导入pcaa=NP . load txt( pdat 11 _ 7 . txt )b=NP . r _[a [:1: 4],a[:-3:]#构造数据矩阵print(相关系数矩阵:,NP .左右(NP。corr Coef (b.t),decimals=3) #将数据标准化并计算相关系数矩阵,保留三位小数MD=PCA (n _ components=0.85)。Fit (b) #构造并训练模型(累计贡献率85%) print(特征值为:)Md.explained_variance_)print(主成分贡献率:,MD . explained _ variance _ ratio _)print(奇异值为:,md.singular_values_)print(主成分系数:n ,Md.components_) #每一行都是一个主成分下面直接计算特征值和特征向量,用库函数比较 cf=np.cov(b.T) #计算协方差
分析和评估:
主成分分析用于综合评价。主成分分析可应用于许多评价领域,如投资组合风险管理、企业效益综合分析、图像特征识别等。将主成分分析与聚类分析、判别分析和回归分析相结合;
常规
步骤
:如果每个指标的属性不同(成本类型、利润类型等。),将原矩阵A标准化为B;b的计算相关系数矩阵r;R的计算特征值和对应的特征向量U;根据特征值计算累计贡献率,确定主成分个数,
特征向量 ui 就是第 i 主成分的系数向量
;计算主成分得分矩阵。如果选取K个主成分,主成分得分矩阵为F=B [U1,U2,英国];计算综合评价值Z=FW,其中W为第I个主成分的贡献率(占总主成分贡献率的多少);根据综合评价值,如果是效益指标,评价值越高,排名越高;如果是成本指标值,评价越小,排名越高;对于以下情况:从scipy.stats导入numpy作为NP导入zscorea=NP . load txt( pdat 11 _ 8 . txt )print(相关系数矩阵为: n ,np.corr coef (a.t)) b=np.delete (a,0,Axis=1) #删除第一列数据c=zscore(b)r=np.corrcoef(c.T) #将数据标准化并计算相关系数矩阵D,e=np.linalg.eig(r e)打印(各主成分贡献率为:,rate)k=1 #提出主成分个数F=e[:k]score_mat=c.dot(F) #计算主成分得分矩阵score 1=score _ mat . dot(rate[0:k])#计算各评价对象得分score2=-score1 #通过表格中的数据和对得分1的观察, 需要调整分数打印的符号(每个评价对象的分数为:,score 2)index=score 1 . arg sort()1 #排序打印后原数组中每个元素的位置(每个城市的编号从高到低排序为:,index)
注意主成分分析,