评价类模型
文章目录
声明
对于本文章的层次分析法和模糊类评判法参考和引用了如下两篇博客
层次分析法、模糊综合评测法实例分析(涵盖各个过程讲解、原创实例示范、MATLAB源码公布) - 是不过三 - 博客园 (cnblogs.com)
层次分析法(AHP)和模糊层次分析法(FAHP)-优快云博客
评价类算法
最重要的是确定权重,在评价类算法中所有的方法可以看成是一个集合 D , 每个集合里都有其对应的方案 最重要的是确定权重,在评价类算法中所有的方法可以看成是一个集合\mathbb{D},每个集合里都有其对应的方案 最重要的是确定权重,在评价类算法中所有的方法可以看成是一个集合D,每个集合里都有其对应的方案
我们不妨把这些记作 x 1 , x 2 . . . x i ,然后每个方案和对应的方法可以组合成一个 n 维向量 [ a 1 i , a 2 i . . . a j i ] 我们不妨把这些记作x_{1},x_{2}...x_{i},然后每个方案和对应的方法可以组合成一个n维向量\begin{bmatrix} a_{1i},a_{2i}...a_{ji} \end{bmatrix} 我们不妨把这些记作x1,x2...xi,然后每个方案和对应的方法可以组合成一个n维向量[a1i,a2i...aji]
通过在n维空间中的一个点确定出方案的位置。
我们一般把数据分为几种类型,一种是效益性属性,成本性属性,区间型属性。其中效益性属性越大越好,成本型属性越小越好,区间型属性是在某个区间最佳。
在进行评价类算法时我们要进行数据的预处理,其中数据的预处理又称为属性值的规范化
对属性值的规范化主要有三个作用:1.预处理后的数据可以直接根据方案变换后的属性值大小去判断,属性值越大方案越好。2.无量纲化,排除量纲的选用对决策或评估结果的影响。3.归一化,把数据变成[0,1]的区间内,方便观察,数值越大,方案越优。
常用的规范化的方法:
① 线性变换。设原始的决策矩阵为
A
m
∗
n
A_{m*n}
Am∗n,变换后的矩阵为
B
m
∗
n
B_{m*n}
Bm∗n;设$a_{j}^{max}
是决策矩阵中第
j
列中的最大值,
是决策矩阵中第j列中的最大值,
是决策矩阵中第j列中的最大值,a_{j}^{min}
是决策矩阵中的最小值。若
是决策矩阵中的最小值。若
是决策矩阵中的最小值。若x_{j}$为效益性属性,则
b
i
j
=
a
i
j
a
j
m
a
x
b_{ij} = \frac{a_{ij}}{a_{j}^{max}}
bij=ajmaxaij
若
x
j
x_{j}
xj为成本型属性,则
b
i
j
=
1
−
a
i
j
a
j
m
a
x
b_{ij} =1- \frac{a_{ij}}{a_{j}^{max}}
bij=1−ajmaxaij
经过规范后最差属性为0,但最优属性不一定是1
②标准的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}^{0}
aj0,
a
j
∗
a_{j}^{*}
aj∗],a’为无法容忍下限,a’'为无法容忍上限
b
i
j
=
{
1
−
a
j
0
−
a
i
j
a
j
0
−
a
j
′
a
j
r
≤
a
i
j
<
a
j
0
1
,
a
j
0
≤
a
i
j
≤
a
j
∗
1
−
a
i
j
−
a
j
0
a
′
′
−
a
j
∗
a
j
r
≤
a
i
j
<
a
j
0
0
,
其他
b_{ij} = \left\{\begin{matrix} 1- \frac{a_{j}^{0}-a_{ij}}{a_{j}^{0}-a_{j}^{'}}& a_{j}^{r}\le a_{ij}<a_{j}^{0}\\ 1, & a_{j}^{0}\le a_{ij}\le a_{j}^{*}\\ 1- \frac{a_{ij}-a_{j}^{0}}{a_{''}-a_{j}^{*}}& a_{j}^{r}\le a_{ij}<a_{j}^{0} & \\ 0,& 其他 \end{matrix}\right.
bij=⎩
⎨
⎧1−aj0−aj′aj0−aij1,1−a′′−aj∗aij−aj00,ajr≤aij<aj0aj0≤aij≤aj∗ajr≤aij<aj0其他
④向量规范化,不管是成本性属性还是效益型属性,向量的规范化均使用以下公式(m行n列)
b
i
j
=
a
i
j
∑
i
=
1
m
a
i
j
2
,
i
=
1
,
2
,
3
,
.
.
.
,
m
,
j
=
1
,
2
,
3
,
.
.
.
,
n
b_{ij} = \frac{a_{ij}}{\sqrt{\sum_{i=1}^{m} a_{ij}^{2}}} , i= 1,2,3,...,m,j=1,2,3,...,n
bij=∑i=1maij2aij,i=1,2,3,...,m,j=1,2,3,...,n
需要注意的是该规范方法无法从值的大小去判别属性值的优劣,最大特点就是规范化后,各方案的同一属性值的平方和为。因此常用来计算各方案与某决策方案的欧氏距离。
⑤标准化处理;为了消除不同变量之间的量纲带来的影响,让每个变量都具有相同的表现能力,数据分析中常对数据进行标准化处理。(m行n列)
μ
j
=
1
m
∑
i
=
1
m
a
i
j
,
i
=
1
,
2
,
3
,
.
.
.
,
m
\mu_{j} = \frac{1}{m}\sum_{i=1}^{m}a_{ij}, i= 1,2,3,...,m
μj=m1i=1∑maij,i=1,2,3,...,m
s j = 1 m − 1 ∑ i = 1 m ( a i j − μ i j ) 2 , j = 1 , 2 , 3 , . . . , n s_{j} = \sqrt{\frac{1}{m-1}\sum_{i=1}^{m}(a_{ij} - \mu_{ij})^{2}},j=1,2,3,...,n sj=m−11i=1∑m(aij−μij)2,j=1,2,3,...,n
b i j = a i j − μ j s j , i = 1 , 2 , 3 , . . . , m , j = 1 , 2 , 3 , . . . , n b_{ij} = \frac{a_{ij}-\mu_{j}}{s_{j}} , i= 1,2,3,...,m,j=1,2,3,...,n bij=sjaij−μj,i=1,2,3,...,m,j=1,2,3,...,n
AHP-层次分析法(没有很强的数据支撑定权重)&FAHP-模糊综合评判法
特点:定性与定量相结合
将决策有关的元素分解成目标层,准则层,方案层。(定下权重是第一步)
保证数据的准确性,数据不要超过9个,且层次分析法的主观性比较强。
标度 | 含义 |
---|---|
1 | 表示两个因数相比具有相同的重要性 |
3 | 表示来两个因数相比,前者比后者稍微重要 |
5 | 表示来两个因数相比,前者比后者明显重要 |
7 | 表示来两个因数相比,前者比后者强烈重要 |
9 | 表示来两个因数相比,前者比后者极端重要 |
2、4、6、8 | 表示上述相邻判断的中间值 |
倒数 | 若因数i与因数j的重要性只比 a i j a_{ij} aij,那么因素j与因素i的重要性之比为$a_{ij} = \frac{1}{a_{ij}} $ |
赋权重时对角线全为1,越重要的数越小,先赋值右上部分,左下部分取倒数。
因为是具有主观性的,所以为了判断是不是合理,还需要对判断矩阵进行一致性检验
首先我们需要求解目标矩阵的特征值和特征向量
权重的计算方法
对于计算每一层次指标的权重时应当构建比较矩阵
1.算术平均求权重
①将判断矩阵内的所有元素按照归一化处理,②再将归一化的各列按行求和,③最后将相加后的向量中的每个元素除以n,即可得到权重向量 ω i \omega_{i} ωi,( i = 1 , 2... n i = 1,2...n i=1,2...n)
过程如下:
得到了一个权重向量的公式
ω
i
=
1
n
∑
j
=
1
n
a
i
j
∑
k
=
1
n
a
k
j
,
(
i
=
1
,
2...
n
)
\omega_{i} = \frac{1}{n}\sum_{j=1}^{n}\frac{a_{ij}}{\sum_{k=1}^{n}a_{kj}},(i=1,2...n)
ωi=n1j=1∑n∑k=1nakjaij,(i=1,2...n)
2.几何平均法求权重
①先把每行的数据进行行相乘,②再把每行的数据的乘积进行开n次方(n为方阵的维数)得到一个列向量,③然后标准化向量即为列向量的权重。
再进行几何平均法得到权重向量
ω
i
=
(
∏
j
=
1
n
a
i
j
)
1
n
(
∑
k
=
1
n
∏
j
=
1
n
a
k
j
)
1
n
,
(
i
=
1
,
2...
n
)
\omega_{i} = \frac{( {\textstyle \prod_{j=1}^{n}}a_{ij} )^\frac{1}{n}}{( \sum_{k=1}^{n}{\textstyle \prod_{j=1}^{n}}a_{kj} )^\frac{1}{n}},(i=1,2...n)
ωi=(∑k=1n∏j=1nakj)n1(∏j=1naij)n1,(i=1,2...n)
3.特征值法求权重
有一n阶方阵,设其最大特征根为 λ m a x \lambda_{max} λmax,解出判断矩阵的特征根。根据公式 A ω = λ m a x ω A\omega = \lambda_{max}\omega Aω=λmaxω,所得的解 ω 经过归一化处理后就是同一层次相应元素对于上一层次某一因素相对重要性的权重向量。(三个方法都需要检测一致性比例)
最大特征根计算公式如下:
λ
m
a
x
=
1
n
∑
i
=
1
n
a
j
(
A
ω
)
i
ω
i
\lambda_{max}=\frac{1}{n}\sum_{i=1}^{n}a_{j}\frac{(A\omega)_{i}}{\omega_{i}}
λmax=n1i=1∑najωi(Aω)i
ω
i
\omega_{i}
ωi是权重向量
ω
×
A
n
∗
n
\omega × A_{n*n}
ω×An∗n得到的列向量
A
ω
A\omega
Aω中的第i个分量
归一化公式
W
i
=
ω
i
∑
j
=
1
n
ω
j
,
(
i
,
j
=
1
,
2
,
3
,
.
.
.
,
n
)
W_{i}=\frac{\omega_{i}}{\sum_{j=1}^{n}\omega_{j}},(i,j=1,2,3,...,n)
Wi=∑j=1nωjωi,(i,j=1,2,3,...,n)
计算一致性指标 CI
C I = λ m a x − n n − 1 CI =\frac{\lambda_{max}-n}{n-1} CI=n−1λmax−n
其中 λ \lambda λ为最大特征值向量
然后查找相应的平均随机数一致性指标RI,对n=1,2,3…9给出了下表的数据:(n是数据个数)
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
RI | 0 | 0 | 0.58 | 0.90 | 1.12 | 1.24 | 1.32 | 1.41 | 1.45 |
RI是通过随即方法构造500个样本矩阵,随机地从1-9及其例数中抽取构造出一个正反矩阵,求出最大的特征值,并定义
R
I
=
λ
m
a
x
−
n
n
−
1
RI =\frac{\lambda_{max}-n}{n-1}
RI=n−1λmax−n
计算一致性比例CR
C R = C I R I CR = \frac{CI}{RI} CR=RICI
当$CR < 0.10 $时,一致性接受,否则就适当修改矩阵的参数
得到最大特征值对应的特征向量(是针对每个特定的属性进行多次计算)
T = [ t 1 t 2 . . t n ] T = \begin{bmatrix} t_{1}&t_{2}&..&t_{n} \end{bmatrix} T=[t1t2..tn]
如下图的例子:
得到权重向量(即每种情况的权向量合在一起)
W = [ ω 1 ω 2 . . . ω n ] W=\begin{bmatrix} \omega_{1}&\omega_{2}&...&\omega_{n} \end{bmatrix} W=[ω1ω2...ωn]
假设每个属性对应的评分是P,最后得分是S
S
=
P
∗
W
S= P*W
S=P∗W
这里为了方便理解如何分层次构建判断矩阵,给出几个图例:
FAHP
其思想过程和层次分析法类似,最大的不同之处在于它是运用了模糊数学,我个人的理解是模糊评判法是将现实的一系列因素考虑进去,但因为无法确定人主观性的评价而进行的模糊处理的一种方式。
FAHP的思想方法
**step1.**确定因素集和评语集,根据结构层次划分为不同级别的权重。
**step2.**对每一个因素集
U
i
U_{i}
Ui,分别做出综合性判断计算每一级的模糊的向量A
A
=
[
a
1
a
2
.
.
a
n
]
A = \begin{bmatrix} a_{1}&a_{2}&..&a_{n} \end{bmatrix}
A=[a1a2..an]
step3确定模糊综合判断矩阵。对于
u
i
u_{i}
ui来说,对每个评语的隶属度为V上的模糊子集。对于
u
i
u_{i}
ui的评判记为
R
i
=
[
r
i
1
r
i
2
.
.
r
i
m
]
R_{i} =\begin{bmatrix} r_{i1}&r_{i2}&..&r_{im} \end{bmatrix}
Ri=[ri1ri2..rim]
以
R
i
R_{i}
Ri为第i行构造出评价矩阵
根据公式
B
=
A
×
R
B = A×R
B=A×R
得到综合评判结果B的一个行向量,取数值结果最大的值为评判结果
层次分析法matlab的脚本
clc,clear
%层次分析法求权重、一致性、相关比例程序:
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
% 算术平均法求权重
A_sum= sum(A);
Sum_A = repmat(A_sum,n,1);
Stand = A ./ Sum_A;
disp('算术平均法求权重的结果为:');
disp(sum(Stand,2)./n)
%几何平均法求权重
Prduct = prod(A,2);
Prduct_n = Prduct.^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n ./ sum(Prduct_n))
%特征值法求权重
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )
%计算一致性比例CR
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 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
% 这里n=2时,一定是一致矩阵,所以CI = 0,本文为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
disp('因为CR<0.10,该判断矩阵的一致性可以接受');
else
disp('注意:CR >= 0.10,该判断矩阵需要进行修改');
end
模糊综合评测法的matlab脚本
% 二级,一级直接B=AR
clc,clear
w1=[0.7584 0.1681 0.0735];%录入B1下的权重
w2=[0.0762 0.2308 0.6929];%录入B2下的权重
w3=[0.8000 0.2000];%B3下的权重
w4=[0.8333 0.1667];%B4下的权重
w5=[0.6667 0.3333];%B5下的权重
R1=[0.4 0.35 0.1 0.1 0.05; %R1模糊评价矩阵
0.35 0.35 0.15 0.1 0.05;
0.2 0.2 0.35 0.2 0.05];
R2=[0.4 0.25 0.25 0.05 0.05; %R2模糊评价矩阵
0.35 0.3 0.25 0.05 0.05;
0.4 0.3 0.15 0.1 0.05];
R3=[0.3 0.2 0.3 0.1 0.1; %R3模糊评价矩阵
0.4 0.3 0.15 0.1 0.05];
R4=[0.2 0.35 0.3 0.1 0.05; %R4模糊评价矩阵
0.15 0.25 0.25 0.2 0.15];
R5=[0.35 0.2 0.2 0.15 0.1; %R5模糊评价矩阵
0.3 0.25 0.25 0.15 0.05];
Q=[0.4803 0.302 0.0536 0.0787 0.0854];%一级的权重A
C1=w1*R1; %B=AR运算
C2=w2*R2;
C3=w3*R3;
C4=w4*R4;
C5=w5*R5;
E=Q*[C1;C2;C3;C4;C5]; %加入权重
fprintf('%.4f\n',E) %输出评语评价结果
TOPSIS法
直接用来评价的方法,可以和赋权的方法一起使用。该方法是通过样本值和理想值的距离实现综合评价的方法。逼近理想解排序法采用相对接近度来表征各个对象与参考点的欧氏距离。
一般的使用思路与步骤:
①用向量规划的方法求得规范决策矩阵。设多属性的决策矩阵为
A
=
(
a
i
j
)
m
∗
n
A = (a_{ij})_{m*n}
A=(aij)m∗n,规范性决策矩阵
B
=
(
b
i
j
)
m
∗
n
B =(b_{ij})_{m*n}
B=(bij)m∗n,
b
i
j
=
a
i
j
∑
i
=
1
m
a
i
j
2
,
i
=
1
,
2
,
3
,
.
.
.
,
m
,
j
=
1
,
2
,
3
,
.
.
.
,
n
b_{ij} = \frac{a_{ij}}{\sqrt{\sum_{i=1}^{m} a_{ij}^{2}}} , i= 1,2,3,...,m,j=1,2,3,...,n
bij=∑i=1maij2aij,i=1,2,3,...,m,j=1,2,3,...,n
②构造加权规范矩阵
C
=
(
c
i
j
)
m
∗
n
C = (c_{ij})_{m*n}
C=(cij)m∗n。设我们自己定的权重向量为
W
=
[
ω
1
ω
2
.
.
.
ω
n
]
T
W=\begin{bmatrix} \omega_{1}&\omega_{2}&...&\omega_{n} \end{bmatrix}^T
W=[ω1ω2...ωn]T则
c
i
j
=
ω
i
j
∗
b
i
j
,
i
=
1
,
2
,
.
.
.
m
,
j
=
1
,
2
,
.
.
n
c_{ij}=\omega_{ij}*b_{ij},i=1,2,...m,j=1,2,..n
cij=ωij∗bij,i=1,2,...m,j=1,2,..n
这里的权重可以使用层次分析法,熵权法,模糊评判法等主客观赋权方法。
③确定出正理想解 C ∗ C^* C∗(每个指标即每列的最大值)第j个属性为 c j ∗ c_{j}^* cj∗,和负理想解 C 0 C^0 C0(每个指标即每列的最小值)的第j个属性 c j 0 c_{j}^0 cj0。
设第i个评价对象于正理想解的距离为
d
+
d^+
d+,第i个评价对象于负理想解的距离为
d
−
d^-
d−。
d
i
+
=
∑
j
=
1
n
(
c
i
j
−
c
j
∗
)
2
,
i
=
1
,
2...
m
d_{i}^+=\sqrt{\sum_{j=1}^n(c_{ij}-c_{j}^*)^2},i=1,2...m
di+=j=1∑n(cij−cj∗)2,i=1,2...m
d i − = ∑ j = 1 n ( c i j − c j 0 ) 2 , i = 1 , 2... m d_{i}^-=\sqrt{\sum_{j=1}^n(c_{ij}-c_{j}^0)^2},i=1,2...m di−=j=1∑n(cij−cj0)2,i=1,2...m
④计算各方案的评价指数:
s
c
o
r
e
=
d
i
−
d
i
+
+
d
i
−
score = \frac{d_{i}^-}{d_{i}^++d_{i}^-}
score=di++di−di−
⑤按照指标大小进行排序
TOPSIS matlab代码
clc;clear;
data=xlsread('D:\桌面\TOPSIS.xlsx');
%标准化 标准化处理后数据为data1
data1=data;
for j=1:size(data1,2)
data1(:,j)= data(:,j)./sqrt(sum(data(:,j).^2));
end
%得到信息熵
[m,n]=size(data1);
p=zeros(m,n);
for j=1:n
p(:,j)=data1(:,j)/sum(data1(:,j));
end
for j=1:n
E(j)=-1/log(m)*sum(p(:,j).*log(p(:,j)));
end
%计算权重
w=(1-E)/sum(1-E)
%得到加权重后的数据
% w=[0.3724, 0.1003,0.1991, 0.1991,0.0998,0.0485]; %使用求权重的方法求得
R=data1*w';
%得到最大值和最小值距离
r_max=max(R); %每个指标的最大值
r_min=min(R); %每个指标的最小值
d_z = sqrt(sum([(R -repmat(r_max,size(R,1),1)).^2 ],2)) ; %d+向量
d_f = sqrt(sum([(R -repmat(r_min,size(R,1),1)).^2 ],2)); %d-向量
%sum(data,2)对行求和 ,sum(data)默认对列求和
%得到得分
s=d_f./(d_z+d_f );
Score=100*s/max(s);
for i=1:length(Score)
fprintf('第%d个投标者百分制评分为:%d\n',i,Score(i));
end
灰色综合评价法(灰色关联度分析)
①确定出比较数列和参考数列,设评价对象有m个,评价指标有n个,每个指标变量 x j x_{j} xj都是效益型指标变量。
②确定权重(可用熵权法)
③计算灰色关联系数
分辨系数 ρ \rho ρ越大,分辨率越大, ρ \rho ρ越小分辨率越小。要排除分辨系数的影响,可以令 ρ = 0.5 \rho = 0.5 ρ=0.5
④计算关联度
⑤排序
关联度按大小排序,如果r 1 < r 2 r1 < r2r1<r2,则参考数列y yy与比较数列x 2 x2x2更相似。
在算出X i ( k ) Xi(k)Xi(k)序列与Y ( k ) Y(k)Y(k)序列的关联系数后,计算各类关联系数的平均值,平均值r i riri就称为Y ( k ) Y(k)Y(k)与X i ( k ) Xi(k)Xi(k)的关联度。
clc,clear
a = [] %
for i = [1 5:9] %效益性指标标准化
a(i,:) = (a(i,:)-min(a(i,:)))/(max(a(i,:))-min(a(i,:)));
end
for i =2:4 %效益性指标标准化
a(i,:) = (max(a(i,:))-a(i,:))/(max(a(i,:))-min(a(i,:)));
end
[m,n] = size(a); %计算维数
ck = max(a,[],2); %逐行求最大值,得参考数列
t = ck-a; %求参考数列与每一个比较数列的差值
mmin = min(min(t)); %计算最小差
mmax = max(max(t)); %计算最大差
rho = 0.5 ; %分辨系数(取0.5是减小系数带来的影响)
xishu = (mmin+rho*mmax)./(t+rho*mmax) %计算灰色关联系数
guanliandu = mean(xishu) %取等权重,计算关联度
[gsort,ind] = sort(guanliandu,'descend') %对关联度从大到小排序
熵权法(确定权重)
这是一个客观的赋权的方法,里面运用到的是熵的定义,当系统可能处于几种不同的状态,每种状态出现的可能为
p
i
(
i
=
1
,
2
,
3...
m
)
p_{i}(i=1,2,3...m)
pi(i=1,2,3...m),则有熵的公式;
e
=
−
1
l
n
m
e = -\frac{1}{lnm}
e=−lnm1
步骤:
①利用原始数据矩阵
A
=
(
a
i
j
)
m
∗
n
A = (a_{ij})_{m*n}
A=(aij)m∗n计算
p
i
j
(
i
=
1
,
2...
m
,
j
=
1
,
2...
n
)
p_{ij}(i=1,2...m,j=1,2...n)
pij(i=1,2...m,j=1,2...n),即第i个评价对象关于第j个指标值的比重:
p
i
j
=
a
i
j
∑
i
=
1
m
a
i
j
,
i
=
1
,
2..
m
,
j
=
1
,
2..
n
p_{ij} = \frac{a_{ij}}{\sum_{i=1}^{m}a_{ij}},i=1,2..m,j=1,2..n
pij=∑i=1maijaij,i=1,2..m,j=1,2..n
②计算第j项指标的熵值:
e
=
−
1
l
n
m
∑
i
=
1
m
p
i
j
l
n
p
i
j
,
j
=
1
,
2..
,
n
e = -\frac{1}{lnm}\sum_{i=1}^{m}p_{ij}lnp_{ij},j=1,2..,n
e=−lnm1i=1∑mpijlnpij,j=1,2..,n
③计算第j项指标的变异系数
g
j
=
1
−
e
j
,
j
=
1
,
2...
,
n
g_{j} = 1-e_{j},j =1,2...,n
gj=1−ej,j=1,2...,n
④计算第j项指标的权重(一般就算到这里)
ω
j
=
g
j
∑
j
=
1
n
g
j
,
j
=
1
,
2...
n
\omega_{j} = \frac{g_{j}}{\sum_{j=1}^ng_{j}},j=1,2...n
ωj=∑j=1ngjgj,j=1,2...n
⑤计算第i个评价对象的综合评价值:
s
i
j
=
∑
j
=
1
n
ω
i
j
p
i
j
s_{ij} = \sum_{j=1}^n\omega_{ij}p_{ij}
sij=j=1∑nωijpij
评价值越大越好
熵权法matlab代码
clc,clear
a = readmatrix('data.txt')%记得换路径
[n,m] = size(a) %计算矩阵的维数
p = a./sum(a)
e = -sum(p.*log(p))/log(n)
g = 1-e;w=g/sum(g) %计算权重
s = w*p' %计算各个评价对象的综合评价值
[ss,ind1]=sort(s,'descend') %对评价值从大到小排序
ind2(ind1) = 1:n %把学生编号对应的排序位置
writematrix(w,'data1.xlsx') %把权重数据写入表单1g
writematrix([1:n;s;ind2],'data2.xlsx','Sheet',2) %把综合评价数值写入表单2