模型学习笔记06-熵权法

熵权法,物理学名词,按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合评价的影响(即权重)就越大,如果某项指标的值全部相等,则该指标在综合评价中不起作用。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。

熵权法的基本原理

熵权法是一种客观赋值方法。在具体使用的过程中,熵权法根据各指标的变异程度,利用信息熵计算出各指标的熵权,再通过熵权对各指标的权重进行修正,从而得到较为客观的指标权重。

一般来说,若某个指标的信息熵指标权重确定方法之熵权法越小,表明指标值得变异程度越大,提供的信息量越多,在综合评价中所能起到的作用也越大,其权重也就越大。

相反,若某个指标的信息熵指标权重确定方法之熵权法越大,表明指标值得变异程度越小,提供的信息量也越少,在综合评价中所起到的作用也越小,其权重也就越小。

对于任一事件(X),若已知相关信息量(I)越大,该事件的发生概率(P)也更加明确。由于信息量的增加与减少主要呈指数级趋势,因此可定义如下关系式:

I(X)=-k\ln(p(X))

x_i来表示事件X的可能情况,由此可以定义事件X的信息熵为H(X):

H(X)=\sum^n_{i=1}(P(x_i)I(x_i))=-k\sum^n_{i=1}[P(x_i)\ln(P(x_i))]

P(x_i)=\frac{1}{n}时,H(X)取最大值k\ln(n)

熵权法赋权步骤

标准化指标值

假设给定了指标矩阵X:

X=
\left[
\begin{aligned}
&x_{11}\quad x_{12}\quad .....\quad x_{1m}\\
&x_{21}\quad x_{22}\quad .....\quad x_{2m}\\
&.....\quad .....\quad .....\quad .....\\
&x_{n1}\quad x_{n2}\quad .....\quad x_{nm}\\
\end{aligned}\right]

将指标值正向化:

正向指标:x_{ij}=x_{ij}\\
负向指标:x_{ij}=\max x_{ij}-x_{ij}\\
适度指标:设最优点为a,x_{ij}=1-\frac{|x_{ij}-a|}{\max(|x_{ij}-a|)}

将指标值归一化(min-max标准化):

z_{ij}=\frac{x_{ij}-\min\{x_j\}}{\max\{x_j\}-\min\{x_j\}}+0.001\\

建立概率矩阵

根据以下公式建立概率矩阵P(说偏离度矩阵可能更加合适)。

p_{ij}=\frac{z_{ij}}{\sum^n_{i=1}z_{ij}}

计算熵权

首先根据以下公式计算标准信息熵

-\frac{1}{\ln(n)}\sum^n_{i=1}(p_{ij}\ln(p_{ij}))

再根据下述公式计算信息效用值

d_j=1-e_j

最后将信息效用值归一化,即可获得每个指标的熵权:

W_j=\frac{d_j}{\sum^m_{j=1}d_j}

熵权法赋权的Python实现

可以使用Entropy类来完成,传入参数x为数据矩阵

import numpy as np

class Entropy:
    @staticmethod
    def normalizeMatrix(matrix:np.ndarray,positive=True):
        z=np.copy(matrix)
        min_z=np.min(z,axis=0)
        max_z=np.max(z,axis=0)
        if positive==True:
            z=(z-min_z)/(max_z-min_z)+0.001
        else:
            z=(max_z-z)/(max_z-min_z)+0.001
        return z
    def __init__(self,x:np.ndarray):
        self.x=x                                                    # 数据矩阵
        self.n,self.m=self.x.shape                                  # 个体数,指标数
        self.z=self.normalizeMatrix(self.x)                         # 标准化矩阵
        self.p=self.z/np.sum(self.z,axis=0)                         # 偏离度矩阵
        self.e=-np.sum(self.p*np.log(self.p),axis=0)/np.log(self.n) # 标准信息熵
        self.d=1-self.e                                             # 信息效用值
        self.w=self.d/sum(self.d)                                   # 熵权
        import numpy as np

class Entropy:
    @staticmethod
    def normalizeMatrix(matrix:np.ndarray,positive=True):
        z=np.copy(matrix)
        min_z=np.min(z,axis=0)
        max_z=np.max(z,axis=0)
        if positive==True:
            z=(z-min_z)/(max_z-min_z)+0.001
        else:
            z=(max_z-z)/(max_z-min_z)+0.001
        return z
    def __init__(self,x:np.ndarray):
        self.x=x                                                    # 数据矩阵
        self.n,self.m=self.x.shape                                  # 个体数,指标数
        self.z=self.normalizeMatrix(self.x)                         # 标准化矩阵
        self.p=self.z/np.sum(self.z,axis=0)                         # 偏离度矩阵
        self.e=-np.sum(self.p*np.log(self.p),axis=0)/np.log(self.n) # 标准信息熵
        self.d=1-self.e                                             # 信息效用值
        self.w=self.d/sum(self.d)                                   # 熵权
        self.s=np.sum(self.x*self.w,axis=1)                         # 加权得分

关于熵权法的说明

补充

熵权法是一种通过对已知数据的处理,从而获得影响因子权重的方法,其相比于层次分析法更加的客观,但是仍有不足。

例如对于保研这个评价指标,挂科是一个影响极大的因子,成绩是一个影响稍弱的因子,但是大家挂科数量均为0。而这里我们显然不能说挂不挂科没有影响。

由此可见,熵权法更加适用于主观下影响因素差不多大的,或者没有一锤定音的影响因子存在的场合。

但是在指标评价类题中的排序方面,基本都可以使用。

推广

由于AHP法过于依赖专家经验,熵权法又只从实测数据出发,因此可通过最小二乘法对上述两种方法求得的权值进行优化拟合,形成一种主客观结合的科学评价方法。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇