1. 核心原理介绍
1.1 熵
【衡量某个指标的混乱程度】
(1)信息论中:熵是不确定性的一种度量,可判断一个事件的随机性及无序程度
(2)熵值可判断某个指标的离散程度,指标的离散(混乱)程度越大,说明该指标对综合评价的主体影响越大
1.2 变异系数
熵与变异系数的关系:
熵值越大,变异系数越小,代表该指标越有序,该指标的信息量越小(越不重要)
2. 实例建模过程
2.1 实例
要求:根据下表给出的10个学生8门课的成绩,给出这10个学生评奖学金的评分排序
2.2 建模过程
(1)数据预处理【标准化】
标准化原因:
- 不同指标数量级可能不同
- 评价体系中,存在正向指标(数值越大越好)and 负向指标(数值越小越好)
- 变量定义:设 为第i个学生的第j门课程的成绩(注意:本例题中分数都是正向指标)
- 正向指标标准化:
- 负向指标标准化:
【标准化后, 】
(2)确定指标熵值与变异系数
- 每个评价对象在各个指标中的比重(等价为出现的概率)
- 计算熵值
- 计算变异系数
(3)确定权重 与 综合评分
- 计算变异系数权重
(计算第j个科目的权重)
指标的变异系数越大,信息量越大,相应的科目成绩的权重也越大
- 计算综合评分
(计算第i个学生的综合得分)
对不同科目加权求和,得到每个人的评价得分,得分越大越好
注意:与都是根据原始数据求得,完全客观
3. Matlab实现
3.1 代码
(1)指标标准化
%初始化一个对应大小的标准化矩阵
x2 = zeros(n,m);
for j=1:1:m
for i = 1:1:n
x2(i,j) = (x(i,j)-min(x(:,j)))/(max(x(:,j))-min(x(:,j)));
if(x2(i,j)==0)
x2(i,j)=0.001;% 求对数不能为0,故取个极小的数
end
end
end
(2)求熵和变异系数
%求每个评价对象在各个指标的比重
p=x2./sum(x2);%sum函数默认是求每一列的
%求熵值
e = -( sum(p .* log(p)) )/log(n);
%求变异系数
g = 1 - e;
(3)计算权重并求解综合评价
%计算权重
w = g ./ sum(g);
%计算每个评价对象的综合评价值
s_ = (p * w')';
%降序排序
[ss,rank] = sort(s_,'descend');%对评价值从大到小排序;descend表示降序
3.2 结果展示
从变量rank中我们可得学生综合评分的排名:
排名 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
学生编号 | 9 | 1 | 3 | 6 | 7 | 5 | 10 | 4 | 8 | 2 |
4. 总结
评价类别有很多方法:熵权法、AHP、TOPSIS......
熵权法与其他最大的区别:熵权法追求“完全公正”即完全客观,是根据数据本身建立的评价体系
缺点:难以将数据之外的因素考虑进去