@notmylove
2019-07-10T14:08:00.000000Z
字数 3327
阅读 5804
主成分分析法
权重确定
今天介绍一种基于主成分分析的权重确定方法。通过分析主成分分析方法的应用现状,提出了基于主成分分析的权重确定思路。在主成分分析法的基础上提出了权重确定的假设,建立了基于主成分分析的权重确定模型。在无需指标样本数据的情况下利用主成分分析方法基本原理,解决权重确定问题。
主成分分析法的计算过程已在上篇文章讲到,这里就不在重复提及。
假设需确定权重的指标个数为 h 个。现分别咨询L位专家得出 h 组权重评分值,其中每组评分值中均有 L 个元素。具体形式可由下表 表示。
指标\专家 | ... | |||
---|---|---|---|---|
... | ||||
... | ||||
... | ... | ... | ... | ... |
.... |
由于各位专家所研究方向不同,其打分也存在一定的偏向,从而给权重的确定带来一定的模糊性。研究发现,专家人数越多,得到的权重越科学,与此同时权重的确定也就越模糊。在此基础上提出以下假设,即在专家人数不变的情况下,利用各位专家评分间的线性关系对实际评分专家数进行类似的简化,从而实现权重评判的精确性。经分析得,思路符合主成分分析的基本原理,故可尝试用主成分分析方法来确定权重。
根据上述条件可知,权重的确定过程其实就是主成分分析求综合评价函数的过程。在此过程中,原评价系统中的指标变为样本;现有指标为各位专家。具体的权重确定流程可用下图表示:
首先确定的初级权重模型即是主成分模型:
在此基础上构建综合评价函数:
式中,即指标 在主成分中的综合重要度。在此基础上结合专家实际打分,可算出原有指标得分综合值.
综合可得二级权重模型
现有任务成功性评定指标集:(任务强度,环境等级,寿命等级,人员素质,技术状态)假定变量与指标集中元素满足如下
对应关系: -任务强度; -环境等级; -寿命等级; -人员素质; -技术状态。另有,-专家 1; -专家 2;-专家 3; -专家 4;-专家 5; -专家 6。
由 6 位专家采取 5 分制原则对 5 个指标进行评分,评分表如下:
指标\专家 | 专家 1 | 专家 2 | 专家 3 | 专家 4 | 专家 5 | 专家 6 |
---|---|---|---|---|---|---|
任务强度 | 3 | 4 | 3 | 3 | 3 | 4 |
环境等级 | 2 | 3 | 2 | 3 | 2 | 2 |
寿命等级 | 5 | 4 | 4 | 3 | 3 | 4 |
人员素质 | 3 | 2 | 3 | 2 | 3 | 3 |
技术状态 | 5 | 3 | 4 | 4 | 3 | 4 |
表中: 5-非常重要; 4-比较重要; 3 - 一般重要; 2-不太重要; 1-不重要.
以原指标项为样本,专家项为指标对评分表进行主成分分析,信息利用率达到80%以上,确定主成分个数为2,得到成分矩阵:
专家 | 成分 | |
---|---|---|
1 | 2 | |
专家1 | -0.4736 | 0.0186 |
专家2 | -0.2497 | -0.5655 |
专家3 | -0.4889 | 0.1460 |
专家4 | -0.2639 | -0.6435 |
专家5 | -0.4084 | 0.4904 |
专家6 | -0.4877 | 0.0627 |
方差解释表:
成分 | 特征值 | 方差占比(%) | 方差累积占比(%) |
---|---|---|---|
1 | 3.860 | 64.328 | 64.328 |
2 | 1.222 | 20.362 | 84.690 |
3 | 0.709 | 11.814 | 96.504 |
4 | 0.210 | 3.496 | 100.000 |
5 | -6.417E-17 | -1.070E-15 | 100.000 |
6 | -2.059E-16 | -3.432E-15 | 100.000 |
得到初始权重模型:
二级权重模型可得:
在主成分分析中,我們首先应该保证所提取的前几个主成分的累积贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。就像在专题四中构建的新指标1的含义可以刻画出学生是否偏科...
主成分的解释其含义一般多少都带有点模糊性,不像原始数据的含义那么清楚、确切,这是降维过程中不得不付出的代价...
%输入数据
X = [[3, 2, 5, 3, 5]' ,[4, 3, 4, 2, 3]', [3, 2, 4, 3, 4]', [3, 3, 3, 2, 4]', [3, 2, 3, 3, 3]', [4, 2, 4, 3, 4]'];
%数据预处理:标准化
mu = mean(X);
X_norm = bsxfun(@minus, X, mu);
sigma = std(X_norm);
X_norm = bsxfun(@rdivide, X_norm, sigma);
%协方差矩阵
covMat = cov(X_norm);
%奇异值分解,U为特征向量,S为特征值
[U, S] = svd(covMat);
%确定主成分个数,也就是k值,一般要利用信息的80%以上
lambda = diag(S);
fprintf('累积信息占比:%.4f \n', cumsum(lambda)/sum(lambda));
k = find(cumsum(lambda)/sum(lambda) < 0.8, 1, 'first') + 1;
%成分矩阵
u = U(:, 1:k);
%各个指标在主成分中的综合重要度
a = zeros(size(X, 2), 1);
for i=1:k
a = a + lambda(i) / sum(lambda(1:k)) * u(:, i);
end
qz = X * a / sum(X * a);
fprintf('权重为:%.4f \n', qz);