熵權(quán)法!數(shù)據(jù)分析中的權(quán)重分配利器

數(shù)據(jù)分析是在當今信息爆炸的時代中應用廣泛的技術(shù)之一。為了從大量的數(shù)據(jù)中提取有價值的信息,我們需要一種有效的方法來對不同的指標進行權(quán)重分配,熵權(quán)法可以作為一個客觀的綜合評價方法,比如根據(jù)河流的不同指標,評估不同河流的水質(zhì)。熵權(quán)法能夠幫助我們確定不同指標的權(quán)重,使得我們能夠更準確地評估數(shù)據(jù)的價值和重要性。本文將介紹熵權(quán)法其原理、應用(excel&python)和評估方式。

為什么要用熵權(quán)法?或者說具體什么場景下應用。如果你很熟悉業(yè)務(wù)指標,可以根據(jù)你的經(jīng)驗,主觀去給指標賦權(quán)重,并且指標就幾個,這種情況就不需要用熵權(quán)法。但是當你不熟悉,無法根據(jù)過往經(jīng)驗給權(quán)重,那么我們就需要用熵權(quán)法。例如,在投資決策中,可以使用熵權(quán)法來確定不同投資指標的重要性,從而指導投資策略的制定。接下來我們看什么是熵權(quán)法。

一、熵權(quán)法的原理

熵是信息理論中表示信息量的概念。熵對不同指標的權(quán)重進行分配,指標越混亂熵越大,越有秩序熵越小。那么,熵權(quán)法是通過計算每個指標的熵值來衡量其隨機性和不確定性,然后根據(jù)熵值的大小來確定每個指標的權(quán)重,基本思路是根據(jù)指標變異性的大小來確定客觀權(quán)重??偟膩碚f,指標數(shù)據(jù)變異程度越高,熵越大,給的權(quán)重也越高。

二、熵權(quán)法的應用

1. 準備數(shù)據(jù)

①缺失值處理

數(shù)據(jù)要保證沒有缺失值,如果有缺失值,可以考慮用均值,中位數(shù)等進行填充。


②確定指標類型

在所有的指標中,可能有正向,可能有負向。正向是數(shù)值越大越好,負向是數(shù)值越小越好。比如用戶分層模型,R最近消費間隔,數(shù)值越小越好;F消費頻次,M消費金額越大越好。那么R就是負向指標,F(xiàn)M就是正向指標。在本案例數(shù)據(jù)中p1-P13是正向指標,n1-n2是負向指標。

③數(shù)據(jù)標準化

確定數(shù)據(jù)類型,就是在標準化這一步來使用的,標準化是來解決量綱不一致的問題??吹轿覀兊陌咐龜?shù)據(jù),最大的單位有百萬,最小的是十。我們需要根據(jù)公式對正向和負向指標分別標準化。公式如下:

  • xij : 對于i個樣本,j個指標,則xij為第i個樣本的第j個指標;比如這里的x14表示第一個樣本的第四個指標數(shù)據(jù),也就是為0.3724
2. 實現(xiàn)過程【excel】

①新建輔助行 ,type標記正向指標、負向指標

②計算出每個指標的max,min,max-min

③標準化數(shù)據(jù)

公式:=IF(type="p",(B3-min)/max_min,(max-B3)/max_min)

④將值為0的調(diào)成0.00001,因為下一步計算熵值時,需要進行l(wèi)og取數(shù),若數(shù)值=0,則得出的值就會是無限大,在程序體現(xiàn)就是NaN。為了避免這種情況,若計算結(jié)果等于0的情況,則將值稍微調(diào)大一點,調(diào)成0.00001。

公式:=IF(B16=0,B16+0.00001,B16)

⑤計算指標比重Pij

image.png

公式:=B27/SUM(B27:B35)

⑥計算熵值

image.png

首先計算k,公式:=-1/LN(9),這里因為有9行數(shù)據(jù),所以用LN(9)

計算熵值ej,公式:=C46*SUMPRODUCT(B37:B45,LN(B37:B45))

⑦計算變異系數(shù)

image.png

公式:1-B47

⑧根據(jù)變異系數(shù),計算各指標權(quán)重

公式:=B48/SUM(B48:Q48)

⑨線性加權(quán),計算綜合得分 xij為標準化之前的數(shù)據(jù)

最后將各指標的加權(quán)得分相加,計算出綜合得分。

3.實現(xiàn)過程【python】

①讀取數(shù)據(jù)

import pandas as pd
import numpy as np
df= pd.read_excel('data_shiyan - 副本.xlsx')
df.head()

②空值處理

df.isnull().sum()

③標準化數(shù)據(jù)

df = df.set_index(df['時間'])
def data_Standardization(d):
    for i in list(d.columns):
        Max =np.max(d[i])
        Min = np.min(d[i])
        if (i=='n1') or (i=='n2'):
            d[i] = (Max - d[i]) / (Max - Min)
        else:
            d[i] = (d[i] - Min) / (Max - Min)
    return d
df = data_Standardization(df)
df

④將值為0的調(diào)成0.00001,因為下一步計算熵值時,需要進行l(wèi)og取數(shù),若數(shù)值=0,則得出的值就會是無限大,在程序體現(xiàn)就是NaN。為了避免這種情況,若計算結(jié)果等于0的情況,則將值稍微調(diào)大一點,調(diào)成0.00001。

df = df.replace(0,0.00001)

⑤計算指標比重Pij


image.png
for col in df.columns:
    df[col] = df[col] / sum(df[col])
df

⑥計算熵值


image.png
k = 1 /np.log(9)
entropy = [(-k) * sum([pij*np.log(pij) for pij in df[col]]) for col in df.columns]
s_entropy = pd.Series(entropy,index=df.columns,name='指標的熵值')
s_entropy

⑦計算變異系數(shù)dj

image.png
s_by = pd.Series(1-s_entropy,index=df.columns,name='變異系數(shù)')

⑧根據(jù)變異系數(shù),計算各指標權(quán)重

s_weight = s_by/sum(s_by)

s_weight.sort_values(ascending=False)

⑨線性加權(quán),計算綜合得分 xij為標準化之前的數(shù)據(jù)

df_dict ={}
for idx in range(len(df.columns)):
    df_dict[df_gz.iloc[:,idx].name] = df_gz.iloc[:,idx] * s_weight[idx]

df_gz['最終得分'] = pd.DataFrame(df_dict).sum(axis=1).round(2)

df_gz.sort_values('最終得分',ascending=False)

最后將各指標的加權(quán)得分相加,計算出綜合得分。

4. 得出結(jié)論

從各指標權(quán)重占比來看,Top3分別是指標p7、n2、p5。2010-2018年期間,綜合得分逐年上漲。

三、總結(jié)

結(jié)語:本文介紹了熵權(quán)法作為一種數(shù)據(jù)分析方法的原理、excel & python 應用和評估方式。通過理解和應用熵權(quán)法,我們可以更好地利用數(shù)據(jù),做出更準確和可靠的決策。希望本文能對讀者對熵權(quán)法的理解和運用有所幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容