清风数学建模学习笔记——熵权法(客观赋权法)

article/2025/11/10 13:08:49

熵权法

  熵权法是一种客观赋权方法。(客观 = 数据本身就可以告诉我们权重)
依据的原理:指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低。

  本文借鉴了数学建模清风老师的课件与思路,如果大家发现文章中有不正确的地方,欢迎大家在评论区留言,也可以点击查看右侧链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi


文章目录

  • 熵权法
  • 一、方法介绍
  • 二、熵权法的计算步骤
  • 三、模型扩展 (★)
  • 四、模型总结


一、方法介绍

  熵权法就是根据一项指标的变化程度来分配权重的,举个例子:小张和小王是两个高中生,小张学习好回回期末考满分,小王学习不好考试常常不及格。在一次考试中,小张还是考了满分,而小王也考了满分。那就很不一样了,小王这里包含的信息就非常大,所对应的权重也就高一些。

  上面的小例子告诉我们:越有可能发生的事情,信息量越少。越不可能发生的事情,信息量就越多。其中我们认为 概率 就是衡量事情发生的可能性大小的指标。

  那么把 信息量 用字母 I \bf I I 表示,概率 用 p \bf p p 表示,那么我们可以将它们建立一个函数关系:
在这里插入图片描述
  那么,假设 x 表示事件 X 可能发生的某种情况,p(x)表示这种情况发生的概率情况如上图所示,该图像可以用对数函数进行拟合,那么最终我们可以定义: I ( x ) = − ln ⁡ ( p ( x ) ) I(x) = -\ln(p(x)) I(x)=ln(p(x)),因为 0 ≤ p ( x ) ≤ 1 0 ≤ p(x) ≤ 1 0p(x)1,所以 I ( x ) ≥ 0 I(x) ≥ 0 I(x)0。 接下来引入正题:


信息熵的定义

  假设 x 表示事件 X 可能发生的某种情况,p(x) 表示这种情况发生的概率我们可以定义: I ( x ) = − ln ⁡ ( p ( x ) ) I(x)=-\ln(p(x)) I(x)=ln(p(x)) ,因为 0 ≤ p ( x ) ≤ 1 0≤p(x)≤1 0p(x)1 ,所以 I ( x ) ≥ 0 I(x)≥0 I(x)0 。 如果事件 X 可能发生的情况分别为: x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,,xn那么我们可以定义事件 X X X 的信息熵为:

H ( X ) = ∑ i = 1 n [ p ( x i ) I ( x i ) ] = − ∑ i = 1 n [ p ( x i ) ln ⁡ ( p ( x i ) ) ] 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 ( x 1 ) = p ( x 1 ) = ⋯ = p ( x n ) = 1 / n \ p(x_1)=p(x_1)=\cdots = p(x_n) = {1}/{n}  p(x1)=p(x1)==p(xn)=1/n 时, H ( x ) H(x) H(x) 取最大值,此时 H ( x ) = ln ⁡ ( n ) H(x)=\ln(n) H(x)=ln(n)。 (n表示事件发生情况的总数)


二、熵权法的计算步骤

熵权法的计算步骤大致分为以下三步:

  1. 判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间(后面计算概率时需要保证每一个元素为非负数)。
  2. 计算第 j 项指标下第 i 个样本所占的比重,并将其看作相对熵计算中用到的概率。
  3. 计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。

1. 判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间(后面计算概率时需要保证每一个元素为非负数)。

假设有 n n n个要评价的对象, m m m个评价指标(已经正向化了)构成的正向化矩阵如下:

X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] X= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1m} \\ x_{21}& x_{22} & \cdots &x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{nm} \end{bmatrix} X= x11x21xn1x12x22xn2x1mx2mxnm

设标准化矩阵为 Z Z Z Z Z Z 中元素记为 z i j z_{ij} zij

z i j = x i j ∑ i = 1 n x i j 2 z_{ij}=\frac{x_{ij}}{\sqrt{\displaystyle\sum_{i=1}^{n}{x_{ij}^2}}} zij=i=1nxij2 xij

判断 Z Z Z 矩阵中是否存在着负数,如果存在的话,需要对 X X X 使用另一种标准化方法对矩阵 X X X 进行一次标准化得到 Z Z Z 矩阵,其标准化的公式为:

z i j = x i j − m i n { x 1 j , x 2 j , ⋯ , x n j } m a x { x 1 j , x 2 j , ⋯ , x n j } − m i n { x 1 j , x 2 j , ⋯ , x n j } z_{ij}=\frac{x_{ij} - min\lbrace x_{1j}, x_{2j},\cdots, x_{nj}\rbrace}{max\lbrace x_{1j}, x_{2j},\cdots, x_{nj} \rbrace - min\lbrace x_{1j}, x_{2j},\cdots, x_{nj} \rbrace} zij=max{x1j,x2j,,xnj}min{x1j,x2j,,xnj}xijmin{x1j,x2j,,xnj}

这样可以保证 z i j z_{ij} zij 在 [0,1] 区间,没有负数。


2. 计算第 j 项指标下第 i 个样本所占的比重,并将其看作相对熵计算中用到的概率。

假设有 n n n 个要评价的对象, m m m 个评价指标,且经过了上一步处理得到的非负矩阵为:

Z = [ z 11 z 12 ⋯ z 1 m z 21 z 22 ⋯ z 2 m ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n m ] Z= \begin{bmatrix} z_{11} & z_{12} & \cdots &z_{1m} \\ z_{21}& z_{22} & \cdots &z_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1}& z_{n2} & \cdots &z_{nm} \end{bmatrix} Z= z11z21zn1z12z22zn2z1mz2mznm

计算概率矩阵 P P P,其中 P P P 中每一个元素 p i j p_{ij} pij,的计算公式如下:

p i j = z i j ∑ i = 1 n z i j p_{ij}=\frac{z_{ij}}{\displaystyle\sum_{i=1}^{n}{z_{ij}}} pij=i=1nzijzij

保证每一列的加和为1,即每个指标所对应的概率和为1。


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

信息熵的计算:
对于第 j j j 个指标而言,其信息嫡的计算公式为:

e j = − 1 ln ⁡ n ∑ i = 1 n p i j ln ⁡ ( p i j ) , ( j = 1 , 2 , ⋯ , m ) e_j=-\frac{1}{\ln n}\sum_{i=1}^{n}{p_{ij}}\ln(p_{ij}), \quad(j=1,2,\cdots,m) ej=lnn1i=1npijln(pij),(j=1,2,,m)

注意:这里如果说 p i j p_{ij} pij 为0,那么就需要指定 l n ( 0 ) = 0 ln(0) = 0 ln(0)=0


这里要说明两个问题:
1. 为什么这里要除以 ln ⁡ ( n ) \ln(n) ln(n) 这个常数?
在前面说过 p ( x 1 ) = p ( x 2 ) = . . . = p ( x n ) = 1 / n p(x_1)=p(x_2)=...=p(x_n)=1/n p(x1)=p(x2)=...=p(xn)=1/n 时, H ( x ) H(x) H(x) 取最大值为 ln ⁡ ( n ) \ln(n) ln(n),这里除以 ln ⁡ ( n ) \ln(n) ln(n) 能够使得信息嫡的始终位于 [0,1] 区间上面。

2. ej 越大,即第 j 个指标的信息嫡越大,表明第 j 个指标的信息越多还是越少?
答案是越少。当 p 1 j = p 2 j = ⋯ = p n j p_{1j} = p_{2j} =\cdots=p_{nj} p1j=p2j==pnj 时, e j e_j ej 取到最大值 1 。但是因为 p i j = z i j / ∑ i = 1 n z i j p_{ij} = z_{ij}/\displaystyle\sum_{i=1}^{n}z_{ij} pij=zij/i=1nzij ,所以 z 1 j = z 2 j = ⋯ = z n j z_{1j} = z_{2j} =\cdots= z_{nj} z1j=z2j==znj,即 所有样本的这个指标值都相同。 指标相同意味着这个指标的数据没有变化,也就是 信息少! 因此需要将其倒转,即计算信息效用值。 👇


信息效用值的定义:

d j = 1 − e j d_j=1-e_j dj=1ej

那么信息效用值越大,其对应的信息就越多。

将信息效用值进行归一化,我们就能够得到每个指标的 熵权 :

ω j = d j ∑ j = 1 m d j , ( j = 1 , 2 , 3 , ⋯ , m ) \omega_j=\frac{d_j}{\displaystyle\sum_{j=1}^{m}d_j},\quad(j=1,2,3,\cdots,m) ωj=j=1mdjdj,(j=1,2,3,,m)


三、模型扩展 (★)

  1. 熵权法可对 TOPSIS 法进行修正。
  2. 熵权法背后的原理是利用指标的变异程度进行赋权,存在一定程度的客观性,可利用主观赋权法求得的权重向量进行综合。
  3. 客观赋权法存在很多,求得客观权重的方法也有很多,其中灰色关联分析法得到的关联程度也可当作权重进行应用。
  4. 不同的标准化方法,可能得到的标准化矩阵 Z Z Z 存在差异,因此根据实际情况来使用标准化方法,注意前提都是得到的 Z Z Z 矩阵中没有负数。

四、模型总结

总结一下步骤:

  1. 判断输入的矩阵中 是否存在负数,如果有则要重新标准化到非负区间(后面计算概率时需要保证每一个元素为非负数)。
  2. 计算第 j 项指标下第 i 个样本所占的比重,并将其看作相对熵计算中用到的 概率。
  3. 计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。

http://chatgpt.dhexx.cn/article/G0wlgTrO.shtml

相关文章

熵权法 —— matlab

目录 一、熵权法介绍 二、熵权法赋权步骤 1.指标正向化 mapminmax介绍 2.数据标准化 3.计算信息熵 4.计算权重以及得分 三、实例分析 1.读取数据 2.指标正向化 2.1 越小越优型处理 2.2 某点最优型指标处理 3.数据标准化 4.计算信息熵 5.计算权重 6.计算得分 总…

数学建模——熵权法步骤及程序详解

数学建模——熵权法步骤及程序详解 权重的求解一直都是数学建模的重点关注对象,所以学好建模论文的重要一步就是如何确定权重,今天是来介绍一种客观确定几个指标各自所占的权重的方法——熵权法。之前的数学建模实战里有提到用熵权法确定了每个指标各自…

计算机电路知识,计算机电路基础教程(完整版)

计算机电路基础教程(完整版) 名称:计算机电路基础教程(完整版)分类:电脑基础 点击:加载中主讲:时间:2014-10-13 09:22 计算机电路基础教程(完整版)相关介绍 计算机电路是计算机专业和电子信息类专业的一门重要硬件基础…

大学计算机基础案例教程章测试答案,大学计算机基础案例教程--Win7+Office2010(高等院校公共基础课规划教材)...

导语 内容提要 尹建新编著的这本《大学计算机基础案例教程--Win7+Office2010》是针对普通高等院校非计算机专业的教学要求,依托Windows 7操作系统和Office 2010办公软件平台,结合当今最新计算机技术编写而成的。本书最…

计算机系统新手入门,电脑初学者入门教程

本篇主要从关机、任务管理器、电脑屏幕锁定这三个方面,帮助初次学习电脑的人尽快掌握一些基本操作,快一起来学习吧。 工具/材料 电脑(本篇以Windows7系统为例) 电脑关机 01方法一。首先,点击屏幕左下方的win(当点击时,会提示“开始…

电子计算机入门教程,「冯修远」计算机入门0基础教程:Word文档的基本操作

冯修远:Word文档的基本操作 人生就像一场修行,任重而道远。大家好,我是冯修远,一位专注于IT教育行业及编程技术和网络营销的人士。通过对《「冯修远」计算机入门0基础教程:office的安装》的学习,大家应该都应安装好了word。我在《「冯修远」计算机入门0基础教程:office的…

RecyclerView添加Header的正确方式

看了一下博客目录,已经有好几篇博客是关于RecyclerView的,不过对于这么一款强大的控件,我还是要再写一篇博客来学习一下,这篇博客的主题是《为RecyclerView添加header》,当然在看完这篇博客后,相信添加Foot…

Android-第七节RecyclerView详解

目录 一、RecyclerView概述二、RecyclerView使用步骤三、布局管理器 一、RecyclerView概述 RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字Recyc…

RecyclerView不显示问题

当我们使用RecyclerView控件的时候可能遇到不显示问题,一般分为以下情况, 一、RecyclerView和ScrollView嵌套使用出现RecyclerView不显示的问题, 首先要确保你从服务端拿到的数据不是空的, 1.第一种解决方式: 只需…

RecycleView

一. 在build.gradle中添加依赖 implementation androidx.recyclerview:recyclerview:1.1.0二. activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"…

Android学习之RecyclerView

RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。 开发环境 - IDE: ADT - SDK: Android L 首先在Android SDK Manager上下载Android Support Repository, 它会在sdk/extras/android目录下生成m2…

Android——RecyclerView入门学习之RecyclerView.Adapter

学习资料&#xff1a; 鸿洋大神为RecyclerView打造通用Adapter让RecyclerView更加好用鸿洋大神Android优雅的为RecyclerView添加HeaderView和FooterView 之前使用RecyclerView.Adapter&#xff0c;基本就类似套用公式&#xff0c;死步骤&#xff0c;对Adapter感到既熟悉又陌生…

Android——RecyclerView的使用

RecyclerView 参考&#xff1a;《第一行代码》第二版——郭霖 可以用RecyclerView来显示多行列表。 recycle 循环回收再利用。 通过一个水果列表来学习RecyclerView 准备工作&#xff0c;在app/build.gradle文件中导入依赖 dependencies {implementation androidx.appcompat:a…

RecyclerView(二)—— RecyclerView的使用

RecyclerView ListView由于强大的功能&#xff0c;在过去的Android开发当中可以说是贡献卓越&#xff0c;直到今天仍然还有不计其数的程序在使用ListView。不过ListView并不是完美无缺的&#xff0c;比如如果不使用一些技巧来提升它的运行效率&#xff0c;那么ListView的性能就…

Android RecyclerView

个人回顾&#xff1a; 1.RecyclerView用来代替ListView和GridView 2.RecyclerView可以实现瀑布流布局 3.RecyclerView最出色的是它的缓存机制&#xff08;四级缓存&#xff09;&#xff0c;ListView只有2级缓存 1.RecyclerView RecyclerView是Android 5.0推出的&#xff0c;是…

Android RecyclerView原理

文章目录 从 ListView 到 RecyclerViewRecyclerView 运行机制ListView 缓存机制RecyclerView 缓存机制RecyclerView 核心机制总结 从 ListView 到 RecyclerView RecyclerView 是在 Google I/O 在2014年时推出的控件&#xff0c;在 RecyclerView 还未出现前&#xff0c;列表都是…

AndroidStudio中RecyclerView用法

去年写了几篇关于Android的基础知识点&#xff0c;没想到收到了很多朋友的好评&#xff0c;不过后来太忙了没有继续更新&#xff0c;真的蛮遗憾的。最近又要用到Android啦&#xff0c;超级无敌巨重要的RecyclerView怎么能不讲一讲呢&#xff01;&#xff01; 1.什么是Recycler…

为RecyclerView打造通用Adapter 让RecyclerView更加好用

转载请标明出处&#xff1a; http://blog.csdn.net/lmj623565791/article/details/47251585&#xff1b; 本文出自:【张鸿洋的博客】 一、概述 记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器&#xff0c;如今RecyclerView异军突起&#xff0c;…

RecyclerView的基本用法

RecyclerView 是一个增强版的ListView&#xff0c;不仅可以实现和ListView同样的效果&#xff0c;还优化了ListView中存在的各种不足之处 ResyslerView 能够实现横向滚动&#xff0c;这是ListView所不能实现的 目前官方更加推荐使用RecyclerView. 1.实现垂直方向的滚动 在 …

RecyclerView安卓androidx.widget.RecyclerView

导入RecyclerView implementation com.android.support:recyclerview-v7:28.0.0或者把常用的组件都导入了&#xff0c;包括了RecyclerView implementation com.android.support:design:28.0.01.RecyclerView介绍 RecyclerView它可以说是一个增强版的ListView。ListView由于其…