阿白数模笔记之熵权法(Entropy weight method,EWM)

目录

前言

信息熵 

熵权法

一、概述

二、数据处理

Ⅰ、正向化

①极小转化为极大型

②中间最优型转极大值

③区间最优[a,b]转极大型

Ⅱ、归一化(normalization)

三、求信息熵

四、计算指标权重

实例分析


前言

        对于m个对象,从n个指标进行评价,在进行最后排名时,只看各指标总分并不科学,通过赋予各个指标权重系数,再进行加权求和,得出的结果相对科学。熵权法是实现上面方法的一种途径。       

信息熵 

        信息熵(information entropy)是信息论的基本概念。描述信息源各可能事件发生的不确定性。而不确定性函数 f 是 p 的减函数(概率越大,确定性越高,不确定性越低),所以f(p1,p2)=f(p1)+f(p2)。易知对数函数满足以上条件,因此我们用

H(U)=E[-log_2pi]=-\sum _i^npilog_2pi

来计算信源的平均不确定性(信息熵),一般以2为底,单位为bit,显然,信息熵>=0。

举个例子,抛一枚硬币,正反概率都是1/2,其信息熵是:-0.5*log_20.5-0.5*log_20.5=-log_20.5=1 bit,但抛一枚正反都一样的硬币,其信息熵为-0*log_20-1*log_21=0,其中定义0*log_20=0 bit。熵越大越复杂,可以结合物理里面的熵增定律来记忆(熵的概念本就是从物理引入的)。

熵权法

一、概述

        根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。这是熵权法的理论基础。

二、数据处理

        评价指标是多样的,大致分为四种:极大型,极小型,中间型,区间型,我们统一转化为极大型进行处理。

Ⅰ、正向化

①极小转化为极大型

x'=maxx-x;若对象均为正数,也可使用1/x

②中间最优型转极大值

M=max(|x_i-x_b)|),x_i'=1-|x_i-x_b|/Mx_b是最优的点,x_b'是正向化处理后的数据

③区间最优[a,b]转极大型

M=max\left \{ a-min(x_i),b-min(x_i))\right \}

x_i'=1-(a-x_i)/M,x_i<a

xi'=1,a<=x_i<b

x_i'=1-(x_i-b)/M,x_i>b

%%极小化极大
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));

四、计算指标权重

w_i=(1-E_i)/(k-\sum E_i),之后将指标权重矩阵与原数据相乘即可

实例分析

        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;

部分结果如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿白啥也不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值