Diretório de artigos
-
- método de peso de entropia
- Etapas do algoritmo
-
- Os indicadores são padronizados.
- Calcule o iiO jjth sob o i objeto de pesquisaA proporção do índice j pij p_{ij}peu
- Calcule o valor de entropia do j-ésimo índice
- Calcule o jjésimoO coeficiente de diferença gj g_jíndice jgj
- Dê peso ao índice, defina o peso wj w_jcj
- Calcular o valor de avaliação da amostra por peso, iiO jjth sob o i objeto de pesquisaO valor de avaliação do índice j é:
- Parte IIO valor global de avaliação do objeto de investigação é:
- dados./data.csv:
- programa:
- Vantagens e desvantagens do método de peso de entropia
- referência:
método de peso de entropia
De um modo geral, se a probabilidade de um indicador for maior, o grau de incerteza é menor, a entropia da informação é menor, o grau de dispersão do indicador é maior, a quantidade de informação fornecida é maior e o papel que pode desempenhar na Quanto maior for a avaliação abrangente, maior será o seu peso. Pelo contrário, quanto menor a probabilidade de um determinado indicador, menor o grau de incerteza e maior a entropia da informação, indica que o valor do indicador é menos discreto, a quantidade de informação fornecida é menor, e o papel desempenhado na avaliação global também é maior: quanto menor for, menor será o seu peso.
O método do peso da entropia está no campo da estatística, o que é diferente da interpretação da entropia no campo da informática. Em suma, no domínio da estatística, quando os dados estão mais dispersos, quanto menor for o valor da entropia, pode-se considerar que os dados contêm mais informação, pelo que o peso é maior, o que é também a explicação do método do peso da entropia; enquanto no campo da informática, quanto mais dispersos os dados, menor o valor da entropia do cálculo e menos confiáveis são as informações dos dados, pode-se dizer que os dados contêm menos informações.
Etapas do algoritmo
Suponha que haja mmm assuntos,nnn indicadores:
i = 1 , 2 , … , m , j = 1 , 2 , … , ni=1,2,\dots,m,j=1,2,\dots,neu=1 ,2 ,…,eu ,j=1 ,2 ,…,n
X = [ x 11 x 12 ⋯ x 1 nx 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ xm 1 xm 2 ⋯ xmn ] X=\begin{bmatriz} {x_{11}}&{x_{12}} &{\cdots}&{x_{1n}}\\ {x_{21}}&{x_{22}}&{\cdots}&{x_{2n}}\\ {\vdots}&{\vdots} &{\ddots}&{\vdots}\\ {x_{m1}}&{x_{m2}}&{\cdots}&{x_{mn}}\\ \end{bmatrix}X=
x11x21⋮xm 1x12x22⋮xm 2⋯⋯⋱⋯x1n _x2n _⋮xhomem
Os indicadores são padronizados.
Para indicadores positivos: xij = xij − min ( xj ) max ( xj ) − min ( xj ) x_{ij}=\frac{x_{ij}-\min(x_j)}{\max(x_j) - \min(x_j)}xeu=m a x ( xj) − m eu n ( xj)xeu− m eu n ( xj).Para
indicadores negativos: xij = max ( xj ) − xij max ( xj ) − min ( xj ) x_{ij}=\frac{\max(x_j)-x_{ij}}{\max(x_j ) -\min(x_j)}xeu=m a x ( xj) − m eu n ( xj)m a x ( xj) −x _eu.
Calcule o iiO jjth sob o i objeto de pesquisaA proporção do índice j pij p_{ij}peu
pij = xij ∑ imxij p_{ij}=\frac{x_{ij}}{\sum\limits_{i}^mx_{ij}}peu=eu∑euxeuxeu
Calcule o valor de entropia do j-ésimo índice
ej = − k ∑ impij ln pij e_j=-k\sum\limits_i^mp_{ij}\ln p_{ij}ej=-k _eu∑eupeuEmpeu,k = 1 ln mk=\frac{1}{\ln m}k=eu neu1
Calcule o jjésimoO coeficiente de diferença gj g_jíndice jgj
Quanto maior o coeficiente de diferença, melhor, indicando que o índice desempenha um papel maior no objeto de pesquisa e que o índice é melhor.
gj = 1 − ej g_j=1-e_jgj=1-ej
Dê peso ao índice, defina o peso wj w_jcj
wj = gj ∑ jngj w_j=\frac{g_j}{\soma\limites_j^ng_j}cj=j∑nãogjgj
Calcular o valor de avaliação da amostra por peso, iiO jjth sob o i objeto de pesquisaO valor de avaliação do índice j é:
F ij = ajxij F_{ij}=a_jx_{ij}Feu=ajxeu
Parte IIO valor global de avaliação do objeto de investigação é:
F i = ∑ jn F ij F_i=\soma\limites_j^nF_{ij}Feu=j∑nãoFeu
dados./data.csv:
Modelo, consumo de combustível, potência, custo, segurança, facilidade de manutenção, operabilidade
Honda, 5, 1,4, 6, 3, 5
, 7 Audi, 9, 2, 30, 7, 5, 9
Santana, 8, 1,8, 11, 5, 7,5Buick
,12,2,5,18,7,5,5
programa:
#!/usr/bin/env python
# coding: utf-8
import numpy as np
import pandas as pd
#定义数据标准化函数。为了避免求熵值时对数无意义,对数据进行平移,对标准化后的数据统一加了常数0.001
def std_data(value,flag):
for i in range(len(indicator)):
#print(flag[i])
if flag[i]=='+':
value[:,i]=(value[:,i]-np.min(value[:,i],axis=0))/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.001
elif flag[i]=='-':
value[:,i]=(np.max(value[:,i],axis=0)-value[:,i])/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.001
return value
#定义熵值法函数、熵值法计算变量的权重
def cal_weight(indicator,project,value):
p= np.array([[0.0 for i in range(len(indicator))] for i in range(len(project))])
print(p)
for j in range(len(indicator)):
p[:,j]=value[:,j]/np.sum(value[:,j],axis=0)#沿轴
print(p)
e=-1/np.log(len(project))*sum(p*np.log(p)) #计算熵值
g=1-e # 计算一致性程度
w=g/sum(g) #计算权重
return w
if __name__ == '__main__':
##读取数据
data=pd.read_csv('./data.csv',encoding='utf-8',index_col=0)
data.dropna()
indicator=data.columns.tolist() ##指标个数
project=data.index.tolist() ##方案数、评价主体
value=data.values
print(indicator)
print(project)
print(value)
print(data.head())
##数据标准化
flag=["-","+","-","+","+","+"] ##表示指标为正向指标还是反向指标
std_value=std_data(value,flag)
std_value.round(3)
##结果
w=cal_weight(indicator,project,std_value)
w=pd.DataFrame(w,index=data.columns,columns=['权重'])
print("#######权重:#######")
print(w)
score=np.dot(std_value,w).round(2)
score=pd.DataFrame(score,index=data.index,columns=['综合得分']).sort_values(by =['综合得分'],ascending = False)
print(score)
Vantagens e desvantagens do método de peso de entropia
1. Vantagens
Em primeiro lugar, o método do peso de entropia é um método para determinar objetivamente o peso, que tem certa precisão em comparação com métodos subjetivos como o AHP; em segundo lugar, o peso
determinado por este método pode ser modificado, determinando assim a sua adaptabilidade. características.
2. Desvantagens
O âmbito de aplicação deste método é limitado e só é adequado para cálculo de pesos.
referência:
https://www.zhihu.com/question/274997106/answer/1222518795
https://blog.csdn.net/ziyin_2013/article/details/116496411