熵值法&熵权法-python实现

时隔老久,重新整理一下笔记。仅供个人自学使用,读者自行参考

Reference:

存了不知道多久的本地文件

司守奎,python数学实验与建模,2020

https://www.zhihu.com/question/357680646/answer/943628631

https://www.jianshu.com/p/638cb1eaec43

https://blog.csdn.net/mycafe_/article/details/79285762?biz_id=102&utm_term=%E7%86%B5%E6%9D%83%E6%B3%95%E5%92%8C%E7%86%B5%E5%80%BC%E6%B3%95%E4%B8%80%E6%A0%B7%E5%90%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-79285762&spm=1018.2118.3001.4187

文章目录

  • 熵值法&熵权法-python实现
    • 先说区别
    • 基本原理
    • 基本步骤
    • 总结
    • 最大熵原理
    • 基础代码

先说区别

一开始迷惑的不行以为是两个东西,结果比照很多资料发现这好像就是同一个玩意,没懂当初翻译的搞两个名字干嘛,捂脸。

基本原理

在信息论中,熵是对不确定性的一种度量。一般来说,信息量越大,不确定性就越小,熵也就越小,信息的效用值越大;信息量越小,不确定性越大,熵也越大,信息的效用值越小。而熵值法就是通过计算各指标观测值的信息熵。根据各指标的相对变化程度对系统整体的影响来确定指标权重的一种赋权方法。

基本步骤

  1. 数据标准化

    指标的标准化处理:异质指标同质化

    由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,我们先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令
    ,从而解决各项不同质指标值的同质化问题。而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好) ,因此,对于高低指标我们用不同的算法进行数据

    标准化处理。其具体方法如下:

    正向指标:
    负向指标:



为第i个国家的第j个指标的数值。(i=1,2…,n; j=1,2,…,m)。为了方便起见,仍记数据

但一般只用正向指标处理。

  1. 计算在第j项指标下第i各评价对象的特征比重

    设第 i 个评价对象的第 j 个观测值的标准化数据,计算第 j 项指标下第 i 个评价对象的特征比重为

  2. 计算第j项指标的熵值为

    ,其中
    不难看出,如果第 j 项指标的观测值差异越大,熵值越小;反之,熵值越大。

  3. 计算第j项指标的差异系数为

    如果第 j 项指标的观测值越大,则差异系数 gi 就越大,第 j 项指标也就越重要

  4. 确定第j项指标的权重系数

  5. 计算第i个评价对象的综合评价值

总结

优点

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

缺点

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

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

最大熵原理

最大熵原理就是找一个概率分布,使和已有的关于状态集合的信息(可理解为先验信息)一致,并且没有太大的误差。最容易想到的概率分布就是使熵达到最大的并且满足约束条件的概率分布,因为从最小二乘法或最小距离的原理考虑,比较平坦的分布比有峰的分布满足已知的信息体例的可能性更大。当没有任何关于状态集合的先验信息时,利用最大熵准则得到的概率分布与等概率原则得到的结果一致。

最大熵原理是对客观物理系统的某种实际分析分布的估计,虽然计算熵时所用的概率分布带有一定的主观性,但在最大熵原理下所给出的解完全是一个客观的量,因为这一解只与一组数学期望值有关,而这组数学期望值可以客观测量得到。所以最大熵给出的解完全是一个客观量,没有主观因素。因此,基于最大熵原理得出的用于评价指标权重的熵权法是一种客观评价法。

这也证明了最大熵可以使得评价的熵权失去主观性

基础代码

import numpy as np
import pandas as pd
#文件路径
fp="d:/shangquan.xlsx"
#参数自行调参
data=pd.read_excel(fp,index_col=None,header=None,encoding='utf8')
#标准化数据,这里一行代码处理简直玄学
data = (data - data.min())/(data.max() - data.min())
m,n=data.shape
#第一步读取文件,如果未标准化,则标准化
data=data.as_matrix(columns=None)
#将dataframe格式转化为matrix格式
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)
#计算每种指标的权重

建模笔记——熵值法熵权法(python)相关推荐

  1. 嫡权法赋权法_变异系数法_客观赋权法

    什么是变异系数,有何优势? 变异系数:当需要比较两组数据离散程度大小的时候,如果两组数据的测量尺度相差太大,或者数据量纲的不同,直接使用标准差来进行比较不合适,此时就应当消除测量尺度和量纲的影响,而变 ...

  2. LL1分析构造法_数学建模算法--最优赋权法(含代码)

    数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...

  3. 数学建模笔记——评价类模型之熵权法

    嗯,这次讲一讲熵权法,一种通过样本数据确定评价指标权重的方法. 熵权法 之前我们提到了TOPSIS方法,用来处理有数据的评价类模型.TOPSIS方法还蛮简单的,大概就三步. 将原始数据矩阵正向化. 也 ...

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

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

  5. 数学建模学习笔记(2):TOPSIS方法(优劣解距离法)和熵权法修正

    文章目录 TOPSIS方法概述 TOPSIS方法步骤(重点) 熵权法对TOPSIS模型的修正 熵权法的步骤(重点) TOPSIS方法由C.L.Hwang和K.Yoon在1981年首次提出,在国内常简称 ...

  6. 建模笔记——熵权法(Python实现)

    一.模型介绍 熵权法是一种通过对已知数据的处理,从而获得影响因子权重的方法,其基本思路是根据指标变异性的大小来确定客观权重. 熵权法的优点在于其根据各项指标指标值的变异程度来确定指标权数的,是一种客观 ...

  7. 数学建模笔记-熵权法确定评价类问题指标的权重 清风课程笔记整理

    评价类问题: 1.层次分析法入门学习: https://blog.csdn.net/weixin_47066458/article/details/113177117 2.Topsisi入门学习: h ...

  8. 数学建模学习笔记(三)熵权法Excel实现

    熵权法步骤: 1.标准化处理 正向指标: Z i j = x i j − m i n ( x j ) m a x ( x j ) − m i n ( x j ) Z_{ij}=\cfrac{x_{ij ...

  9. 《零基础数学建模》——TOPSIS+熵权法

    目录 ​ 前言 一.TOPSIS法(优劣解距离法) 1.模型原理 2.建模步骤 二.模型实现 第一步:将原始矩阵正向化 第二步:正向化矩阵标准化 第三步:计算得分并归一化 四.TOPSIS模型的总结与 ...

最新文章

  1. 【Codeforces】808D Array Division(前后两部分和相等)
  2. OpenGL ES3 0实现简单粒子火焰效果
  3. 流程的python-什么时候学流畅的python合适?
  4. SQL语句更改表所有者
  5. MySQL Gap Lock问题
  6. 【ML】理解偏差和方差,过拟合和欠拟合
  7. [文献阅读]—一篇不错的低资源机器翻译综述(Neural Machine Translation for Low-Resource Languages: A Survey)
  8. FristiLeaks_1.3#攻略
  9. 爬取全球疫苗接种信息可视化分析(已修改)
  10. Au 效果器详解:参数均衡器
  11. 从网页复制图片到word不显示的解决办法
  12. 前端学习笔记(一)HTML5
  13. 怎么用显卡计算_显卡性能的软件 3dmark怎么用
  14. 什么是cellpadding
  15. require,import和import()函数的区别
  16. C#模拟百度登录并到指定网站评论回帖(三)
  17. 总结黄铅笔奖中国第一人的20年营销经验
  18. 福建泉州3000余人“包动车”返乡过新春
  19. MongoDB 更新数组中的元素
  20. 坦克大战java源码分析(上)

热门文章

  1. 什么数据库可以撑起微信支付每天数亿笔交易?
  2. swagger配置使用及安全方案
  3. Flux发布Elixir Essential限制器,提供对全景声的支持
  4. SkyWalking 极简入门
  5. 易中天品三国之:《大江东去》
  6. 《定风波》--苏轼之我最喜欢的一首词
  7. (1) DPDK 简介
  8. 低学历可以学习IT技术吗?
  9. linux cadence教程 pdf,cadence入门教程-修改版.pdf
  10. 如何给注册中心锦上添花?