[數據分析][評價方法]打分式評價-信息熵理論與熵權法

前言:

信息熵是一種用於衡量系統內部信息量的度量。在信息論中,信息是系統有序程度的一種度量。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

參考連接

相關文章
相關標籤/搜索