注明:本文根据数学建模BOOM网课简单整理,自用

❑ 模型简介

❑ 从考试成绩说起

• 张三、李四和王五的考试成绩如下表所示

• 观察这份成绩表,有哪门科目最容易拉开差距?哪门课又最不容易拉开差距?

❑ 熵的概念

• 信息论中,熵是对不确定性的一种度量,可判断一个事件的随机性及无序程度

• 用熵值判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大

❑ 直观看熵:考试成绩

• 某一门课“不易拉开差距”,意味着这一门课对最终总成绩排名影响很小

• 所有人的化学成绩相同,意味着“整齐划一”,相应混乱程度就低

❑ 熵的现实意义

• 本模型中,混乱程度低对应着熵值接近1,评价总成绩时可给该指标赋予低权重

• 即使这门课的成绩不算进总成绩(权重为0),总成绩的排名也是不会变的

• 相对的,数学的分数差距较大,如果去掉这门课,总成绩排名可能出现变化

❑ 适用赛题

❑ 数据全面、缺少文献或主观依据的题目

• 例如评价河流水质,已知河流的含氧量、PH值、细菌密度、生物密度等数据

• 但缺乏评价水质的文献资料,或者文献内的说法不一

• 即文献很难帮助我们确定影响水质最重要的因素是哪一个

• 也很难告诉我们其余指标的重要程度如何衡量

• 此时即可使用熵权法,根据数据本身建立评价体系

❑ 注意事项

• 熵权法与其他方法(层次分析法、TOPSIS法等)最大的区别就是完全客观

• 追求“公平公正”的情况,可优先考虑熵权法

• 但有时“完全客观”也是缺点,难以将数据之外的因素考虑进去

❑ 典型例题与原理讲解

❑典型例题

❑ 根据下表给出的10个学生8门课的成绩,给出这10个学生评奖学金的评分排序

❑数据标准化

❑ 标准化的原因

• 评价体系中,存在数值越大越好的正向指标,和数值越小越好的负向指标

• 不同指标数量级也可能不同;且求熵的公式中用到对数函数,变量不允许有负值

❑ 变量定义

• 设𝑥𝑖𝑗为第𝑖个学生的第𝑗门课程的成绩;本题中所有指标(各科成绩)都是正向指标

❑ 正向指标标准化

❑ 负向指标标准化

❑ 标准化之后,𝑎𝑖𝑗所有值在[0,1]区间内,且都是数值越大、现实意义越好

❑ 指标的熵值和变异程度

❑ 每个评价对象在各个指标中的比重

• 可理解为统计意义上某种情况出现的概率

❑ 熵值

• 对于第𝑗个指标,其熵值𝑒𝑗为:

❑ 变异系数

• 第𝑗个指标的变异系数: 𝑔𝑗 = 1 − 𝑒𝑗

• 显然熵值越大、变异系数越小,代表该指标越有序,该指标的信息量也就越小

❑ 极端例子

• 假设10个学生每个人的语文成绩都是100

• 如果不经过标准化,直接根据前文公式,计算

 

• 第1个指标 语文成绩 的熵值:

• 该指标的变异系数:

❑ 意义分析

• 该指标的变异系数为0,代表所有数据都一样,其信息量为0

• 那么该指标毫无用途,在评价体系中去掉该指标,对评价结果不会有影响

• 因此,数据差异越小、熵值越大、变异系数越小、信息量越小

• 极端情况就是数据全相等、无差异,最终求得的变异系数为0

❑权重与评分

❑ 变异系数求权重

• 计算第𝑗个指标的权重:

 

• 指标的变异系数越大、信息量越大,相应指标的权重也越大

❑ 综合评分

• 计算第𝑖个评价对象的综合评价值

• 该公式对不同科目加权求和,得到每个人的平均值,评价值越大越好

• 𝑝𝑖𝑗和𝑤𝑗都是原始数据(成绩)求得的,完全客观,不掺杂主观成分

❑ 代码求解

❑ 调用数据和公式细节

• 使用熵权法时需要数据全面,有的数据是比赛提供的,有的是需要自己找

• 数据往往以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同学……

 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐