熵值法

在信息论中,熵值能够很好的反映信息无序化程度,其值越小,系统无序度越低,信息的效用值越大,其权重也相应越大;反之,其值越大,系统无序度越高,信息的效用值越小,权重也越小。

步骤

熵值法赋权计算步骤如下:
1)确定mmm个需进行评价的样本对象和nnn个评价指标,构建一个对应的判断矩阵R=(xij)mn,(i=1,2,...,m,j=1,2,...n)R=(x_{ij})_{mn},(i=1,2,...,m,j=1,2,...n)R=(xij​)mn​,(i=1,2,...,m,j=1,2,...n).
2)将判断矩阵进行标准化,即将各指标进行同度量化。该模型采用比重法对指标判断矩阵原始值进行标准化:
Pij=xij∑i=1mxijP_{i j}=\frac{x_{i j}}{\sum_{i=1}^{m} x_{i j}}Pij​=∑i=1m​xij​xij​​
3)计算第jjj项指标的熵值,利用熵值公式计算评价指标的熵值:
ej=−k∑i=1mPijln⁡Pij,其中 k=1ln⁡m(i=1,…,m;j=1,…,n)e_{j}=-k \sum_{i=1}^{m} P_{i j} \ln P_{i j}, \text { 其中 } k=\frac{1}{\ln m}(i=1, \ldots, m ; j=1, \ldots, n)ej​=−ki=1∑m​Pij​lnPij​, 其中 k=lnm1​(i=1,…,m;j=1,…,n)
4)计算第jjj项指标的差异性系数gjg_jgj​。熵值越小,指标间差异性越大,指标在综合评价中所起作用就越大:
gj=1−ejg_j=1-e_jgj​=1−ej​
5)用熵值法估算各指标的权重,本质上是计算各项指标的价值系数,最后可以得到第jjj项指标的权重系数ωj\omega_jωj​:
ωj=gj∑i=1ngj\omega_{j}=\frac{g_{j}}{\sum_{i=1}^{n} g_{j}}ωj​=∑i=1n​gj​gj​​

python实现

def Entropy_(standardized_data,weight_num=None,up_layer_num=None,weight_interval=None):''':param standardized_data: 需要计算权重的数据:param weight_num: 权重个数:param up_layer_num: 是否要计算第二层权重,需要则传入上层指标个数:param weight_interval: 若要计算第二层权重,传入第一层指标个数区间:return: 第一层的差异性系数g,权重w,熵值e'''rows, cols = standardized_data.shapek = 1/math.log(rows)standardized_data_arr = np.array(standardized_data)standardized_data_log = np.log(standardized_data_arr)use_data = pd.DataFrame(standardized_data_arr*standardized_data_log)use_data.loc['col_sum'] = use_data.apply(lambda x:x.sum())#计算熵值e = use_data.loc['col_sum']*(-k)#计算差异性系数g = 1-eif up_layer_num is not None:#权重计算g_arr = np.zeros(shape=[up_layer_num])for i in range(up_layer_num):for j in weight_interval[i]:g_arr[i] = g_arr[i] + g.iloc[j]#权重w = np.zeros(weight_num)for i in range(up_layer_num):for j in weight_interval[i]:w[j] = g[j] / g_arr[i]else:# 权重计算w = np.array([i/np.sum(g) for i  in g])w = pd.DataFrame(w)return g,e,w

灰色关联分析

灰色系统理论的研究对象是部分信息已知而部分信息未知的“贫信息”’不确定性系统,利用已知信息来确定系统的未知信息,对样本量没有严格的规定,也不要求服从任何典型分布规律,且不会出现量化结果与定性分析不一致的情况。而关联分析是灰色系统分析、评级和决策的基础,其基本思想是根据数据指标呈现出的序列曲线的几何形状相似程度来判断两个指标之间的联系是否紧密,通过关联度表征两个事物间的关联程度。

灰色关联度分析步骤

1)延用熵值法中构建的原始数据判断矩阵R=(xij)m×nR=(x_{ij})_{m×n}R=(xij​)m×n​,矩阵如下:
R=[x11⋯x1n⋮⋱⋮xm1⋯xmn]R=\left[\begin{array}{ccc} x_{11} & \cdots & x_{1 n} \\ \vdots & \ddots & \vdots \\ x_{m 1} & \cdots & x_{m n} \end{array}\right]R=⎣⎢⎡​x11​⋮xm1​​⋯⋱⋯​x1n​⋮xmn​​⎦⎥⎤​
2)选取最优指标集
各评价指标的最优值组成的集合称为最优集,它是评价对象比较的基准,记录为
F=kj,(j=1,2,3,...,n)F=k_j,(j=1,2,3,...,n)F=kj​,(j=1,2,3,...,n)
式子中kjk_jkj​为第jjj个指标的最优值。在最优值的选取过程中,若指标为成本型指标,则最优值选取当中的最小值;若指标为效益型指标,则最优值选取当中的最大值。最优指标集和各待评价对象的指标组成一个矩阵 D:
D=[k1⋯knx1⋯xn⋮⋱⋮xm1⋯xmn]D=\left[\begin{array}{ccc} k_{1} & \cdots & k_{n} \\ x_{1} & \cdots & x_{n} \\ \vdots & \ddots & \vdots \\ x_{m 1} & \cdots & x_{m n} \end{array}\right]D=⎣⎢⎢⎢⎡​k1​x1​⋮xm1​​⋯⋯⋱⋯​kn​xn​⋮xmn​​⎦⎥⎥⎥⎤​
式中,xijx_{ij}xij​为第iii个评价对象的第jjj个指标的原始数值.
3)计算关联系数,求取评判矩阵
根据灰色系统理论,将最优数列作为参考数列,将其他数列作为被比较数列,用关联分析法分别求得第iii个评价对象的第jjj个指标与第jjj个最优指标的关联系数eije_{ij}eij​,计算公式如下:
eij=min⁡imin⁡j∣kj−xij∣+ρmax⁡imax⁡j∣kj−xij∣∣kj−xij∣+ρmax⁡imax⁡j∣kj−xij∣e_{i j}=\frac{\min _{i} \min _{j}\left|k_{j}-x_{i j}\right|+\rho \max _{i} \max _{j}\left|k_{j}-x_{i j}\right|}{\left|k_{j}-x_{i j}\right|+\rho \max _{i} \max _{j}\left|k_{j}-x_{i j}\right|}eij​=∣kj​−xij​∣+ρmaxi​maxj​∣kj​−xij​∣mini​minj​∣kj​−xij​∣+ρmaxi​maxj​∣kj​−xij​∣​
式中,ρ\rhoρ为分辨系数,其取值范围在[0,1],一般取ρ=0.5\rho=0.5ρ=0.5;min⁡imin⁡j∣kj−xij∣\min _{i} \min _{j}\left|k_{j}-x_{i j}\right|mini​minj​∣kj​−xij​∣为两级最小差,max⁡imax⁡j∣kj−xij∣\max _{i} \max _{j}\left|k_{j}-x_{i j}\right|maxi​maxj​∣kj​−xij​∣为两级最大差。
则各指标的评判矩阵即关联系数记录为EEE,如下:
E=[e11⋯e1n⋮⋱⋮em1⋯emn]E=\left[\begin{array}{ccc} e_{11} & \cdots & e_{1 n} \\ \vdots & \ddots & \vdots \\ e_{m 1} & \cdots & e_{m n} \end{array}\right]E=⎣⎢⎡​e11​⋮em1​​⋯⋱⋯​e1n​⋮emn​​⎦⎥⎤​
式中,eije_{ij}eij​为第iii个样本第jjj个指标与第jjj个最优指标的关联系数。
4)建立灰色单层次评判矩阵
RX=E×WRX=E×WRX=E×W
式中,RX=[r1,r2,…,rm]TR X=\left[r_{1}, r_{2}, \ldots, r_{m}\right]^{T}RX=[r1​,r2​,…,rm​]T为mmm个被评价对象的综合评价结果向量;即ri=∑i=1mωjeijr_i = \sum_{i=1}^{m} \omega_{j}e_{ij}ri​=∑i=1m​ωj​eij​;W=[ω1,…,ωn]W=\left[\omega_1,\ldots,\omega_n \right]W=[ω1​,…,ωn​]为nnn个评价指标的权重分配向量,其中∑j=1nωj=1\sum_{j=1}^{n} \omega_{j}=1∑j=1n​ωj​=1。
5)根据实际指标情况,可建立多层评判标准
当评价对象的各个指标间分为不同层次时,需要采用多层次综合评价法。灰色多层次综合评判是以单层次综合评价为基础,需将单层次评价结果矩阵作为下一个层次的原始指标列,再重复进行下一层次单层评判计算,依次类推至最高层。若灰色关联度越大,说明该评价对象与参考指标越接近,即第iii个评价对象越优于其他,通过关联度这指标排出样本之间的优劣次序。

python实现

暂无

层次分析法

层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。
层次分析法属于主观赋权法,具有简洁、系统性分析的优点,但主观性强,不易令人信服,并且当数据量较大时,权重难以确定。

计算步骤

1)建立层次结构模型
将决策的目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,绘出层次结构图。 最高层是指决策的目的、要解决的问题。 最低层是指决策时的备选方案。 中间层是指考虑的因素、决策的准则。对于相邻的两层,称高层为目标层,低层为因素层。
2)构造判断(成对比较)矩阵
两两因素相互比较,对此时采用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,以提高准确度。如对某一准则,对其下的各方案进行两两对比,并按其重要性程度评定等级。 为要素与要素重要性比较结果,表1列出Saaty给出的9个重要性等级及其赋值。按两两比较结果构成的矩阵称作判断矩阵:

3)层次单排序及其一致性检验
对应于判断矩阵最大特征根λmax\lambda_{max}λmax​的特征向量,经归一化后记为WWW。WWW的元素为同一层次因素对于上一层次因素某因素相对重要性的排序权值,这一过程称为层次单排序。能否确认层次单排序,则需要进行一致性检验,所谓一致性检验是指对AAA确定不一致的允许范围。其中,nnn阶一致阵的唯一非零特征根为nnn;$n 阶正互反阵阶正互反阵阶正互反阵A$的最大特征根 λ≥n\lambda ≥nλ≥n, 当且仅当λ=n\lambda = nλ=n时,AAA为一致矩阵。
一致性指标用CI计算,CI越小,说明一致性越大,计算公式为:
CI=λ−nn−1CI= \frac{\lambda-n}{n-1}CI=n−1λ−n​
CI=0CI=0CI=0,有完全的一致性;CICICI接近于000,有满意的一致性;CICICI 越大,不一致越严重。
为衡量CICICI 的大小,引入随机一致性指标 RIRIRI:
RI=CI1+CI2+⋯+CInnRI=\frac{CI_1+CI_2+\dots+CI_n}{n}RI=nCI1​+CI2​+⋯+CIn​​
其与矩阵阶数的关系,一般情况下,矩阵阶数越大,则出现一致性随机偏离的可能性也越大,其对应关系如表2:

考虑到一致性的偏离可能是由于随机原因造成的,因此在检验判断矩阵是否具有满意的一致性时,还需将CICICI和随机一致性指标RIRIRI进行比较,得出检验系数CRCRCR,公式如下:
CR=CIRICR=\frac{CI}{RI}CR=RICI​
一般,如果CR<0.1CR<0.1CR<0.1 ,则认为该判断矩阵通过一致性检验,否则就不具有满意一致性。
4)层次总排序及其一致性检验

python实现

# python3.7
# -*- coding: utf-8 -*-
#@Author    : huinono
#@Software  : PyCharmimport warnings
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as pltwarnings.filterwarnings('ignore')mpl.rcParams['font.sans-serif'] = 'SimHei'
mpl.rcParams['axes.unicode_minus'] = 'False'plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = 'False''''
1、构建判断矩阵:准则层和方案层判断矩阵
2、对方案层判断矩阵求特征向量
3、计算最大特征值与层次单排序的一致性检验
4、层次总排序的一致性检验
5、求得权重
'''
class AHP(object):def __init__(self):self.RI = [0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]def VectorsCal(dself,data):data_sum = np.sum(data,axis=1)data_mean = data_sum/data.shape[0]data_vecs = data_mean/np.sum(data_mean)return data_vecsdef SOConsistencyCheck(self,vals_max,n):CI = (vals_max-n)/(n-1)if CI == 0:CR=0RI = self.RI[n - 1]else:RI = self.RI[n-1]CR = CI/RIreturn CR,CI,RIdef weightCal(self,weight_interval,weight_num,JudgmentMatrix_all):'求特征向量'matrix_vecs_ = [self.VectorsCal(con) for con in JudgmentMatrix_all]'计算最大特征值和单排序一致性检验'matrix_vals_vecs = [np.linalg.eig(con) for con in JudgmentMatrix_all]matrix_vals_max = [np.max(vals_vecs[0]) for vals_vecs in matrix_vals_vecs]matrix_CR = [self.SOConsistencyCheck(matrix_vals_max[i], JudgmentMatrix_all[i].shape[0])[0] for i in range(len(matrix_vals_max))]matrix_CI = [self.SOConsistencyCheck(matrix_vals_max[i], JudgmentMatrix_all[i].shape[0])[1] for i in range(len(matrix_vals_max))]matrix_RI = [self.SOConsistencyCheck(matrix_vals_max[i], JudgmentMatrix_all[i].shape[0])[2] for i in range(len(matrix_vals_max))]'总排序一致性检验'C1 = matrix_vecs_[-1].reshape(-1, 1)matrix_zero = np.zeros(weight_num)P = []length = len(weight_interval)for i in range(length):if i == 0:P1 = np.concatenate([matrix_vecs_[i], matrix_zero[weight_interval[i][-1] + 1:]], axis=0).reshape(-1, 1)P.append(P1)elif i == length-1:P3 = np.concatenate([matrix_zero[:weight_interval[i][0]], matrix_vecs_[i]], axis=0).reshape(-1, 1)P.append(P3)else:P2 = np.concatenate([matrix_zero[:weight_interval[i][0]], matrix_vecs_[i], matrix_zero[weight_interval[i][-1] + 1:]],axis=0).reshape(-1, 1)P.append(P2)weight_one = np.dot(np.concatenate(P, axis=1), C1)if np.dot(matrix_CI[1:], C1) == 0 and np.dot(matrix_RI[1:],C1) == 0:CR1 = 0else:CR1 = np.dot(matrix_CI[1:], C1) / np.dot(matrix_RI[1:],C1)return weight_one,matrix_CR,CR1,matrix_vecs_,matrix_vals_max

熵值法、灰色关联分析与层次分析法相关推荐

  1. c语言写层次分析法,基于C语言的层次分析法在医院工作质量评价中的设计与实现...

    高宇翔 王磊 买力曼·巴哈尼 朱诗威 艾孜买提·艾则孜 吴淼 摘要:目的:对新疆医院工作质量进行综合评价和分析,并提出合理的改进建议,结合新疆医院的工作质量,采用层次分析法提出医院工作质量评价模型,并 ...

  2. 关联度分析法-灰色关联分析

    目录 灰色关联分析介绍 灰色关联分析的步骤 实例 灰色关联分析介绍 对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度.在系统发展过程中,若两个因素变化的趋势具有一致性,即 ...

  3. 层次分析法2:Matlab实现层次分析法的代码详解

    目录 读取数据 读取准则层判断矩阵 读取方案层的判断矩阵 一致性检验 求解权重值 寻找权重值最高的结果 代码分享及注释 例题:挑选合适的工作,经双方恳谈,已有三个单位表示愿意录用某毕业生.该生根据已有 ...

  4. 层次分析法python代码_Python 实现层次分析法

    import csv import numpy as np import tensorflow as tf #大概的思路是: #1.首先输入每个指标下面对应的对比矩阵,每个这个矩阵是由专家比较每两个 ...

  5. 怎样计算权重?——层次分析法、熵值法:工具+数据+案例+代码

    1权重系数的计算 计算权重是一种常见的分析方法,在实际研究中,需要结合数据的特征情况进行选择,比如数据之间的波动性是一种信息量,那么可考虑使用CRITIC权重法或信息量权重法:也或者专家打分数据,那么 ...

  6. 【数学建模】算法模型(一)|线性规划 整数规划 非线性规划 层次分析模型 灰色关联分析

    文章目录 1.线性规划 Linear Programming (LP) 1.1线性规划的matlab标准形式及软件求解 1.2 投资的收益和风险 2. 整数规划 2.1 整数规划和线性规划的关系 2. ...

  7. 数学建模常用模型04:灰色关联分析法

    数学建模常用模型04:灰色关联分析法 灰色关联分析法 本文所用的资料参考来源:美赛资料网:美赛资料网 与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用.层次分析用在确定权重上面 ...

  8. 熵权法EW与层次分析法AHP之数学原理及实例

    1.概述 对于多指标或多目标决策问题,由于涉及到多个指标或属性,在对实测数据进行评价时,需要确定这些指标之间的相互权重,各指标权重的客观性与合理性也会大大影响到最终的评价结果.目前对于指标权重确定的方 ...

  9. 综合评价分析法:熵权法matlab实现+层次分析法matlab实现

    综合评价分析法:熵权法matlab实现+层次分析法matlab实现 层次分析法matlab实现 clc;clear%层次分析法matlab实现A=[1 1/9 1/2 1/4 1/6 9 1 6 5 ...

  10. 灰色关联度分析excel步骤_技术 | 基于灰色关联与粗糙依赖度的甘肃兰州市区泥石流危险性评价...

    泥石流危险性是指在人类及所在环境中一切事物遭受泥石流损害的可能性大小.作为防灾减灾中泥石流灾害管理的重要一环,泥石流的危险性评估是泥石流灾害防治决策的前提.学者们普遍认为通过泥石流风险评估和风险管理, ...

最新文章

  1. 2021-2027年中国室内定位市场研究及前瞻分析报告
  2. Mastering Algorithms with C中文版附带源码说明
  3. U-LanD:基于不确定性的视频地标检测
  4. Exchange2013学习笔记(4)-Ex的重定向
  5. HTTPS 原理详解
  6. 大话设计模式—组合模式
  7. Oracle RAC CRS-0184 --Cannot communicate with the CRS daemon
  8. NumPy Cookbook 带注释源码 四、连接 NumPy 与 剩余世界
  9. 操作系统的运行机制体系结构
  10. 10个重要的机器学习术语
  11. 无锡鼋头渚樱花颜色单调
  12. 离散傅里叶变换(DFT)/快速傅里叶变换(FFT)matlab
  13. 马士兵AI人工智能工程师
  14. python lcut精确分词_python 分词
  15. 北京邮电大学计算机导论试题,2020年秋季《北京邮电大学网络教育》各种考试题目汇总.docx...
  16. Http gzip 处理
  17. 微信转发软件后缀_微信发送不了100M的视频?其实只需要改个后缀,长知识了...
  18. Variational Autoencoders and Nonlinear ICA: A Unifying Framework
  19. 实验一 简单io应用—流水灯控制示例程序_【正点原子FPGA连载】第十章呼吸灯实验--领航者ZYNQ之linux开发指南...
  20. 半监督语义分割_paper reading part2

热门文章

  1. chrome 代理设置
  2. gcc/g++编译错误Assembler Error
  3. CMD下将ts视频合并和存储为MP4文件
  4. php 路由器设置密码,登陆192.168.1.1路由器如何设置密码
  5. 关于天猫(淘宝)评论爬虫
  6. php 获取当前、两个月之前的日期
  7. Qt VS Tools插件官方下载及安装
  8. android 修改图片定位位置信息,‎App Store 上的“PhotoMapper:照片地理位置修改,GPS EXIF编”...
  9. 时序逻辑领域的开拓者
  10. 图形化开发(五)032-Three.js之光照——PointLight 点光源、SpotLight 聚光灯光源、实现聚光灯阴影、HemisphereLight室外光源