Closed hiyouga closed 5 years ago
聚类分析(Cluster Analysis)作为一种定量方法,从数据分析的角度,给出一个更准确、细致的分类工具。
在聚类分析中,对于定量变量,最常用的是Minkowski距离: $$d_q(x, y)=\left[\sum_{k=1}^p\left|x_k-y_k\right|^q\right]^{\frac1q}, q>0$$ 当q=1, 2或q→+∞时,则分别得到:
在Minkowski距离中,最常用的是欧氏距离,它的主要优点是当坐标轴进行正交旋转时,欧式距离是保持不变的。因此,如果对原坐标系进行平移和旋转变换,则变换后样本点间的距离和变换前完全相同。
值得注意的是在采用Minkowski距离时,一定要采用相同量纲的变量。如果变量的量纲不同,测量值变异范围相差悬殊时,建议首先进行数据的标准化处理,然后再计算距离。在采用Minkowski距离时,还应尽可能地避免变量的多重相关性(multicollinearity)。多重相关性所造成的信息重叠,会片面强调某些变量的重要性。由于Minkowski距离的这些缺点,一种改进的距离就是马氏距离(Mahalanobis),定义如下: $$d(x, y)=\sqrt{(x-y)^T\Sigma^{-1}(x-y)}$$ 其中x, y为来自p维总体Z的样本观测值,∑为Z的协方差矩阵,实际上∑往往是不知道的,常常需要用样本协方差来估计。马氏距离对一切线性变换是不变的,故不受量纲的影响(无需数据标准化)。
还可采用样本相关系数、夹角余弦和其它关联性度量作为相似性度量。
系统聚类法是聚类分析方法中最常用的一种方法。它的有点在于可以指出由粗到细的多种分类情况,典型的系统聚类结果 可由一个聚类图展示出来。 方法有:最长距离法、最短距离法等。
在系统分析或评估过程中,为避免遗漏某些重要因素,往往在一开始选取指标时,尽可能多地考虑所有的相关因素。而这样做的结果,则是变量过多,变量间的相关度高,给系统分析与建模带来很大的不便。因此,人们常常希望能研究变量间的相似关系,按照变量的相似关系把它们聚合成若干类,进而找出影响系统的主要因素。
MATLAB画聚类图:
%把下三角相关系数矩阵粘贴到ch.txt中 clc, clear a = textread('ch.txt'); d = 1 - abs(a); %进行数据变换,把相关系数转化为距离 d = tril(d); %提取d矩阵的下三角部分 b = nonzeros(d); %去掉d中的零元素 b = b'; %化成行向量 z = linkage(b, 'complete'); %按最长距离法聚类 y = cluster(z, 'maxclust', 2); %把变量划分成两类 ind1 = find(y==1); ind1 = ind1' %显示第一类对应的变量标号 ind2 = find(y==2); ind2 = ind2' %显示第二类对应的变量标号 dendrogram(z); %画出聚类图
聚类分析又称群分析,是对多个样本(或指标)进行定量分类的一种多元统计分析方法。对样本进行分类称为Q型聚类分析,对指标进行分类称为R型聚类分析。两者可以结合使用。 R型聚类分析:
clc, clear load gj.txt; %把原始数据保存在纯文本文件gj.txt中 r = corrcoef(gj); %计算相关系数矩阵 d = 1 - r; %进行数据变换,把相关系数转化为距离 d = tril(d); %去除矩阵d的下三角元素 d = nonzeros(d); %取出非零元素 d = d'; %化为行向量 z = linkage(d, 'average'); %按类平均法聚类 dendrogram(z); %画聚类图 T = cluster(z, 'maxclust', 6); %把变量划分成6类 for i=1:6 tm = find(T==i); %求第i类的对象 tm = reshape(tm, 1, length(tm)); %变成行向量 fprintf('第%d类的有%s\n', i, int2str(tm)); %显示分类结构 end
Q型聚类分析:
clc, clear load gj.txt; %把原始数据保存在纯文本文件gj.txt中 gj(:, 3:6) = []; %假设使用变量1,2,7,8,9,删去数据矩阵的第三列~第六列 gj = zscore(gj); %数据标准化 y = pdist(gj); %求对象间的欧氏距离,每行是一个对象 z = linkage(y, 'average'); %按类平均法聚类 dendrogram(z); %画聚类图 for k=3:5 fprintf('划分成%d类的结果如下:\n', k); T = cluster(z, 'maxclust', k); %把样本点划分成k类 for i=1:k tm = find(T==i); %求第i类的对象 tm = reshape(tm, 1, length(tm)); %变成行向量 fprintf('第%d类的有%s\n', i, int2str(tm); %显示分类结果 end if k==5 break; end fprintf('*************************\n'); end
主成分分析(Principal Component Analysis, PCA)是一种统计方法。它通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。主成分分析首先是在1901年由Karl Pearson对非随机变量引入的,1933年Hotelling将此方法推广到随机向量的情形,主成分分析和聚类分析有很大的不同,它有严格的数学理论作基础。 主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将我们手中许多相关性很高的变量转化成彼此相互独立不相关的变量。通常是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量,即所谓主成分,并用以解释资料的综合性指标。由此可见,主成分分析实际上是一种降维方法。 $$\begin{cases} Z_1=c_{11}X_1+c_{12}X_2+\cdots+c_{1p}X_p\\ Z_2=c_{21}X_1+c_{22}X_2+\cdots+c_{2p}X_p\\ \cdots\\ Z_p=c_{p1}X_1+c_{p2}X_2+\cdots+c_{pp}X_p \end{cases}$$ 其中\(Z_1, Z_2, \cdots, Z_p\)是主成分。
主成分估计(Principal Component Estimate)是Massy在1965年提出的,它是回归系数参数的一种线性有偏估计(biased estimate),同其它有偏估计,如岭估计(ridge estimate)等一样,是为了克服最小二乘(LS)估计在设计阵病态(即存在多重共线性)时表现出的不稳定性而提出的。 主成分估计采用的方法是将原来的回归自变量通过线性变换到另一组变量,即主成分,选择其中一部分重要的主成分作为新的自变量(此时丢弃了一部分影响不大的自变量,这实际达到了降维的目的),然后用最小二乘法对选取主成分后的模型参数进行估计,最后再变换回原来的模型求出参数的估计。
主成分分析,将\(X^TX\)的特征值按由大到小的次序排列之后,如何筛选这些特征值?一个实用的方法就是删去\(\lambda_{r+1}, \lambda_{r+2}, \cdots, \lambda_p\)后,这些删去的特征值之和占整个特征值之和\(\sum\lambda_i\)的15%以下,换句话说,余下的特征值所占的比重(定义为累积贡献率)将超过85%,当然这不是一种严格的规定。 单纯考虑累积贡献率是不够的,还需要考虑选择的主成分对原始变量的贡献值,我们用相关系数的平方和来表示,如果选取的主成分为\(z_1, z_2, \cdots, z_r\),则它们对原变量\(x_j\)的贡献值为 $$\rho_i=\sum_{j=1}^rr^2(z_j, x_i)$$ 这里\(r(z_j, x_i)\)表示\(z_j\)与\(x_i\)相关系数。
主成分分析试图在力保数据信息丢失最少的原则下,对多变量的截面数据表进行最佳综合简化,也就是说,对高维变量空间进行降维处理。本案例运用主成分分析方法综合评我国各地区普通高等教育的发展水平。 主成分分析法进行评价的步骤如下: 1)对原始数据进行标准化处理: 假设进行主成分分析的指标变量有m个:\(x_1, x_2, \cdots, x_m\),共有n个评价对象,第i个评价对象的第j个指标的取值为\(a_{ij}\),将各指标值\(a_{ij}\)转换成标准化指标\(\tilde{a_{ij}}\) $$\tilde{a_{ij}}=\frac{a_{ij}-\mu_j}{s_j}, (i=1, 2, \cdots, n; j=1, 2, \cdots, m)$$ 其中 $$\mu_j=\frac1n\sum_{i=1}^na_{ij}, s_j=\frac1{n-1}\sum_{i=1}^n(a_{ij}-\mu_j)^2, (j=1, 2, \cdots, m)$$ 即\(\mu_j, s_j\)为第j个指标的样本均值和样本标准差,对应地,称 $$\tilde{x_i}=\frac{x_i-\mu_i}{s_i}, (i=1, 2, \cdots, m)$$ 为标准化指标变量。 2)计算相关系数矩阵R 相关系数矩阵\(R=(r_{ij})_{m\times m}\) $$r_{ij}=\frac{\sum_{k=1}^n\tilde{a}_{ki}\cdot\tilde{a}_{kj}}{n-1}, (i, j=1, 2, \cdots, m)$$ 式中\(r_{ii}=1\),\(r_{ij}=r_{ji}\),\(r_{ij}\)是第i个指标与第j个指标的相关系数。 3)计算特征值和特征向量 计算相关系数矩阵R的特征值\(\lambda_1\ge\lambda_2\ge\cdots\lambda_m\ge 0\),以及对应的特征向量\(u_1, u_2, \cdots, u_m\),其中\(u_j=(u_{1j}, u_{2j}, \cdots, u_{mj})^T\),由特征向量组成m个新的指标变量: $$\begin{cases} y_1=u_{11}\tilde{x}_1+u_{12}\tilde{x}_2+\cdots+u_{m1}\tilde{x}_p\\ y_2=u_{12}\tilde{x}_1+u_{22}\tilde{x}_2+\cdots+u_{m2}\tilde{x}_p\\ \cdots\\ y_m=u_{1m}\tilde{x}_1+u_{2m}\tilde{x}_2+\cdots+u_{mm}\tilde{x}_p \end{cases}$$ 式中\(y_1\)是第1主成分,\(y_2\)是第2主成分,…,\(y_m\)是第m主成分。 4)选择p(p<m)个主成分,计算综合评价值
MATLAB程序:
clc, clear load gj.txt; %把原始数据保存在gj.txt中 gj = zscore(gj); %数据标准化 r = corrcoef(gj); %计算相关系数矩阵 %下面利用相关系数矩阵进行主成分分析,x的列为r的特征向量,即主成分的系数 [x, y, z] = pcacov(r); %y为r的特征值,z为各个主成分的贡献率 f = repmat(sign(sum(x)), size(x, 1), 1); %构造与x同维数的元素为±1的矩阵 x = x.*f; %修改特征向量的正负号,每个特征向量乘以所有分量和的符号函数值 num = 4; %num为选取的主成分的个数 df = gj * x(:, 1:num); %计算各个主成分的得分 tf = df * z(1:num) / 100; %计算综合得分 [stf, ind] = sort(tf, 'descend'); %把得分按照从高到低的次序排列 stf = stf' ind = ind'
主成分分析:将原来具有相关关系的多个指标简化为少数几个新的综合指标的多元统计方法。 主成分:由原始指标综合形成的几个新指标。根据主成分所含信息量的大小称为第一主成分、第二主成分等等。 主成分与原始变量之间的关系:
如何进行主成分分析?(主成分分析的方法) 基于相关系数矩阵或基于协方差矩阵做主成分分析。当分析中所选择的经济变量具有不同的量纲,变量水平差异很大,应该选择基于相关系数矩阵的主成分分析。 P.S.:相关系数矩阵可能会弱化数据的特征,而协方差矩阵不会。 如何确定主成分个数? 主成分分析的目的是简化变量,一般情况下主成分的个数应该小于原始变量的个数。关于保留几个主成分,应该权衡主成分个数和保留的信息。
待补充
参考文档:聚类、主成分、因子分析.pdf
我们创新实践课的内容.. 话说方差为零的时候标准化怎么办
@Myriad-Dreamin 用其他的标准化方法,文章里的是z-score标准化
@Myriad-Dreamin 楼上正解,z-score对标准差有限制,但是其他标准化函数也可以做,具体选用那种可以针对数据考虑。
聚类分析
聚类分析(Cluster Analysis)作为一种定量方法,从数据分析的角度,给出一个更准确、细致的分类工具。
聚类分析相似性度量
在聚类分析中,对于定量变量,最常用的是Minkowski距离: $$d_q(x, y)=\left[\sum_{k=1}^p\left|x_k-y_k\right|^q\right]^{\frac1q}, q>0$$ 当q=1, 2或q→+∞时,则分别得到:
在Minkowski距离中,最常用的是欧氏距离,它的主要优点是当坐标轴进行正交旋转时,欧式距离是保持不变的。因此,如果对原坐标系进行平移和旋转变换,则变换后样本点间的距离和变换前完全相同。
值得注意的是在采用Minkowski距离时,一定要采用相同量纲的变量。如果变量的量纲不同,测量值变异范围相差悬殊时,建议首先进行数据的标准化处理,然后再计算距离。在采用Minkowski距离时,还应尽可能地避免变量的多重相关性(multicollinearity)。多重相关性所造成的信息重叠,会片面强调某些变量的重要性。由于Minkowski距离的这些缺点,一种改进的距离就是马氏距离(Mahalanobis),定义如下: $$d(x, y)=\sqrt{(x-y)^T\Sigma^{-1}(x-y)}$$ 其中x, y为来自p维总体Z的样本观测值,∑为Z的协方差矩阵,实际上∑往往是不知道的,常常需要用样本协方差来估计。马氏距离对一切线性变换是不变的,故不受量纲的影响(无需数据标准化)。
还可采用样本相关系数、夹角余弦和其它关联性度量作为相似性度量。
数据标准化
也叫min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization)/线性函数归一化。
转换函数如下$$\tilde{x}=\frac{x-\min}{\max-\min}$$ 其中max为样本数据的最大值,min为样本数据的最小值。
如果想要将数据映射到[-1, 1],则将公式换成\(\tilde{x}'=\tilde{x}*2-1\)。
这种方法有一个缺陷是当有新数据加入时,可能导致max和min的变化,需要重新定义。
这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:$$\tilde{x}=\frac{x-\mu}\sigma$$ 其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为正态分布(Normal distribution),否则归一化的效果会变得很糟糕。
系统聚类法
系统聚类法是聚类分析方法中最常用的一种方法。它的有点在于可以指出由粗到细的多种分类情况,典型的系统聚类结果 可由一个聚类图展示出来。
方法有:最长距离法、最短距离法等。
变量聚类法
在系统分析或评估过程中,为避免遗漏某些重要因素,往往在一开始选取指标时,尽可能多地考虑所有的相关因素。而这样做的结果,则是变量过多,变量间的相关度高,给系统分析与建模带来很大的不便。因此,人们常常希望能研究变量间的相似关系,按照变量的相似关系把它们聚合成若干类,进而找出影响系统的主要因素。
在对变量进行聚类分析时,首先要确定变量的相似性度量,常用的变量相似性度量有两种。
类似于样本集合聚类分析中最常用的最短距离法、最长距离法等,变量聚类法采用了与系统聚类法相同的思路和过程。在变量聚类问题中,常用的有最长距离法、最短距离法等。
MATLAB画聚类图:
聚类分析又称群分析,是对多个样本(或指标)进行定量分类的一种多元统计分析方法。对样本进行分类称为Q型聚类分析,对指标进行分类称为R型聚类分析。两者可以结合使用。 R型聚类分析:
Q型聚类分析:
主成分分析
主成分分析概念
主成分分析(Principal Component Analysis, PCA)是一种统计方法。它通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。主成分分析首先是在1901年由Karl Pearson对非随机变量引入的,1933年Hotelling将此方法推广到随机向量的情形,主成分分析和聚类分析有很大的不同,它有严格的数学理论作基础。 主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将我们手中许多相关性很高的变量转化成彼此相互独立不相关的变量。通常是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量,即所谓主成分,并用以解释资料的综合性指标。由此可见,主成分分析实际上是一种降维方法。 $$\begin{cases} Z_1=c_{11}X_1+c_{12}X_2+\cdots+c_{1p}X_p\\ Z_2=c_{21}X_1+c_{22}X_2+\cdots+c_{2p}X_p\\ \cdots\\ Z_p=c_{p1}X_1+c_{p2}X_2+\cdots+c_{pp}X_p \end{cases}$$ 其中\(Z_1, Z_2, \cdots, Z_p\)是主成分。
主成分分析注意事项
主成分估计
主成分估计(Principal Component Estimate)是Massy在1965年提出的,它是回归系数参数的一种线性有偏估计(biased estimate),同其它有偏估计,如岭估计(ridge estimate)等一样,是为了克服最小二乘(LS)估计在设计阵病态(即存在多重共线性)时表现出的不稳定性而提出的。 主成分估计采用的方法是将原来的回归自变量通过线性变换到另一组变量,即主成分,选择其中一部分重要的主成分作为新的自变量(此时丢弃了一部分影响不大的自变量,这实际达到了降维的目的),然后用最小二乘法对选取主成分后的模型参数进行估计,最后再变换回原来的模型求出参数的估计。
特征因子的筛选
主成分分析,将\(X^TX\)的特征值按由大到小的次序排列之后,如何筛选这些特征值?一个实用的方法就是删去\(\lambda_{r+1}, \lambda_{r+2}, \cdots, \lambda_p\)后,这些删去的特征值之和占整个特征值之和\(\sum\lambda_i\)的15%以下,换句话说,余下的特征值所占的比重(定义为累积贡献率)将超过85%,当然这不是一种严格的规定。 单纯考虑累积贡献率是不够的,还需要考虑选择的主成分对原始变量的贡献值,我们用相关系数的平方和来表示,如果选取的主成分为\(z_1, z_2, \cdots, z_r\),则它们对原变量\(x_j\)的贡献值为 $$\rho_i=\sum_{j=1}^rr^2(z_j, x_i)$$ 这里\(r(z_j, x_i)\)表示\(z_j\)与\(x_i\)相关系数。
案例分析——我国各地区普通高等教育发展水平综合评价
主成分分析试图在力保数据信息丢失最少的原则下,对多变量的截面数据表进行最佳综合简化,也就是说,对高维变量空间进行降维处理。本案例运用主成分分析方法综合评我国各地区普通高等教育的发展水平。 主成分分析法进行评价的步骤如下: 1)对原始数据进行标准化处理: 假设进行主成分分析的指标变量有m个:\(x_1, x_2, \cdots, x_m\),共有n个评价对象,第i个评价对象的第j个指标的取值为\(a_{ij}\),将各指标值\(a_{ij}\)转换成标准化指标\(\tilde{a_{ij}}\) $$\tilde{a_{ij}}=\frac{a_{ij}-\mu_j}{s_j}, (i=1, 2, \cdots, n; j=1, 2, \cdots, m)$$ 其中 $$\mu_j=\frac1n\sum_{i=1}^na_{ij}, s_j=\frac1{n-1}\sum_{i=1}^n(a_{ij}-\mu_j)^2, (j=1, 2, \cdots, m)$$ 即\(\mu_j, s_j\)为第j个指标的样本均值和样本标准差,对应地,称 $$\tilde{x_i}=\frac{x_i-\mu_i}{s_i}, (i=1, 2, \cdots, m)$$ 为标准化指标变量。 2)计算相关系数矩阵R 相关系数矩阵\(R=(r_{ij})_{m\times m}\) $$r_{ij}=\frac{\sum_{k=1}^n\tilde{a}_{ki}\cdot\tilde{a}_{kj}}{n-1}, (i, j=1, 2, \cdots, m)$$ 式中\(r_{ii}=1\),\(r_{ij}=r_{ji}\),\(r_{ij}\)是第i个指标与第j个指标的相关系数。 3)计算特征值和特征向量 计算相关系数矩阵R的特征值\(\lambda_1\ge\lambda_2\ge\cdots\lambda_m\ge 0\),以及对应的特征向量\(u_1, u_2, \cdots, u_m\),其中\(u_j=(u_{1j}, u_{2j}, \cdots, u_{mj})^T\),由特征向量组成m个新的指标变量: $$\begin{cases} y_1=u_{11}\tilde{x}_1+u_{12}\tilde{x}_2+\cdots+u_{m1}\tilde{x}_p\\ y_2=u_{12}\tilde{x}_1+u_{22}\tilde{x}_2+\cdots+u_{m2}\tilde{x}_p\\ \cdots\\ y_m=u_{1m}\tilde{x}_1+u_{2m}\tilde{x}_2+\cdots+u_{mm}\tilde{x}_p \end{cases}$$ 式中\(y_1\)是第1主成分,\(y_2\)是第2主成分,…,\(y_m\)是第m主成分。 4)选择p(p<m)个主成分,计算综合评价值
MATLAB程序:
总结
主成分分析:将原来具有相关关系的多个指标简化为少数几个新的综合指标的多元统计方法。 主成分:由原始指标综合形成的几个新指标。根据主成分所含信息量的大小称为第一主成分、第二主成分等等。 主成分与原始变量之间的关系:
问题
如何进行主成分分析?(主成分分析的方法) 基于相关系数矩阵或基于协方差矩阵做主成分分析。当分析中所选择的经济变量具有不同的量纲,变量水平差异很大,应该选择基于相关系数矩阵的主成分分析。 P.S.:相关系数矩阵可能会弱化数据的特征,而协方差矩阵不会。 如何确定主成分个数? 主成分分析的目的是简化变量,一般情况下主成分的个数应该小于原始变量的个数。关于保留几个主成分,应该权衡主成分个数和保留的信息。
注意事项
实际上,主成分分析就是对矩阵结构的分析,其中主要用到的技术是矩阵运算的技术及矩阵对角化和矩阵的谱分解技术。
如果计算所得协方差阵(或相关系数矩阵)的最小特征值接近于0,则意味着中心化以后的原始变量之间存在着多重共线性问 题,即原始变量存在着不可忽视的重叠信息。此时应注意对主成分的解释,或者考虑对最初纳入分析的指标进行筛选。
主成分分析不能有效地剔除重叠信息,但它至少可发现原始变量是否存在重叠信息,这对减少分析中的失误是有帮助的。
主成分分析步骤:
因子分析
待补充
参考文档:聚类、主成分、因子分析.pdf