数模评价决策类—熵权法

目录

文章目录

前言

一、熵权法是什么?

二、基本步骤

计算样本权重及熵权

总结


前言

前面我们学习了层次分析法和Topsis法,这两个方法都是偏主观的方法,这篇我们将运用较为客观的方法——熵权法,做出决策


一、熵权法是什么?

概念:我们用熵值判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大,该指标对综合评价的影响越大

原理:指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低,如果某项指
标的值全部相等,则该指标在综合评价中不起作用

如:假如我们要选出模特

 这里我们发现模特的身高都差不多,那么身高这个指标明显对我们评价的影响要小,而体重的差异很大,其应该对我们的决策比较重要

二、基本步骤

前面对矩阵进行正向化以及标准化处理(这个地方需要注意的是:正向化后的矩阵元素可能为负数)的步骤与Topsis法是相同的,这里不再过多赘述,不记得大家可以再看下:

Topsis中的正向化和标准化处理icon-default.png?t=N7T8http://t.csdnimg.cn/8qwtR

计算样本权重及熵权

步骤

  • 计算第 j 项指标下第 i 个样本所占的比重 Pij=\frac{\widetilde{zij}}{\sum\widetilde{zij} }   (归一化)
  • 对于第j个指标,信息熵的计算公式为:

(易知,当P1j=P2j=…=Pnj=1/n时,ej=1,此时信息熵最大,但其信息效用值最小)

  • 定义信息效用值dj=1-ej,此时效用值越大,权重越大。
  • 将信息效用值进行归一化,得到熵权Wj

%计算熵权
X = zeros(1,m);%初始化保存信息效用值的行向量
for i = 1:m
    C = B(:,i);  %取出第i列的指标
    p = C /sum(C); %矩阵归一化
    %注意,P有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以我们自己定义一个函数
    e =-sum(p.* myself_log(p))/log(n);  %计算信息熵
    X(i) = 1-e;  %计算信息效用值
end
Q = X ./sum(X)  ; %将信息效用值归一化,得到权重
disp('权重Q=');
disp(Q);


这里考虑到p可能为0的情况,但是ln函数的底不能为0,则我们自己定义一个mysel_log函数

%重新定义一个myselflog函数,当输入的p中的元素为0时,返回0
function lnp = myselflog(p)
L =length(p); %计算向量的长度
lnp = zeros(L,1);%先对最后的返回结果初始化
    for i = 1:L
        if p(i)==0  %第i个元素为0
        lnp(i)=0;
        else
        lnp(i) = log(p(i));
        end
    end
end 

总结

以上代码仅供参考,不可用于数模比赛

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自由的风.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值