熵权法模型(评价类问题)

目录

本文章内容参考:

一. 概念

二. 特点

三. 实现步骤

四. 代码实现


本文章内容参考:

熵权法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili

一. 概念

利用信息熵计算各个指标的权重,从而为多指标的评价类问题提供依据。

根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。

指标的变异程度越小,所反映的信息量也越少,所以其对应的权值也应该越低。

指标的变异程度(或称为变异性、波动性):描述了一个指标在不同观测值之间的差异程度或分散程度。简单来说,它反映了数据的分布宽度和离散情况。

也即如果一个指标的波动性越小,说明该指标对最终结果的影响理应越小,也即其对应权值更低。

信息熵公式:

H(X) = -\sum p(x_i) \log_2 p(x_i)

  • H(X) :表示随机变量 X 的熵。熵衡量了随机变量的不确定性或信息量。熵越大,随机变量的不确定性越高。
  • x_i :随机变量 X 的一种取值情况。
  • p(x_i) :随机变量 X 取值为 x_i​ 的概率。每个 x_i​ 都有一个与之对应的概率 p(x_i)
  • log_2 p(x_i) : p(x_i) 的二进制对数。对数的底数为 2,因此它表示的是以比特为单位的信息量。具体来说,log_2 p(x_i) 衡量了事件 x_i​ 发生时的信息量。

         由于概率 p(x_i) 总是介于 0 和 1 之间,log_2 p(x_i) 会是一个负数。负号保证了整个熵的值为正数。

        这个公式通过对所有可能取值的信息量加权求和,衡量了随机变量 X 的不确定性。熵值越大,说明随机变量 X 的不确定性越高。

二. 特点

熵权法是一种客观的赋权方法,它可以靠数据本身得出权重,避免了主观因素的介入。

三. 实现步骤

一开始的两步也即原始矩阵正向化,标准化同Topsis法,看过了可以跳过前两步。

1. 原始矩阵正向化

矩阵正向化的过程就是把后三种指标类型通过数值转换,转化极大型指标的指标特点,也即其值越大越好。

转化方式如下公式:

{x}_i上面带个~的值的是原始矩阵正向化后指标转换后对应的值,极大型指标无需转换。

一个转换过程的例子如下(其中颜值是极大型指标无需转换,脾气是极小型指标,身高是中间型指标,体重是区间型指标):

2. 正向化矩阵标准化

标准化的目的是为了消除不同指标的量纲影响,仅保留指标的基本特征,使得所有特征具有相同的权重。这样在计算距离(如欧氏距离)或相似性时,不会因为某个特征的数值范围过大而主导计算结果。

对其标准化的矩阵记为 R ,则 R 中的每一个元素为:

R_{ij} = \frac{x_{ij}}{\sqrt{\sum_{k=1}^{m} x_{kj}^2}}

 上文提到标准化的目的是为了让所有特征先具有相同的权重。

在Topsis法中我们提到,在实际情况中,不同的指标对结果的影响程度必然是有所差异的,所有要建立更加符合现实情况的模型,我们还需要将标准化后的矩阵再给不同指标加上不同的权重,后面的熵权法步骤就是用来计算不同指标的权重的过程。

下图是正向化矩阵标准化的过程:

3. 计算概率矩阵 P
计算标准化矩阵第 j 项指标下第 i 个样本所占的比重 p_{ij}

p_{ij} = \frac{R_{ij}}{\sum_{i=1}^{m} R_{ij}}

过程如下:

4. 计算熵权

信息熵的计算公式

信息熵 e_{j} 用于衡量第 j 个指标的不确定性。它的计算公式为:

e_j = -\frac{1}{\ln n} \sum_{i=1}^{n} p_{ij} \ln(p_{ij}) \quad (j=1,2,\dots,m)

  •  p_{ij} 表示第 j 个指标在第 i 个样本中的比例(标准化值)。
  •  n 表示样本数量。

因为当 p_{1j} = p_{2j} = \dots = p_{nj} = \frac{1}{n} ​ 时,信息熵 e_{j}​ 达到最大值 e_{j}= 1,此时信息熵最大,但该指标几乎不波动,代表其信息效用值最小。

信息效用值的定义

信息效用值 d_{j} 定义为信息熵的补值,用于衡量该指标的有用信息量。它的计算公式为:

d_j = 1 - e_j

当信息熵 e_{j}​ 越小,信息效用值 d_{j}​ 越大,说明该指标提供的信息越有用,所以其对结果的影响越大。

熵权的归一化

最终,通过对信息效用值 d_{j}​ 进行归一化,得到每个指标的权重 W_{j}​:

W_j = \frac{d_j}{\sum_{j=1}^{m} d_j}

  •  m 是指标的总数量。
  •  W_{j}​ 是第 j 个指标的权重。

四. 代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397130.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nvm 切换、安装 Node.js 版本

nvm下载路径 往下拉找到Assets 下载后,找到nvm-setup.exe双击,一直无脑下一步,即可安装成功。 配置环境变量(我的是window11) 打开任务栏设置–搜环境变量 配置好后,点确定一层一层关闭 windowR 打开控制…

Datawhale X 魔搭 AI夏令营 Task 01

Task 01 1. 注册阿里云 2. 跑通baseline 3. 生成图片并提交 后续思路: 调整prompt;更换微调数据集使用gpt生成故事简介

C++之类与对象(完结撒花篇)

目录 前言 1.再探构造函数 2.类型转换 3.static成员 4. 友元 5.内部类 6.匿名对象 7.对象拷贝时的编译器优化 结束语 前言 在前面的博客中,我们对类的默认成员函数都有了一定了解,同时实现了一个日期类对所学的没内容进行扩展延伸,本…

JavaWeb04-MyBatis与Spring结合

目录 前言 一、MyBatis入门(MyBatis官网) 1.1 创建mybatis项目(使用spring项目整合式方法) 1.2 JDBC 1.3 数据库连接池 1.4 实用工具:Lombok 二、MyBatis基础操作 2.1 准备工作 2.2 导入项目并实现操作 2.3 具…

Linux-Haproxy搭建Web群集

LVS在企业应用中抗负载能力强 不支持正则处理,不能实现动静分离对于大型网格,LVS的实施配置复杂,维护成本较高 Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件 适用于负载大的Web站点运行在硬件上可支持数以万计的…

【C++高阶】:特殊类设计和四种类型转换

✨ 人生如梦,朝露夕花,宛若泡影 🌏 📃个人主页:island1314 🔥个人专栏:C学习 ⛺️ 欢迎关注:👍点赞 👂&am…

Java二十三种设计模式-策略模式(13/23)

策略模式:灵活算法的替换与扩展 引言 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 基础…

C#小结:如何在VS2022中使用菜单栏中的Git管理代码

目录 第一部分:基础操作 第一步,登录官网,设置好邮箱,然后右上角新建仓库 第二步,提交代码到远程仓库中 第三步,查看和比对自己修改的内容 第四步,查看该项目所有提交历史记录 第五步&…

嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)

1、人脸识别 人脸识别是一种技术,通过检测、跟踪和识别人脸上的关键特征,以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法,提取人脸的特征点和特征描…

【ML】Pre-trained Language Models及其各种微调模型的实现细节和特点

Pre-trained Language Models及其各种微调模型的实现细节和特点 1. Pre-trained Language Models2. semi-supervised Learning3. zero-shot4. Parameter-Efficient Fine-Tuning4.1 含义:4.2 实现方式: 5. LoRA5.1 LoRA 的主要特点:5.2 LoRA 的…

Pytorch人体姿态骨架生成图像

ControlNet是一个稳定扩散模型,可以复制构图和人体姿势。ControlNet解决了生成想要的确切姿势困难的问题。 Human Pose使用OpenPose检测关键点,如头部、肩膀、手的位置等。它适用于复制人类姿势,但不适用于其他细节,如服装、发型和…

Linux中apache服务安装与mysql安装

目录 一、apache安装 二、MySQL安装 一、apache安装 准备环境:一台虚拟机、三个安装包(apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz、httpd-2.4.29.tar.bz2) 安装过程: tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf http…

Burp Suite的使用和文件上传漏洞靶场试验

第一步:分析如何利用漏洞,通过对代码的查阅发现,代码的逻辑是先上传后删除,意味着,我可以利用webshell.php文件在上传到删除之间的间隙,执行webshell.php的代码,给上级目录创建一个shell.php木马…

IDEA右键新建时没有Java Class选项

项目场景: IDEA右键新建时没有Java Class选项 问题描述 IDEA右键新建时没有Java Class选项 原因分析: 提示:这里填写问题的分析: 例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Ha…

【扒代码】ope.py

文件目录: 引用方式 if not self.zero_shot: # 非零样本情况下,计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…

Docker in 100 Seconds

Docker a tool that can package software into containers that run reliably in any environment, but what is a container and why do you need one? Let’s imagine you built up an app with cobalt that runs some weird flavor of Linux. You want to share this app…

idea中好用的插件

输入法自动切换插件 自动切换输入法插件:Smart Input。编写代码时自动切换到英文输入法,注释代码自动切换为中文输入法。极大的提升我们的编码效率。 MyBatisX插件 MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。主要用于XML映射配…

吴恩达机器学习COURSE2 WEEK2

COURSE2 WEEK2 模型训练的细节 定义模型,即指定如何在给定输入特征 x x x 以及参数 w w w 和 b b b 的情况下计算输出 指定损失函数 L ( f w ⃗ , b ( x ⃗ ) , y ) L(f_{\vec w, b}(\vec x),y) L(fw ,b​(x ),y) 指定成本函数 J ( w ⃗ , b ) 1 m ∑ i 1 …

Linux系统驱动(十三)Linux内核定时器

文章目录 一、内核定时器原理二、定时器API三、使用定时器让LED灯闪烁四、使用定时器对按键进行消抖 一、内核定时器原理 内核当前时间通过jiffies获取,它是内核时钟节拍数,在linux内核启动的时候,jiffies开始(按照一定频率&…

【数据结构】顺序结构实现:特殊完全二叉树(堆)+堆排序

二叉树 一.二叉树的顺序结构二.堆的概念及结构三.堆的实现1.堆的结构2.堆的初始化、销毁、打印、判空3.堆中的值交换4.堆顶元素5.堆向上调整算法:实现小堆的插入6.堆向下调整算法:实现小堆的删除7.堆的创建1.堆向上调整算法:建堆建堆的时间复…