[数据分析][评价方法]打分式评价-信息熵理论与熵权法

前言:

信息熵是一种用于衡量系统内部信息量的度量。在信息论中,信息是系统有序程度的一种度量。html

信息是肯定性的增长,不肯定性的减小(香农定理)。而信息熵是系统无序程度的一种度量,是系统不肯定性的量度。二者绝对值相等,但符号相反。一个系统的信息熵越小,该系统所含的信息量越大。python

信息熵被普遍用于计算机编码,通讯理论,博弈论等与“信息量”和“不肯定性”相关的理论模型中。git

熵权法就是一个经过信息熵理论肯定系统中各指标权值的赋值方法,可以较为精确客观地判断系统中各指标对总评价的贡献大小。github

信息熵的概念

  信息是个很抽象的概念。人们经常说信息不少,或者信息较少,但却很难说清楚信息到底有多少。好比一本五十万字的中文书到底有多少信息量
  直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。信息熵这个词是C.E.香农从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不肯定度
  信息论之父克劳德·艾尔伍德·香农第一次用数学语言阐明了几率与信息冗余度的关系。
 
  信息论之父 C. E. Shannon 在 1948 年发表的论文“通讯的数学理论( A Mathematical Theory of Communication )”中, Shannon 指出,任何信息都存在冗余,冗余大小与信息中每一个符号(数字、字母或单词)的出现几率或者说不肯定性有关。
  Shannon 借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。
  
信息熵具备如下特色:

• 单调性,即发生几率越高的事件,其所携带的信息熵越低。极端案例就是“太阳从东方升起”,由于为肯定事件,因此不携带任何信息量。从信息论的角度,认为这句话没有消除任何不肯定性。app

• 非负性,即信息熵不能为负。这个很好理解,由于负的信息,即你得知了某个信息后,却增长了不肯定性是不合逻辑编码

• 累加性,即多随机事件同时发生存在的总不肯定性的量度是能够表示为各事件不肯定性的量度的和。spa

熵权法介绍

  熵最早由香农引入信息论,目前已经在工程技术、社会经济等领域获得了很是普遍的应用。.net

  熵权法的基本思路是根据指标变异性的大小来肯定客观权重。excel

  熵权法相对于其余打分评价模型来讲,具备精确客观的优势。基于信息熵所计算得出的权重可以较为精确地反应不一样指标间的差异。可是相对应的,因为该模型的本质是用有限个决策样本去“估计”指标的信息熵,在样本量过少的状况下,基于熵权法所计算得出的权重则有可能出现较大偏差。通常来说,样本决策数必须大于等于指标数code

  通常来讲,若某个指标的信息熵越小,代表指标值得变异程度越大,提供的信息量越多,在综合评价中所能起到的做用也越大,其权重也就越大。相反,某个指标的信息熵越大,代表指标值得变异程度越小,提供的信息量也越少,在综合评价中所起到的做用也越小,其权重也就越小。

熵权法赋权步骤

数据标准化

  将各个指标的数据进行标准化处理。

  假设给定了k个指标,其中假设对各指标数据标准化后的值为,那么

求各指标的信息熵

  根据信息论中信息熵的定义,一组数据的信息熵     ,

(近似写为:,n取e为底数) ,其中   

 

若是   则定义  再带入。

肯定各指标权重

  根据信息熵的计算公式,计算出各个指标的信息熵为。经过信息熵计算各指标的权重:

熵权法赋权实例

背景介绍

  某医院为了提升自身的护理水平,对拥有的11个科室进行了考核,考核标准包括9项总体护理,并对护理水平较好的科室进行奖励。下表是对各个科室指标考核后的评分结果。

表1  11个科室9项总体护理评价指标得分表

 

  可是因为各项护理的难易程度不一样,所以须要对9项护理进行赋权,以便可以更加合理的对各个科室的护理水平进行评价。

熵权法进行赋权

1.数据标准化

  根据原始评分表,对数据进行标准化后能够获得下列数据标准化表

2  11个科室9项总体护理评价指标得分表标准化表

2.求各指标的信息熵

  根据信息熵的计算公式,能够计算出9项护理指标各自的信息熵以下:

3  9项指标信息熵表

 

3.计算各指标的权重

  根据指标权重的计算公式,能够获得各个指标的权重以下表所示:

4  9项指标权重表

4.对各个科室进行评分

  根据计算出的指标权重,以及对11个科室9项护理水平的评分。设Zl为第l个科室的最终得分,则 ,各个科室最终得分以下表所示:

5  11个科室最终得分表

 

实现过程

数据源:

 

 python3代码:
 1 # -*- encoding=utf-8 -*-
 2 
 3 import warnings  4 warnings.filterwarnings("ignore")  5 import pandas as pd  6 import numpy as np  7 
 8 
 9 def get_score(wi_list,data): 10     """
11  :param wi_list: 权重系数列表 12  :param data:评价指标数据框 13  :return:返回得分 14     """
15 
16     # 将权重转换为矩阵
17 
18     cof_var = np.mat(wi_list) 19 
20     # 将数据框转换为矩阵
21     context_train_data = np.mat(data) 22 
23     # 权重跟自变量相乘
24     last_hot_matrix = context_train_data * cof_var.T 25     last_hot_matrix = pd.DataFrame(last_hot_matrix) 26 
27     # 累加求和获得总分
28     last_hot_score = list(last_hot_matrix.apply(sum)) 29 
30     # max-min 归一化
31 
32     # last_hot_score_autoNorm = autoNorm(last_hot_score)
33 
34     # 值映射成分数(0-100分)
35 
36     # last_hot_score_result = [i * 100 for i in last_hot_score_autoNorm]
37 
38     return last_hot_score 39 
40 
41 
42 def get_entropy_weight(data): 43     """
44  :param data: 评价指标数据框 45  :return: 各指标权重列表 46     """
47     # 数据标准化
48     data = (data - data.min())/(data.max() - data.min()) 49     m,n=data.shape 50     #将dataframe格式转化为matrix格式
51     data=data.as_matrix(columns=None) 52     k=1/np.log(m) 53     yij=data.sum(axis=0) 54     #第二步,计算pij
55     pij=data/yij 56     test=pij*np.log(pij) 57     test=np.nan_to_num(test) 58 
59     #计算每种指标的信息熵
60     ej=-k*(test.sum(axis=0)) 61     #计算每种指标的权重
62     wi=(1-ej)/np.sum(1-ej) 63 
64     wi_list=list(wi) 65 
66 
67     return wi_list 68 
69 
70 
71 if __name__ == '__main__': 72 
73 
74     data0 = pd.read_excel("C:\\Users\\Oreo\\Desktop\\test2.xlsx", encoding='utf8') 75 
76     data = data0.iloc[:, 1:10] 77     mm=data 78     wi_list=get_entropy_weight(data) 79     score_list=get_score(mm,wi_list) 80     mm['score']=score_list 81     mm['科室']=data0['科室'] 82     # 而后对数据框按得分从大到小排序
83     result = mm.sort_values(by='score', axis=0, ascending=False) 84     result['rank'] = range(1, len(result) + 1) 85 
86     print(result) 87 
88     # 写出csv数据
89     result.to_csv('C:\\Users\\Oreo\\Desktop\\test2_result.csv', index=False)
数据结果:

GitHub地址

Entropy_Weight_Method

参考连接

相关文章
相关标签/搜索