目录
前言
信息熵
熵权法
一、概述
二、数据处理
Ⅰ、正向化
①极小转化为极大型
②中间最优型转极大值
③区间最优[a,b]转极大型
Ⅱ、归一化(normalization)
三、求信息熵
四、计算指标权重
实例分析
前言
对于m个对象,从n个指标进行评价,在进行最后排名时,只看各指标总分并不科学,通过赋予各个指标权重系数,再进行加权求和,得出的结果相对科学。熵权法是实现上面方法的一种途径。
信息熵
信息熵(information entropy)是信息论的基本概念。描述信息源各可能事件发生的不确定性。而不确定性函数 f 是 p 的减函数(概率越大,确定性越高,不确定性越低),所以f(p1,p2)=f(p1)+f(p2)。易知对数函数满足以上条件,因此我们用
来计算信源的平均不确定性(信息熵),一般以2为底,单位为bit,显然,信息熵>=0。
举个例子,抛一枚硬币,正反概率都是1/2,其信息熵是:
bit,但抛一枚正反都一样的硬币,其信息熵为
,其中定义
bit。熵越大越复杂,可以结合物理里面的熵增定律来记忆(熵的概念本就是从物理引入的)。
熵权法
一、概述
根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。这是熵权法的理论基础。
二、数据处理
评价指标是多样的,大致分为四种:极大型,极小型,中间型,区间型,我们统一转化为极大型进行处理。
Ⅰ、正向化
①极小转化为极大型
;若对象均为正数,也可使用1/x
②中间最优型转极大值
,
是最优的点,
是正向化处理后的数据
③区间最优[a,b]转极大型
b" title="x_i'=1-(x_i-b)/M,x_i>b" style="width: 231px; visibility: visible;" data-type="block">
%%极小化极大
x=max(x)-x;
%%中间化极大
x=1-abs(x-b)/max(x-b);%b是best值
%%区间化极大[a,b]是最优
m=max(max(a-min(x)),max(b-max(x)));
for i=1:size(x,2)
if x(i,1)<a
x(i,1)=1-(a-x(i,1))/M;
elseif a<=x(i,1)<=b
x(i,1)=1;
else
x(i,1)=1-(x(i,1)-b)/M;
end
end
Ⅱ、归一化(normalization)
将数据都转化为极大型指标后,进行归一化处理,注意的是mapminmax是按行进行归一化
x=rand(20,10);
m=mapminmax(x,0,1);
三、求信息熵
x=rand(50,1);
p=x/sum(x);
E=sum(-1/log(size(x,1))*p.*log(p));
四、计算指标权重
,之后将指标权重矩阵与原数据相乘即可
实例分析
data是从阿里天池下载后经处理的数据,包括51个学生16科成绩的分数和总分制的排名,现用熵权法重新排名。(需要完整数据的请私信)
load('data.mat')
%归一化(normalization)
d=mapminmax(data',0.4,1)';%注意将x转置
%信息熵(information entropy)
[m,n]=size(d);
q=zeros([1,n]);
for i=1:n
p=d(:,i)/sum(d(:,i));
q(1,i)=sum(-1/log(m)*p'*log(p));
end
%计算权重矩阵(weight matrix)
w=zeros(size(q));
for i=1:n
w(1,i)=(1-q(1,i))/(n-sum(q));
end
%计算熵权法后的得分
out=data*w';
%排序
[a,b]=sort(out);
[c,d]=sort(b);
d=m+1-d;
部分结果如下图所示: