1.熵值法原理
熵值法是一种客观赋权法,其根据各项指标观测值所提供的信息的大小来确定指标权重。设有m个待评方案,n项评价指标,形成原始指标数据矩阵X=(xij)m×n,对于某项指标xj,指标值xij的差距越大,则该指标在综合评价中所起的作用越大;如果某项指标的指标值全部相等,则该指标在综合评价中不起作用。
在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性就越大,熵也越大.根据熵的特性,我们可以通过计算熵值来判断一个方案的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大!因此,可根据各项指标的变异程度,利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据!
2.算法实现过程
3.熵值法的优缺点
优点:熵值法是根据各项指标指标值的变异程度来确定指标权数的,这是一种客观赋权法,避免了人为因素带来的偏差。
缺点:忽略了指标本身重要程度,有时确定的指标权数会与预期的结果相差甚远,同时熵值法不能减少评价指标的维数!
4.案例
下表是购买教车的一个决策矩阵,给出了四个方案供我们进行选择,每个方案中均有相同的六个属性(假设均为正向指标),我们需要利用熵值法求出各属性的权重,以及每个方案的综合分数。
| 油耗 | 功率 | 费用 | 安全性 | 维护性 | 操作性 | |
| 本田 | 5 | 1.4 | 6 | 3 | 5 | 7 |
| 奥迪 | 9 | 2 | 30 | 7 | 5 | 9 |
| 桑塔纳 | 8 | 1.8 | 11 | 5 | 7 | 5 |
| 别克 | 12 | 2.5 | 18 | 7 | 5 | 5 |
matlab代码
-
clc;clear; -
x=[5 1.4 6 3 5 7 -
9 2 30 7 5 9 -
8 1.8 11 5 7 5 -
12 2.5 18 7 5 5]; -
lamda=[1,1,1,1,1,1];%---人为修权,1代表不修改计算后的指标权重 -
[m,n]=size(x); -
for i=1:n -
x(:,i)=(x(:,i)-min(x(:,i)))/(max(x(:,i))-min(x(:,i)))+1;%对原始数据进行非负数化、归一化处理,值介于1-2之间 -
end -
for i=1:m -
for j=1:n -
p(i,j)=x(i,j)/sum(x(:,j)); -
end -
end -
k=1/log(m); -
for i=1:m -
for j=1:n -
if p(i,j)~=0 -
e(i,j)=p(i,j)*log(p(i,j)); -
else -
e(i,j)=0; -
end -
end -
end -
for j=1:n -
E(j)=-k*sum(e(:,j)); -
end -
d=1-E; -
for j=1:n -
w(j)=d(j)/sum(d);%指标权重计算 -
end -
for j=1:n -
w(j)=w(j)*lamda(j)/sum(w.*lamda);% 修改指标权重 -
end -
for i=1:m -
score(i,1)=sum(x(i,:).*w);%计算综合分数 -
end -
disp('各指标权重为:') -
disp(w) -
disp('各品牌综合分数为:') -
disp(score)
运行结果
所以在购买汽车时,据所提供信息,利用熵值法计算得出的权重为油耗占12.81%,功率占13.23%,费用占15%,安全性占15.35%,维护性占24%,操作性占19.6%。故我们在进行购买决策时,更多是考虑车型的维护性、操作性和安全性等重要因素。这是从权重角度考虑的。
就本例而言,每个车型每个指标的得分与其权重的乘积之和为其综合评价值,这样求得本田1.098分,奥迪1.644分,桑塔纳1.4511分,别克1.489分。所以综合评价排序为奥迪、别克、桑塔纳、本田。