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


前言:

信息熵是一種用於衡量系統內部信息量的度量。在信息論中,信息是系統有序程度的一種度量。

信息是確定性的增加,不確定性的減少(香農定理)。而信息熵是系統無序程度的一種度量,是系統不確定性的量度。兩者絕對值相等,但符號相反。一個系統的信息熵越小,該系統所含的信息量越大。

信息熵被廣泛用於計算機編碼,通信理論,博弈論等與“信息量”和“不確定性”相關的理論模型中。

熵權法就是一個通過信息熵理論確定系統中各指標權值的賦值方法,能夠較為精確客觀地判斷系統中各指標對總評價的貢獻大小。

信息熵的概念

  信息是個很抽象的概念。人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少。比如一本五十萬字的中文書到底有多少信息量
  直到1948年,香農提出了“信息熵”的概念,才解決了對信息的量化度量問題。信息熵這個詞是C.E.香農從熱力學中借用過來的。熱力學中的熱熵是表示分子狀態混亂程度的物理量。香農用信息熵的概念來描述信源的不確定度
  信息論之父克勞德·艾爾伍德·香農第一次用數學語言闡明了概率與信息冗余度的關系。
 
  信息論之父 C. E. Shannon 在 1948 年發表的論文“通信的數學理論( A Mathematical Theory of Communication )”中, Shannon 指出,任何信息都存在冗余,冗余大小與信息中每個符號(數字、字母或單詞)的出現概率或者說不確定性有關。
  Shannon 借鑒了熱力學的概念,把信息中排除了冗余后的平均信息量稱為“信息熵”,並給出了計算信息熵的數學表達式。
  
信息熵具有以下特點:

• 單調性,即發生概率越高的事件,其所攜帶的信息熵越低。極端案例就是“太陽從東方升起”,因為為確定事件,所以不攜帶任何信息量。從信息論的角度,認為這句話沒有消除任何不確定性。

• 非負性,即信息熵不能為負。這個很好理解,因為負的信息,即你得知了某個信息后,卻增加了不確定性是不合邏輯

• 累加性,即多隨機事件同時發生存在的總不確定性的量度是可以表示為各事件不確定性的量度的和。

熵權法介紹

  熵最先由香農引入信息論,目前已經在工程技術、社會經濟等領域得到了非常廣泛的應用。

  熵權法的基本思路是根據指標變異性的大小來確定客觀權重。

  熵權法相對於其他打分評價模型來說,具有精確客觀的優點。基於信息熵所計算得出的權重能夠較為精確地反應不同指標間的差別。但是相對應的,由於該模型的本質是用有限個決策樣本去“估計”指標的信息熵,在樣本量過少的情況下,基於熵權法所計算得出的權重則有可能出現較大誤差。一般來講,樣本決策數必須大於等於指標數

  一般來說,若某個指標的信息熵越小,表明指標值得變異程度越大,提供的信息量越多,在綜合評價中所能起到的作用也越大,其權重也就越大。相反,某個指標的信息熵越大,表明指標值得變異程度越小,提供的信息量也越少,在綜合評價中所起到的作用也越小,其權重也就越小。

熵權法賦權步驟

數據標准化

  將各個指標的數據進行標准化處理。

  假設給定了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

參考鏈接

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM