本文为北海的数模课程学习笔记,课程出自微信公众号:数学建模BOOM。
求赞!求收藏!求关注!
目录
模型简介
熵的概念
•
信息论中,熵是对
不确定性
的一种度量,可判断一个事件的
随机性
及
无序
程度
•
用熵值判断某个指标的
离散程度
,指标的
离散程度越大,该指标对
综合评
价的影响越大
具体例子
以考试成绩为例。
科目越容易拉开差距,熵越大,权(重)越大。
科目越不容易拉开差距,熵越小,权(重)越小。
如果一门课所有人都是一样的分,熵为1,权为0。
适用赛题
数据全面、缺少文献或主观依据的题目
•
例如
评价河流水质
,已知河流的含氧量、
PH
值、细菌密度、生物密度等数据
•
但
缺乏评价水质的文献资料
,或者文献内的
说法不一
•
即文献很难帮助我们确定影响水质最重要的因素是哪一个
•
也很难告诉我们其余指标的重要程度如何衡量
•
此时即可使用熵权法,
根据数据本身建立评价体系
注意事项
•
熵权法与其他方法(层次分析法、
TOPSIS
法等)最大的区别就是
完全客观
•
追求
“
公平公正
”
的情况,可优先考虑熵权法
•
但有时
“
完全客观
”
也是缺点,
难以将数据之外的因素考虑进去
典型例题与原理讲解
典型例题
数据标准化
在代码中,如果有x=0,把x改为一个很小的数,比如0.00001就好。
标准化不是必须的,如果没有数值越小越好的负向指标,不同指标的数量级也相同,变量中无负值,那就可以不标准化。
指标的熵值和变异程度
![](https://img-blog.csdnimg.cn/63bfd8ce08fb41b891790b9851c8c6a4.png)
权重与评分
代码求解
• 使用熵权法时需要数据全面,有的数据是比赛提供的,有的是需要自己找
•
数据往往以
excel
文件存储,可在
MATLAB
中用
readmatrix
函数调用
•
注意调用的
excel
文件需要与代码文件在同一文件夹下!!!
读取excel文件数据
注意,excel文件要和代码文件放在同一文件夹下,否则需要绝对路径
只读取数值,用range表明取哪些
clc,clear
score=readmatrix('data3-3.xlsx','range','B2:I11');
指标标准化
本题可以不标准化,不过为了演示,还是标准化一下
注意:后续求对数,自变量不能为0,故为0时取个0.001即可
[n,m]=size(score);
score2=zeros(n,m);
for j=1:m
for i=1:n
score2(i,j)=(score(i,j)-min(score(:,j)))/(max(score(:,j))-min(score(:,j)));
if score2(i,j)==0
score2(i,j)=0.0001; % 求对数不能为0,故取个极小的数
end
end
end
求熵和权重和最终评价排名
套公式即可
p=score2./sum(score2);
e=-sum(p.*log(p))/log(n);
g=1-e;
w=g/sum(g) %计算权重
s=w*p'; %计算各个评价对象的综合评价值
[ss,rank]=sort(s,'descend') %对评价值从大到小排序;descend表示降序
求得的rank中,第一个元素是9,意味着第一名是序号9同学;第二个元素是1,意味着第二名是序号1同学……