当前位置:   article > 正文

数学建模|熵权法|简要原理+Matlab代码实现_matlab 熵权法

matlab 熵权法

1. 核心原理介绍

1.1 熵  \(\mathop e\nolimits_j \\)

【衡量某个指标的混乱程度】

(1)信息论中:熵是不确定性的一种度量,可判断一个事件的随机性无序程度

(2)熵值可判断某个指标的离散程度,指标的离散(混乱)程度越大,说明该指标对综合评价的主体影响越大

1.2 变异系数  \(\mathop g\nolimits_j \\)

\(\large \mathop g\nolimits_j = 1 - \mathop e\nolimits_j \\)

熵与变异系数的关系:

熵值越大,变异系数越小,代表该指标越有序,该指标的信息量越小(越不重要)  


2. 实例建模过程

2.1 实例 

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

2.2 建模过程 

(1)数据预处理【标准化】

标准化原因:

  • 不同指标数量级可能不同
  • 评价体系中,存在正向指标(数值越大越好)and 负向指标(数值越小越好)
  • 变量定义设 \(\large \mathop x\nolimits_{​{\rm{i}}j} \\) 为第i个学生的第j门课程的成绩(注意:本例题中分数都是正向指标)
  • 正向指标标准化:

\(\large \mathop a\nolimits_{ij} = \frac{​{\mathop x\nolimits_{ij} - \min \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\}}}{​{\max \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\} - \min \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\}}}\\)

  • 负向指标标准化:

\(\large \mathop a\nolimits_{ij} = \frac{​{\max \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\} - \mathop x\nolimits_{ij} }}{​{\max \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\} - \min \left\{ {\mathop x\nolimits_{1j} , \cdots ,\mathop x\nolimits_{nj} } \right\}}}\\)

【标准化后,\(\large \mathop a\nolimits_{ij} \in [0,1]\\) 】 

(2)确定指标熵值与变异系数

  • 每个评价对象在各个指标中的比重(等价为出现的概率)\(\large {\mathop p\nolimits_{ij} }\\)

\(\large \mathop p\nolimits_{ij} = \frac{​{\mathop a\nolimits_{ij} }}{​{\sum\limits_{i = 1}^n {\mathop a\nolimits_{ij} } }}\\)

  • 计算熵值 \(\large \mathop e\nolimits_j \\)

\(\large \mathop e\nolimits_j = - \frac{​{\sum\limits_{i = 1}^n {\mathop p\nolimits_{ij} } \ln \left( {\mathop p\nolimits_{ij} } \right)}}{​{\ln (n)}}\\)

  •  计算变异系数 \(\large \mathop g\nolimits_j \\)

\(\large \mathop g\nolimits_j = 1 - \mathop e\nolimits_j \\)

(3)确定权重 与 综合评分

  • 计算变异系数权重 \(\large \mathop w\nolimits_j \\)

(计算第j个科目的权重)

指标的变异系数越大,信息量越大,相应的科目成绩的权重也越大

\(\large \mathop w\nolimits_j = \frac{​{\mathop g\nolimits_j }}{​{\sum\limits_{i = 1}^m {\mathop g\nolimits_j } }}\\)

  • 计算综合评分 \(\large \mathop s\nolimits_i \\)

(计算第i个学生的综合得分)

对不同科目加权求和,得到每个人的评价得分,得分越大越好

注意\(\large {\mathop p\nolimits_{ij} }\\)\(\large \mathop w\nolimits_j \\)都是根据原始数据求得,完全客观

\(\large \mathop s\nolimits_i = \sum\limits_j^m {\mathop w\nolimits_j \mathop p\nolimits_{ij} } \\)


3. Matlab实现 

3.1 代码

(1)指标标准化

  1. %初始化一个对应大小的标准化矩阵
  2. x2 = zeros(n,m);
  3. for j=1:1:m
  4. for i = 1:1:n
  5. x2(i,j) = (x(i,j)-min(x(:,j)))/(max(x(:,j))-min(x(:,j)));
  6. if(x2(i,j)==0)
  7. x2(i,j)=0.001;% 求对数不能为0,故取个极小的数
  8. end
  9. end
  10. end

 (2)求熵和变异系数

  1. %求每个评价对象在各个指标的比重
  2. p=x2./sum(x2);%sum函数默认是求每一列的
  3. %求熵值
  4. e = -( sum(p .* log(p)) )/log(n);
  5. %求变异系数
  6. g = 1 - e;

(3)计算权重并求解综合评价 

  1. %计算权重
  2. w = g ./ sum(g);
  3. %计算每个评价对象的综合评价值
  4. s_ = (p * w')';
  5. %降序排序
  6. [ss,rank] = sort(s_,'descend');%对评价值从大到小排序;descend表示降序

3.2 结果展示

从变量rank中我们可得学生综合评分的排名:

排名12345678910
学生编号91367510482

4. 总结 

评价类别有很多方法:熵权法、AHP、TOPSIS......

熵权法与其他最大的区别:熵权法追求“完全公正”即完全客观,是根据数据本身建立的评价体系

缺点:难以将数据之外的因素考虑进去

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/70083
推荐阅读
相关标签
  

闽ICP备14008679号