嗯,这次讲一讲熵权法,一种通过样本数据确定评价指标权重的方法。

熵权法

之前我们提到了TOPSIS方法,用来处理有数据的评价类模型。TOPSIS方法还蛮简单的,大概就三步。

  1. 将原始数据矩阵正向化。
    也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。
  2. 将正向化后的矩阵标准化。
    也就是通过标准化,消除量纲的影响。
  3. 计算得分并排序
    公式就是Si=di−di++di−S_i = \frac {d_i^-}{d_i^+\ +d_i^- }Si​=di+​ +di−​di−​​。

对于上述di−d_i^-di−​和di+d_i^+di+​的计算,我们往往使用的是标准化数据后,待评价方案与理想最优最劣方案的欧氏距离,也就是di+=∑j=1m(zj+−zij)2d_i^+\ =\ \sqrt {\sum_{j=1}^m (z_j^+\ - z_{ij})^2 }di+​ = ∑j=1m​(zj+​ −zij​)2​,di−=∑j=1m(zj−−zij)2d_i^-\ =\ \sqrt {\sum_{j=1}^m (z_j^-\ - z_{ij})^2 }di−​ = ∑j=1m​(zj−​ −zij​)2​。这样的计算方式其实隐藏了一个前提,就是我们默认所有指标对最终打分的重要程度是相同的,也就是他们的权重相同。

但是在实际的问题中,不同的指标往往具有不同的权重。即使题目本身可能没有直接指明这方面的要求,但是仅仅根据常识,我们也晓得评价指标的重要程度许多情况下都是不完全相同的。因此在TOPSIS的拓展方面,我们提出了带有权重的欧氏距离求法:

赋予评价指标不同的权重,更符合实际建模情况,也更具有解释性。确定权重的方法我们也提到过多次了,上网查找别的研究报告,发问卷做调查,找专家赋权等等。我们了解的比较深入又显得有逼格的确定权重的方法,就是层次分析法了。但层次分析法的缺点也很明显,即主观性太强,判断矩阵基本上是由个人进行填写,往往最适用于没有数据的情况。

当我们具有数据时,能否直接从数据入手,确定权重呢?

例如上面的题目,常识很难帮助我们确定影响水质最重要的因素是哪一个,也很难告诉我们其余指标的重要程度如何衡量。倘若没有查到相关资料,那我们真的只能完全主观赋权了。这里也只有四个指标,万一来了十个二十个,单是主观赋权就比较麻烦了……

说了这么多,就可以引出一种完全由数据出发,且具有一定逼格的确定权重的方法啦,也就是熵权法。其实听了上面这句话,就应该意识到熵权法的不足之处:只从数据出发,不考虑问题的实际背景,确定权重时就可能出现与常识相悖的情况。以至于评分的时候,也会出现问题。当然啦,我们完全可以灵活一点。熵权法还是有它的优势的,而且逼格比较高……当然我也不晓得评委老师们喜不喜欢这个方法,这里只是介绍,是否采用全看个人啦~

熵——一个系统内在的混乱程度。听起来就很厉害是不是?还有一个著名的“熵增定律”,相信大家或多或少都有所耳闻。虽然是个热力学定律,但其实包含了某种哲学道理:一切事物都是从有序趋向无序。那为什么这个确定权重的方法叫熵权法呢?毕竟数据都是完全给定的了,不会再有所谓向无序的转变了。

具体的我也不晓得,简单讲下我的看法。现代科学除了用熵,还用“信息”来表达系统的有序程度。如果一个系统包含某种确定的结构,就具有着一定的信息,这种信息称之为“结构信息”。结构信息越大,系统就越有序。这么说可能比较玄学,举个简单的例子。

你看海边的沙子,如果仅是随着自然状态自由分布,基本没有什么信息可言,系统完全是混乱而无序的。

如果堆出了一个沙堡,事情就不一样了。沙子有了一定的结构,这部分沙子组成的系统相对变得有序,我们也可以从中看到一定的信息。这样的信息越多,沙堡也就越发精确,系统也就更加有序。应该可以理解的吧~

当然啦,不理解也没关系,我就随便说说。熵权法的原理是:指标的变异程度越小,所反映的现有信息量也越少,其对应的权值也越低。也就是说,熵权法是使用指标内部所包含的信息量,来确定该指标在所有指标之中的地位。由于熵衡量着系统的混乱程度,也可以拿来衡量信息的多少,方法被命名为熵权法倒也可以理解。(不过都是我猜的……)

ok,那我们如何去度量信息量的大小呢?我们可以用事件发生的概率去度量信息量。举个例子,如果小明同学的成绩一直是全校第一,小张同学的成绩一直是全校倒数第一,它们两个同时考取了清华大学。你觉得是“小明考上清华”这一事件的信息量比较大,还是“小张考上清华”这一事件的信息量比较大。很明显,“小张考上清华”这一事件中可能包含着更多的信息量。因为小明一直是全校第一,考上清华应该是一件自然而然的事情,大家都这么觉得。而小张一直是倒数第一,突然考上了清华,一件本来不可能发生的事情发生了,这里面就蕴含着许多的信息。

不过这里有个小问题,上述例子所说的信息,和熵权法原理中提到的现有信息,是不是同一类型的信息呢?

不管怎样,我们可以得出一个简单的结论,越有可能发生的事情,信息量越小,越不可能发生的事情,信息量越多。而我们使用概率衡量事件发生的可能性,因此也可以使用概率,衡量事件包含的信息量的大小。

如果把信息量用字母III表示,概率用ppp表示,那我们可以画出一个大致的函数关系图。

可以发现,信息量随着概率的增大而减小,且概率处于0-1之间,而信息量处在0-正无穷之间。于是,我们可以用对数函数关系来表达概率与信息量的关系。

假设xxx是事件XXX可能发生的某种情况,p(x)p(x)p(x)表示这种情况发生的概率,我们定义I(x)=−ln(p(x))I(x)=-ln(p(x))I(x)=−ln(p(x)),用来衡量xxx所包含的信息量。对数函数的定义域是(0,+∞)(0,+∞)(0,+∞),而概率的范围是[0,1][0,1][0,1],但是我们一般不考虑概率为0的事件。因此使用对数函数并无定义域方面的不妥。

如果事件XXX可能发生的情况有x1,x2,...,xnx_1,x_2,...,x_nx1​,x2​,...,xn​,那我们可以定义事件XXX的信息熵为H(x)=∑i=1n[p(xi)I(xi)]=−∑i=1n[p(xi)ln(p(xi))]H(x)=\sum_{i=1}^n[p(x_i)I(x_i)]=-\sum_{i=1}^n[p(x_i)ln(p(x_i))]H(x)=∑i=1n​[p(xi​)I(xi​)]=−∑i=1n​[p(xi​)ln(p(xi​))]。我们可以看出,信息熵就是对信息量的期望值。当p(x1)=p(x2)=...=p(xn)=1np(x_1)=p(x_2)=...=p(x_n)=\frac 1np(x1​)=p(x2​)=...=p(xn​)=n1​时,H(x)H(x)H(x)取最大值为ln(n)ln(n)ln(n)。

那信息熵越大,现有信息量到底是越大还是越小呢?上面我们说,信息熵是对信息的期望值,那应该是信息熵越大,现有信息量越大吧。其实不然,因为这里的信息的期望值,应该是对未来潜在信息的一种期望。我们说小概率事件包含的信息量多,是因为一件几乎不可能发生的事件发生了,背后很大程度上有着许许多多未被挖掘的信息,最终导致了小概率事件的发生。我们说一件大概率事件包含的信息量少,其实也是指这件大概率事件发生后,能够被挖掘出的信息量比较少。

上面未被挖掘的信息量,全部都是事件未发生前的潜在信息量,并不是现有信息量。当我们已经掌握了足够多的信息,某些事件的发生就是一件自然而然的事情,我们便可以认为这类事件属于大概率事件。当我们掌握的现有信息较少时,我们很难认为某些事自然状态下会发生,就觉得这类事件是小概率事件。觉得“年级第一考上清华”很正常,因为我们对他的考试实力已经有了足够的了解;而“倒数第一考上清华”,很可能是因为我们没有了解到一个重要信息,例如“倒数第一是故意考倒数第一的”……

嗯,以上是我的想法,也就是对应着“信息熵越大,现有信息量越小”的结论。上面的例子可能还有一些逻辑问题,仅供参考。但是要说明的意思应该是比较明了的。随机变量的信息熵越大,目前已有的信息量就越小。而我们的熵权法,其实是基于已有的信息量确定权重的。

ok,铺垫完毕,接下来就是熵权法的计算步骤了。

1.对于输入矩阵,先进行正向化和标准化(忘记了就去看评价类模型第二篇文章)。

如果正向化之后所有数据均为正数,对于矩阵
我们可以使用zij=xij∑i=1nxij2z_{ij}=\frac {x_{ij}}{\sqrt {\sum_{i=1}^n x_{ij}^2}}zij​=∑i=1n​xij2​​xij​​对每一列指标进行标准化。

如果正向化之后的矩阵存在负数,我们可以使用zij=xij−min{x1j,...,xnj}max{x1j,...,xnj}−min{x1j,...,xnj}z_{ij}=\frac {x_{ij}-min\{x_{1j},...,x_{nj}\}}{max\{x_{1j},...,x_{nj}\}-min\{x_{1j},...,x_{nj}\}}zij​=max{x1j​,...,xnj​}−min{x1j​,...,xnj​}xij​−min{x1j​,...,xnj​}​进行标准化。总而言之,需保证标准化后的数据皆为正数。

2.计算第jjj项指标下第iii个样本所占的比重,并将其看作信息熵计算中用到的概率。

ZZZ是上述经过标准化的非负矩阵,我们由ZZZ计算概率矩阵PPP。PPP中每一个元素pij=zij∑i=1nzijp_{ij}=\frac {z_{ij}}{\sum_{i=1}^n z_{ij}}pij​=∑i=1n​zij​zij​​。嗯,不要问我为什么要用这种方法确定概率,我也不是很晓得,感兴趣自行查阅吧。查到了可以给我留言告诉我吗?

3.计算每个指标的信息熵,并计算信息效用值,归一化之后得到每个指标的熵权。

对于第jjj个指标而言,其信息熵计算公式为ej=−1ln(n)∑i=1n[pij∗ln(pij)],j={1,2,3...,m}e_j=-\frac {1}{ln(n)}\sum_{i=1}^n [p_{ij}*ln(p_{ij})],j=\{1,2,3...,m\}ej​=−ln(n)1​∑i=1n​[pij​∗ln(pij​)],j={1,2,3...,m}。上文中我们提到过,H(x)=−∑i=1n[p(xi)ln(p(xi))]H(x)=-\sum_{i=1}^n[p(x_i)ln(p(x_i))]H(x)=−∑i=1n​[p(xi​)ln(p(xi​))]的最大值为ln(n)ln(n)ln(n),所以我们计算eje_jej​时,除以一个常数ln(n)ln(n)ln(n),可以使eje_jej​的范围落在[0,1][0,1][0,1]之间。

上文中也提到了,信息熵越大,已有的信息量就越小。如果ej=1e_j=1ej​=1,信息熵达到最大,此时p1j,p2j,...,pnjp_{1j},p_{2j},...,p_{nj}p1j​,p2j​,...,pnj​必须全部相同,也就是z1j,z2j,...,znjz_{1j},z_{2j},...,z_{nj}z1j​,z2j​,...,znj​全部相同。如果某个指标对于所有的方案都具有相同的值,那这个指标在评价时几乎不起作用。例如所有的评价对象都是男生,那评价时就不需要考虑性别因素。这也再次告诉我们,在熵权法的框架中,信息熵越大,已有信息量越小。

因此我们定义信息效用值dj=1−ejd_j=1-e_jdj​=1−ej​,则信息效用值越大,已有信息量越多。之后我们将信息效用值进行归一化处理,就可以得到每个指标的熵权Wj=dj∑j=1mdj,j={1,2,...,m}W_j=\frac {d_j}{\sum_{j=1}^m d_j},j=\{1,2,...,m\}Wj​=∑j=1m​dj​dj​​,j={1,2,...,m}。

以上就是用熵权法计算指标权重的全过程了,其实也不是很难。本质上就是“给包含现有信息量更多的指标以更高的权重”。之后就可以按照这个权重,计算TOPSIS中的优劣距离,甚至可以直接加权打分。

熵权法局限性

事实上,所谓的已有信息量的大小,其实也可以看成指标数据标准差的大小。所有研究对象在某一指标的数据完全一样时,标准差为0,信息熵最大。如果我们进行蒙特卡洛模拟,可以发现信息熵与标准差基本成负相关关系,也就是说标准差与已有信息量基本成正相关关系。标准差越大,数据波动越大,已有信息量也就越大,我们给它的权重也越大。某种意义上就这么回事。

清风老师提出了一个有意思的问题。在评选三好学生时,如果X是严重违纪上档案的次数,Y是被口头批评的次数,哪一个指标对三好学生评选的影响更大?很明显,实际生活中,一旦严重违纪记入档案,基本就不可能再成为三好学生。但绝大多数人这一指标的值都是0,只有很少数人是1或者2。它的波动很小,按熵权法赋权时的权重就很小。但如果真这么做了,可能某个人即使严重违纪了,依然有可能被评为三好学生。这是与实际不符合的。

这个例子告诉我们,熵权法的局限性在于,它仅凭数据的波动程度,或者说所谓的信息量来获得权重,不考虑数据的实际意义,很可能得出违背常识的结果。

清风老师之前觉得,这个方法是忽悠新手的,因为只要方差大,就认为权重大,显得很没有道理。甚至还不如我们用层次分析法给出一个主观的赋权,或者在网上查资料等等。除此之外,第一步中标准化的方法不一样,最后的结果也可能不太一样,这也是一个问题。

但其实有些问题也是可以解决的。例如上面的严重违纪的问题,完全可以把严重违纪的样本剔除掉,对剩余的样本进行排序。以及,对于现实生活中影响非常大的指标,也可以进行提前的赋权,剩下的指标再用熵权法去分余下的权重。

如果对评价指标具有现实性的了解,那完全可以看看熵权法的结果是否符合实际,再决定是否采用。如果对评价指标了解较少,层次分析法显得很随意,网上也搜不到相应的结论,那使用熵权法也是一件无可厚非的事情。

至于用指标内数据的波动程度来衡量指标的重要程度,到底有没有道理。这个也是见仁见智的事情。我个人觉得还是有一定的道理的。在标准化消除量纲的影响之后,某个指标包含的数据波动程度越大,一定意义上表明该指标对最后的结果,会有一个比较大的影响。因为它取值范围广嘛。TOPSIS中的理想最优解和理想最劣解,就是分别取各指标的最优值和最劣值。而波动程度大的指标在计算某个方案和理想方案的距离时,很显然会有较大影响,给它更高的权重,也不是完全没有道理。当然啦,这种方法还是需要排除特殊情况的,一般情况下我觉得问题不大。

(上面就是随便扯扯,别太当真。)

我觉得,只要熵权法最后的结果,没有违反普遍的常识,用一用也没有太大的问题。清风老师也说了,如果只用来比赛,熵权法就尽管用,这个方法总比自己随便定义的要好点儿吧(一般情况下)。

嗯,以上就是我想说的关于熵权法的全部东西啦。如果还想进一步了解,请自行查阅啦。

拜拜~

记得关注“我是陈小白”呀~

数学建模笔记——评价类模型之熵权法相关推荐

  1. 数学建模笔记——评价类模型之灰色关联分析

    这一篇就简单介绍一下灰色关联分析吧.灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性.第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名. 不过这里我只能简单介 ...

  2. 评价类模型(层次分析法与模糊评价模型)

    一.评价类模型 综合评价的基本理论和数据预处理: 评价对象 评价指标 权重系数 综合评价模型 评价者 二.AHP法-层次分析法 通过打分解决评价类问题,两两比较,推算权重. %function RI= ...

  3. 一文速学数模-评价模型(二)熵权法实战确定评价指标权重

    目录 前言 一.熵权法介绍 二.使用步骤 1.数据预处理 2.计算指标信息熵

  4. [数据分析][评价方法]打分式评价-信息熵理论与熵权法

    前言: 信息熵是一种用于衡量系统内部信息量的度量.在信息论中,信息是系统有序程度的一种度量. 信息是确定性的增加,不确定性的减少(香农定理).而信息熵是系统无序程度的一种度量,是系统不确定性的量度.两 ...

  5. 数学建模:评价性模型学习——灰色关联分析法(GRA模型)

    目录 前言 一.灰色关联分析 1.什么是灰色关联分析? 2.流程介绍 二.综合评价 1.数据无量纲化处理 2.确定参考序列 3.确定权重 4.计算灰色关联系数 5.计算灰色加权关联度 6.代码 总结 ...

  6. 【清风数学建模笔记】第一讲:层次分析法

    层次分析法 (The analytic hierarchy process,简称AHP) 建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好.哪种运动员或者员工表现的更优秀) ...

  7. 【1.2】 评价类模型之层次分析法中判断矩阵的填写方法、一致性检验的步骤、以及根据判断矩阵计算权重的方法

    目录: 准则层判断矩阵怎么填写 方案层判断矩阵怎么填写 关于判断矩阵和一致矩阵的知识点补充 一致性检验的步骤 怎样通过判断矩阵去计算权重(三种方法),及相应的代码示例 准则层判断矩阵的填写: 填写准则 ...

  8. 综合评价体系之熵权法

    (一)建模目的: 如何客观又合理地评价一部电影的受欢迎度呢?生活中有很多这样的场景,仅有个别人的看法,显然不能如实地反映这部电影的受欢迎度,通过抽样的方法,选取合理的指标建立评价模型,最终取得一个得分 ...

  9. 数学建模笔记 Topsis和熵权法

    Topsis法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法. ​ ...

最新文章

  1. 2019牛客全国多校训练三 题解
  2. php 5.3 construct_PHP 5.3新增魔术方法__invoke概述
  3. java得出两个日期之间所有日期
  4. 227. 基本计算器 II
  5. 最小硬币问题_进行更改的最小硬币数量
  6. 手挽手带你学VUE:四档 Vue-cli3 Vuex Vue-router
  7. 软件测试-xx银行面试经验过程详细版
  8. 第1142期AI100_机器学习日报(2017-11-03)
  9. mac支持fat32格式吗 mac支持什么格式的移动硬盘
  10. win8右下角网络图标不见了_win8系统右下角的音量图标不见了的设置办法
  11. java支付宝提现_关于Java调用微信、支付宝的支付、提现
  12. 中国风?古典系?AI中文绘图创作尝鲜!⛵
  13. 用node写sdk脚本
  14. erlang 开源项目之 Bigwig
  15. 【C语言】[其他] :code, data, idata, xdata, bdata, edata, hdata等,代表的意思
  16. 电商数据仓库项目总结
  17. 教育网关于计算机打印步骤,自己的电脑怎么打印准考证_中国教育考试网报名教师资格证...
  18. 谁在“接盘”造车新势力?
  19. 深入研究HashMap
  20. 基于JAVA体育城场地预定系统后台计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. pagerank算法详解
  2. RTOS 任务间互斥的问题
  3. 我在华为写了13年的代码
  4. 骨龄预测代码学习(三)
  5. 王者荣耀背后的实时大数据平台用了什么黑科技?
  6. CortexM3与CortexM0的bus matrix
  7. 愤怒的老王,每天都想暗杀一个同事...
  8. 逆向工程--苹果移动端app逆向分析技术(一)
  9. 九零后看什么网络电视
  10. html转盘游戏,使用Javascript和CSS3实现一个转盘小游戏(实战篇)