一文速学-熵权法实战确定评价指标权重

简介: 一文速学-熵权法实战确定评价指标权重

前言


博主参与八次数学建模大赛,其实数学建模和大数据分析有很多相似之处,可以说差不多是共通的。经历了这么多次比赛个人总结一些建模必备的数据分析方法是必须要完全掌握。本篇博客的愿景是希望我或者读者通过阅读这篇博客能够学会熵权法方法并能实际运用,而且能够记录到你的思想之中。当然个人不是数学专业对一些专业性的知识可能不是很了解,希望读者看完能够提出错误或者看法,博主会长期维护博客做及时更新。纯分享,希望大家喜欢。


一、熵权法介绍



在确定各项评价指标权重的算法中,熵权法在很多评价法作为计算指标权重的一只核心基础算法,如秩和比综合评价法RSR或是优劣解距离法TOPSIS。易于理解的话来讲,熵权法就是看该指标数据是否相对集中或是相对离散,要是基本上都差不多的数据,那么这些数据熵就很小,比较集中。说明在这个指标上面体现不出样本的差异性,导致这个指标并不是那么重要。所以该指标权重就小,相反数据差距很大,权重就大。


熵值法根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。


二、使用步骤


1.数据预处理


拿到第一手数据后肯定不能直接使用的,需要进行数据预处理才能更好建模。

想对数据预处理方法了解更清楚的可以去看这篇:数据预处理归一化详细解释

这里我们使用数据处理方法之一的min-max标准化:

gif.gif


对于指标来说,一般分有正向指标和负向指标之分:

正向指标:指标值越大评价越好的指标,如脱单率,脱贫率。

ce5b47c9ea6e45d4a032f0ad99bde6b1.png


负向指标:指标值越大评价越差的指标,如死亡率,失业率。


16498b71981e4d51b1680b9a9006e4ab.png


2.计算指标信息熵


(1)计算第j项指标下第i个样本值占比重:


1db0d179a90c46b1a02ae952640f0a3a.png


(2) 计算各指标的信息熵:


41be58b8c0374d85915dfe47179e6af2.png

第j项指标的数据差异越大,熵值越小;反之,熵值越大。

(3)计算信息效用值d


ffb7f11438704901888b3b75056e63bd.png


(4)计算j指标权重

1d229b1318ee4db4ac86eb9aff039f46.png

3.相关代码

import numpy as np
import pandas as pd
data = pd.read_csv(r"C:\Users\指标.csv",sep=',')
data.info()
data
#标准化数据
data_test1=data.iloc[:,1:5] 
data_test1
data_test2 = (data_test1 - data_test1.min())/(data_test1.max() -data_test1.min())
data_test2
m,n=data_test2.shape
#将dataframe格式转化为matrix格式
data_test3=data_test2.values
data_test3
k=1/np.log(m)
yij=data.sum(axis=0)
pij=data/yij
#第二步,计算pij
test=pij*np.log(pij)
test=np.nan_to_num(test)
#计算每种指标的信息熵
ej=-k*(test.sum(axis=0))
#计算每种指标的权重
wi=(1-ej)/np.sum(1-ej)


三、实例运用


这里我们选择27个公司的数据开发投资数据:

49ac1f72c9704b329e73124fac4677a6.png

04af70ffeab046ea953ae86a55ef18d5.png

熵权法实战代码,根据港口研发投入数据进行熵值法确定权重。


四、总结


优点


  • 能深刻反映出指标的区分能力,进而确定权重
  • 是一种客观赋权法,相对主管赋权具有较高的可信度和精确度
  • 算法简单


缺点


  • 不够智能,没有考虑指标与指标之间的影响,如:相关性、层级关系等
  • 若无业务经验指导,权重可能失真
  • 对样本的依赖性较大,随着建模样本不断变化,权重会发生一定波动


适用范围


当业务经验不会使得权重发生失真,则比较适用于熵权法;反之,若经常发生权重失真的情况,则需要结合专家打分或评判才能较好的发挥熵权法的优势。同时,确定权重前需要确定指标对目标得分的影响方向,对非线性的指标要进行预处理或者剔除。

目录
相关文章
|
11月前
|
编解码 监控 测试技术
如何优化OBS的推流设置以提高直播质量
【10月更文挑战第7天】如何优化OBS的推流设置以提高直播质量
|
算法 定位技术
基于MATLAB的GPS卫星绕地运行轨迹动态模拟仿真
基于MATLAB的GPS卫星绕地运行轨迹动态模拟仿真
|
SQL 存储 关系型数据库
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
178 3
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
机器学习/深度学习 算法 C语言
5.2.1 Backbone(特征提取) 5.2.2 Neck(多尺度检测)
这篇文章介绍了YOLOv3目标检测模型中的Backbone(特征提取)部分,详细阐述了使用Darknet53作为骨干网络来提取图像特征的方法,并通过代码示例展示了如何实现Darknet53网络结构以及如何查看不同层级输出特征图的形状,同时还讨论了Neck(多尺度检测)的概念,解释了如何通过特征图的尺寸放大和融合来实现对不同尺寸目标的检测。
基于simulink的模糊PID控制器建模与仿真,并对比PID控制器
在MATLAB 2022a的Simulink中,构建了模糊PID和标准PID控制器模型,对比两者控制输出。模糊控制器采用模糊逻辑处理误差和误差变化率,通过模糊化、推理和去模糊化调整PID参数。模糊PID能更好地应对非线性和不确定性,而标准PID虽然简单易实现,但对复杂系统控制可能不足。通过仿真分析,可选择适合的控制器类型。
|
存储 PyTorch TensorFlow
Transformers 4.37 中文文档(二十)(1)
Transformers 4.37 中文文档(二十)
180 2
|
人工智能 Java
通过okhttp调用SSE流式接口,并将消息返回给客户端
通过okhttp调用SSE流式接口,并将消息返回给客户端
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
594 0
|
机器学习/深度学习 算法 vr&ar
动手学强化学习(四):时序差分算法 (Temporal Difference)
但这在大部分场景下并不现实,机器学习的主要方法都是在数据分布未知的情况下针对具体的数据点来对模型做出更新的。对于大部分强化学习现实场景(例如电子游戏或者一些复杂物理环境),其马尔可夫决策过程的状态转移概率是无法写出来的,也就无法直接进行动态规划。在这种情况下,智能体只能和环境进行交互,通过采样到的数据来学习,这类学习方法统称为无模型的强化学习(model-free reinforcement learning)。
1143 0