综合评价方法
一、 理想解法(TOPSIS法)
理想解法针对的是多属性决策方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴合度,即靠近正理想解和负理想解的程度,来对方案进行排序,从而得到最优方案
这种方法是对已有的数据进行分析,是可量化数据的评价方法
-
案例分析
为了研究研究生教育的实际情况和各研究生院的教学质量,国务院组织了一次研究生院的评估,为了取得经验,先选5所研究院,收集有关数据资料进行了试评估,部分数据如下
( i 表示行标, j 表示列标 ) (i表示行标,j表示列标) (i表示行标,j表示列标) 人均专著 x 1 x_1 x1/(本/人) 生师比 x 2 x_2 x2 科研经费 x 3 x_3 x3/(万元/年) 逾期毕业率 x 4 x_4 x4/% 1 0.1 0.1 0.1 5 5 5 5000 5000 5000 4.7 4.7 4.7 2 0.2 0.2 0.2 6 6 6 6000 6000 6000 5.6 5.6 5.6 3 0.4 0.4 0.4 7 7 7 7000 7000 7000 6.7 6.7 6.7 4 0.9 0.9 0.9 10 10 10 10000 10000 10000 2.3 2.3 2.3 5 1.2 1.2 1.2 2 2 2 400 400 400 1.8 1.8 1.8 -
第一步 数据预处理
数据预处理又称为属性值得规范化,其目的是为了使得各属性值能够在同一平面上进行比较
属性值有不同的类型,如:
1. 效益型属性越大越好
2. 成本型属性越小越好
3. 区间型属性值是在某个区间最佳- 常用的属性规范化方法:
- 线性变换
原始的决策矩阵为 A = ( a i j ) m × n A = (a_{ij})_{m \times n} A=(aij)m×n,变换后的决策矩阵记为 B = ( b i j ) m × n , i = 1 , 2 , … , m , j = 1 , 2 , … , n B = (b_{ij})_{m \times n},i=1,2,\dots,m,j = 1,2,\dots,n B=(bij)m×n,i=1,2,…,m,j=1,2,…,n。设 a j m a x a_j^{max} ajmax是决策矩阵第j列中的最大值,设 a j m i n a_j^{min} ajmin是决策矩阵第j列中的最小值- 若 x j x_j xj为效益型属性,则 b i j = a i j / a j m a x b_{ij} = a_{ij}/a_j^{max} bij=aij/ajmax
注意这种变换得到的属性值,最差的不一定是0,但最好的一定是1
- 若 x j x_j xj为成本型属性,则 b i j = 1 − a i j / a j m a x b_{ij} = 1-a_{ij}/a_j{max} bij=1−aij/ajmax
注意这种变换得到的属性值,最差的不一定是1,但最好的一定是0
- 标准的0 - 1变换
为了解决线性变换中的问题,使得每个属性变换后的最优值为1且最差值为0,可以进行0-1变换- 对效益型属性 x j x_j xj,则 b i j = a i j − a j m i n a j m a x − a j m i n b_{ij}=\frac{a_{ij}-a_j^{min}}{a_j^{max}-a_j^{min}} bij=ajmax−ajminaij−ajmin
- 对成本型属性 x j x_j xj,则 b i j = a j m a x − a i j a j m a x − a j m i n b_{ij}=\frac{a_j^{max}-a_{ij}}{a_j^{max}-a_j^{min}} bij=ajmax−ajminajmax−aij
- 区间型属性的变换。有些属性既非效应型又非成本型,而是在某个区间中最优
设给定的最优属性区间为 [ a j 0 , a j ∗ ] [a_j^0,a_j^*] [aj0,aj∗], a j ′ a_j' aj′为无法容忍的下限, a j ′ ′ a_j'' aj′′为无法容忍上限,则 b i j = { 1 − a j 0 − a i j a j 0 − a j ′ , a j ′ ≤ a i j < a j 0 1 , a j 0 ≤ a i j ≤ a j ∗ 1 − a i j − a j ∗ a j ′ ′ − a j ∗ , a j ∗ < a i j ≤ a j ′ ′ 0 , 其他 b_{ij}=\begin{cases}1-\frac{a_j^0-a_{ij}}{a_j^0-a_j'},a_j' \leq a_{ij} \lt a_j^0\\ 1,\quad \quad \quad \quad a_j^0 \leq a_{ij} \leq a_j^*\\ 1-\frac{a_{ij}-a_j^*}{a_j''-a_j^*},\quad a_j^* \lt a_{ij} \leq a_j''\\ 0,\quad\quad\quad\quad\quad其他\end{cases} bij=⎩ ⎨ ⎧1−aj0−aj′aj0−aij,aj′≤aij<aj01,aj0≤aij≤aj∗1−aj′′−aj∗aij−aj∗,aj∗<aij≤aj′′0,其他
- 线性变换
- 常用的属性规范化方法:
-
第二步 获得加权的向量规范化属性矩阵
- 向量规范化
向量规范化均采用下式进行变换
b i j = a i j ∑ i = 1 m a i j 2 , i = 1 , 2 , … , n b_{ij} = \frac{a_{ij}}{\sqrt{\sum_{i=1}^{m}a_{ij}^2}},i=1,2,\dots,n bij=∑i=1maij2aij,i=1,2,…,n向量规范化与前面的变换不同,因为其无法从数值的大小上分辨出属性值的优劣。但是,规范化后各方案的同一属性值的平方和为1,因此常用于计算各方案与某种虚拟方案的欧几里得距离(也就是 t o p s i s topsis topsis)
- 向量规范化
-
第三步 得到正理想解和负理想解
正理想解或者负理想解是根据数据属性类型进行选择的。但是,即效益型的正理想解是最大值,成本型的正理想解是最小值 -
第四步 求各方案到正理想解 s i ∗ s_i^* si∗和负理想解 s i 0 s_i^0 si0的距离
这一步本质上计算的是欧几里和距离,也就是向量范数n = norm(v) 返回向量 v 的欧几里德范数。此范数也称为 2-范数、向量模或欧几里德长度。
调用方法一般就是各列与理想解进行做差求范数
Sstar(i) = norm(c(i,:)-Cstar); % norm 求的是向量范数,求到正理想解的距离 S0(i) = norm(c(i,:)-C0);% 求到负理想解的距离
-
第五步 计算排序指标值 f i ∗ f_i^* fi∗,由 f i ∗ f_i^* fi∗值得大小可确定各方案得从优到劣的次序
f = S0./(Sstar+S0) % 这里其实相当于做了归一化
本质上进行了归一化,最终得到归一化的f评价值。
-
-
完整代码
x = [0.1 5 5000 4.7;
0.2 6 6000 5.6;
0.4 7 7000 6.7 ;
0.9 10 10000 2.3;
1.2 2 400 1.8;]
[m,n] = size(x);
trans=@(qujian,lb,ub,x)(1-(qujian(1)-x)./(qujian(1)-lb)).*(x>=lb&x<qujian(1))...
+(x>=qujian(1)&x<=qujian(2))+(1-(x-qujian(2))./(ub - qujian(2))).*...
(x>qujian(2)&x<=ub) %由于函数太长,使用两个续行符
qujian =[5,6];%设定最优属性区间为【5,6】
lb = 2; ub = 12;%设定无法容忍的上界和下界
x(:,2) = trans(qujian,lb,ub,x(:,2));
for j =1:n
b(:,j)=x(:,j)/norm(x(:,j)); % 向量规范化
end
w = [0.2 0.3 0.4 0.1]; % 权重向量
c = b.*repmat(w,m,1); % 求加权矩阵
Cstar = max(c); % 求正理想解
Cstar(4) = min(c(:,4)); % 属性4为成本型,因此最小值为最优
C0 = min(c);% 求负理想解
C0(4) = max(c(:,4)); % 属性3为成本型,因此最大值为最劣
for i =1:m
Sstar(i) = norm(c(i,:)-Cstar); % norm 求的是向量范数,求到正理想解的距离
S0(i) = norm(c(i,:)-C0);% 求到负理想解的距离
end
Sstar,S0
f = S0./(Sstar+S0) % 这里其实相当于做了归一化
[sf,ind] = sort(f,'descend')
二、 模糊综合评价方法
在很多考核指标都难以直接量化,在评价实施过程中,评判者又容易受经验等主观因素的影响,导致评价往往带有一定的模糊性与经验性。
-
一级模糊综合评判模型的建立,主要包括以下步骤
以对人才进行评价为例
- 确定因素集
对员工的表现,需要从多个方面进行综合评判,如员工的工作业绩、工作态度、沟通能力、政治表现等。所有这些因素构成了评价指标体系集合,即因素集,记为 U = { u 1 , u 2 , … , u n } U= \{ u_1,u_2,\dots,u_n \} U={u1,u2,…,un} - 确定评语集
由于每个指标的评价值的不同,往往会形成不同的等级。如对工作业绩的评价有好、较好、中等、较差、很差等。由各种不同决断构成的集合称为评语集 V = { v 1 , v 2 , … , v n } V = \{v_1,v_2,\dots,v_n\} V={v1,v2,…,vn} - 确定各因素的权重
因素集中的各因素在综合评价中所起的作用是不相同的。=,这就需要确定一个各因素之间的权重分配,它是 U U U上的一个模糊向量,记为 A = [ a 1 , a 2 , … , a n ] A = [a_1,a_2,\dots,a_n] A=[a1,a2,…,an] 式中 a i 为第 i 个因素的权重,且满足 ∑ i = 1 n a i = 1 式中a_i为第i个因素的权重,且满足\sum_{i=1}^na_i=1 式中ai为第i个因素的权重,且满足∑i=1nai=1
那么应该如何确定权重向量呢?可以根据专家信息查表,这就会非常主观。也就是自己定~
- 确定模糊综合判断矩阵
对指标 u i u_i ui来说,对各个评语的隶属度为V上的模糊子集(也就是对各个评语的接近程度)。记为 R i = [ r i 1 , r i 2 , … , r i m ] R_i = [r_{i1},r_{i2},\dots,r_{im}] Ri=[ri1,ri2,…,rim]各个指标的模糊综合判断矩阵为 R = [ r 11 r 12 ⋯ r 1 m r 21 r 22 ⋯ r 2 m ⋮ ⋮ ⋱ ⋮ r n 1 r n 2 ⋯ r n m ] R = \begin{bmatrix} r_{11} & r_{12} & \cdots & r_{1m} \\ r_{21} & r_{22} & \cdots & r_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ r_{n1} & r_{n2} & \cdots & r_{nm} \\ \end{bmatrix} R=⎣ ⎡r11r21⋮rn1r12r22⋮rn2⋯⋯⋱⋯r1mr2m⋮rnm⎦ ⎤
他是一个从 U U U到 V V V的模糊关系矩阵 - 综合评判
如果有一个从 U U U到 V V V的模糊关系 R = ( r i j ) n × m R = (r_{ij})_{n \times m} R=(rij)n×m,那么利用 R R R就可以得到一个模糊变换 T R : F ( U ) → F ( V ) T_R:F(U)\rightarrow F(V) TR:F(U)→F(V),由此变换,就可得到综合评判结果 B = A ⋅ R B = A·R B=A⋅R
综合后的评判可看作是V上的模糊向量,记为 B = [ b 1 , b 2 , … , b m ] B = [b_1,b_2,\dots,b_m] B=[b1,b2,…,bm]
- 确定因素集
-
多层次模糊综合评价方法
多层次模糊综合评价方法,其原理就是对各二级,或者三级的指标进行逐级评价即可。我可以给出以下计算方法,以二级指标为例:- 确定因素集(明显有两层的指标),和评语集(这个对所有指标都适用)
- 设专家设定指标权重,一级指标权重为 A = [ 0.4 , 0.3 , 0.2 , 0.1 ] A = [0.4,0.3,0.2,0.1] A=[0.4,0.3,0.2,0.1]
- 二级指标权重为
A 1 = [ 0.2 , 0.3 , 0.3 , 0.2 ] A_1 = [0.2,0.3,0.3,0.2] A1=[0.2,0.3,0.3,0.2]
A 2 = [ 0.3 , 0.2 , 0.1 , 0.2 , 0.2 ] A_2 = [0.3,0.2,0.1,0.2,0.2] A2=[0.3,0.2,0.1,0.2,0.2]
A 3 = [ 0.1 , 0.2 , 0.3 , 0.2 , 0.2 ] A_3 = [0.1,0.2,0.3,0.2,0.2] A3=[0.1,0.2,0.3,0.2,0.2]
A 4 = [ 0.3 , 0.2 , 0.2 , 0.3 ] A_4 = [0.3,0.2,0.2,0.3] A4=[0.3,0.2,0.2,0.3] - 对各子因素集进行一级模糊综合评价得到,结果都是行向量
B 1 = A 1 ⋅ R 1 B_1 = A_1 \cdot R_1 B1=A1⋅R1
B 2 = A 2 ⋅ R 2 B_2 = A_2 \cdot R_2 B2=A2⋅R2
B 3 = A 3 ⋅ R 3 B_3 = A_3 \cdot R_3 B3=A3⋅R3
B 4 = A 4 ⋅ R 4 B_4 = A_4 \cdot R_4 B4=A4⋅R4 - 二级综合评价为
B = A ⋅ R = A ⋅ [ B 1 B 2 B 3 B 4 ] B =A \cdot R = A \cdot \begin{bmatrix} B_1\\B_2\\B_3\\B_4\end{bmatrix} B=A⋅R=A⋅⎣ ⎡B1B2B3B4⎦ ⎤
可得到最终的结果,根据最大隶属度原则,找到最接近德某个评语。
三、 层次分析法(AHP)
-
步骤一: 分析系统中各因素之间的关系,建立系统的递阶层次结构
-
步骤二: 对于同一层次的各元素关于上一层次中某一准测的重要性程度进行两两比较,构造两两比较矩阵
-
步骤三:由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验(检验通过时,权重才能用)
-
步骤四:根据权重计算得分
-
案例分析:
-
问题描述:对旅游问题进行层次分析法评价
因此构造判断矩阵:
- 对第一层
A = [ 1 1 2 4 3 3 2 1 7 5 5 1 4 1 7 1 1 2 1 7 1 3 1 5 2 1 1 1 3 1 5 3 1 1 ] A = \begin{bmatrix} 1 & \frac{1}{2} & 4 & 3 & 3 \\ 2 & 1 & 7 & 5 & 5\\ \frac{1}{4} & \frac{1}{7} & 1 & \frac{1}{2} & \frac{1}{7}\\ \frac{1}{3} & \frac{1}{5} & 2 & 1 & 1\\ \frac{1}{3} & \frac{1}{5} & 3 & 1 & 1 \end{bmatrix} A=⎣ ⎡1241313121171515147123352111357111⎦ ⎤ - 对第二层
- 对于指标 A 1 A_1 A1,可获得判断矩阵: B 1 = [ 1 2 5 1 2 1 2 1 5 1 2 1 ] B_1 = \begin{bmatrix} 1&2&5\\ \frac{1}{2}&1&2\\ \frac{1}{5}&\frac{1}{2}&1 \end{bmatrix} B1=⎣ ⎡121512121521⎦ ⎤
- 对于指标 A 2 A_2 A2,可获得判断矩阵: B 2 = [ 1 1 3 1 8 3 1 1 3 8 3 1 ] B_2 = \begin{bmatrix} 1&\frac{1}{3}&\frac{1}{8}\\ 3&1&\frac{1}{3}\\ 8&3&1 \end{bmatrix} B2=⎣ ⎡138311381311⎦ ⎤
- 对于指标 A 3 A_3 A3,可获得判断矩阵:B_3 = [ 1 1 3 1 1 3 1 3 1 3 1 ] \begin{bmatrix} 1&1&3\\ 1&1&3\\ \frac{1}{3}&\frac{1}{3}&1 \end{bmatrix} ⎣ ⎡11311131331⎦ ⎤
- 对于指标 A 4 A_4 A4,可获得判断矩阵: B 4 = [ 1 3 4 1 3 1 1 1 4 1 1 ] B_4 = \begin{bmatrix} 1&3&4\\ \frac{1}{3}&1&1\\ \frac{1}{4}&1&1\\ \end{bmatrix} B4=⎣ ⎡13141311411⎦ ⎤
- 对于指标 A 5 A_5 A5,可获得判断矩阵: B 5 = [ 1 1 1 4 1 1 1 4 4 4 1 ] B_5 = \begin{bmatrix} 1&1&\frac{1}{4}\\ 1&1&\frac{1}{4}\\ 4&4&1\\ \end{bmatrix} B5=⎣ ⎡11411441411⎦ ⎤
- 对第一层
-
计算权重:
层次分析法是从高层到低层计算的算法,因此需要得到高层的权重向量
-
计算第一层权重向量
clear;clc A =[1 1/2 4 3 3; 2 1 7 5 5; 1/4 1/7 1 1/2 1/7; 1/3 1/5 2 1 1; 1/3 1/5 3 1 1;] %% 方法1:算术平均法求权重 % 第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和) Sum_A = sum(A); [n,n] = size(A) ; % 因为我们的判断矩阵A是一个方阵,所以这里的r和c相同,我们可以就用同一个字母n表示 SUM_A = repmat(Sum_A,n,1) ; Stand_A = A ./ SUM_A; disp('算术平均法求权重的结果为:'); disp(sum(Stand_A,2) / n) %% 方法2:几何平均法求权重 Prduct_A = prod(A,2); Prduct_n_A = Prduct_A .^ (1/n); disp('几何平均法求权重的结果为:'); disp(Prduct_n_A ./ sum(Prduct_n_A)) %% 方法3:特征值法求权重 [V,D] = eig(A) ; %V是特征向量, D是由特征值构成的对角矩阵(除了对角线元素外,其余位置元素全为0) Max_eig = max(max(D)); %也可以写成max(D(:))哦~ [r,c] = find(D == Max_eig , 1); disp('特征值法求权重的结果为:'); disp( V(:,c) ./ sum(V(:,c)) ) w = (V(:,c) ./ sum(V(:,c))+Prduct_n_A ./ sum(Prduct_n_A)+sum(Stand_A,2) / n)./3
-
最终获得的权重向量
w = [ 0.2647 0.4787 0.0486 0.0989 0.1090 ] w=[0.2647 \quad 0.4787 \quad 0.0486 \quad 0.0989 \quad 0.1090] w=[0.26470.47870.04860.09890.1090]
进行一致性检验
clc
A =[1 1/2 4 3 3;
2 1 7 5 5;
1/4 1/7 1 1/2 1/7;
1/3 1/5 2 1 1;
1/3 1/5 3 1 1;]
[n,n] = size(A) ;
[V,D] = eig(A) ; %V是特征向量, D是由特征值构成的对角矩阵(除了对角线元素外,其余位置元素全为0)
Max_eig = max(max(D)); %也可以写成max(D(:))哦~
%% 计算一致性比例CR
CI = (Max_eig - n) / (n-1);
RI=[-2 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]; %注意哦,这里的RI最多支持 n = 15
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR< 0.1
disp('因为CR < 0.10,所以该判断矩阵A的一致性可以接受!');
else
disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end
-
计算第二层权重向量
-
根据以上程序计算得到的权重:
-
对整体模型进行一致性检验
根据以上公式最终可以得到表格
A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4 A 5 A_5 A5 B 1 B_1 B1 0.5954 0.0819 0.4286 0.6337 0.1667 B 2 B_2 B2 0.2764 0.2363 0.4286 0.1919 0.1667 B 3 B_3 B3 0.1283 0.6817 0.1429 0.1744 0.6667 A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4 A 5 A_5 A5 0.2647 0.4787 0.0486 0.0989 0.1090 因此可以计算 B 1 B_1 B1的积分排名:
-