熵权法是一种客观赋权方法。(客观 = 数据本身就可以告诉我们权重)
依据的原理:指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低。
熵权法就是根据一项指标的变化程度来分配权重的,举个例子:小张和小王是两个高中生,小张学习好回回期末考满分,小王学习不好考试常常不及格。在一次考试中,小张还是考了满分,而小王也考了满分。那就很不一样了,小王这里包含的信息就非常大,所对应的权重也就高一些。
上面的小例子告诉我们:越有可能发生的事情,信息量越少。越不可能发生的事情,信息量就越多。其中我们认为 概率 就是衡量事情发生的可能性大小的指标。
那么把 信息量 用字母 I \bf I I 表示,概率 用 p \bf p p 表示,那么我们可以将它们建立一个函数关系:
那么,假设 x 表示事件 X 可能发生的某种情况,p(x)表示这种情况发生的概率情况如上图所示,该图像可以用对数函数进行拟合,那么最终我们可以定义: I ( x ) = − ln ( p ( x ) ) I(x) = -\ln(p(x)) I(x)=−ln(p(x)),因为 0 ≤ p ( x ) ≤ 1 0 ≤ p(x) ≤ 1 0≤p(x)≤1,所以 I ( x ) ≥ 0 I(x) ≥ 0 I(x)≥0。 接下来引入正题:
信息熵的定义
假设 x 表示事件 X 可能发生的某种情况,p(x) 表示这种情况发生的概率我们可以定义: I ( x ) = − ln ( p ( x ) ) I(x)=-\ln(p(x)) I(x)=−ln(p(x)) ,因为 0 ≤ p ( x ) ≤ 1 0≤p(x)≤1 0≤p(x)≤1 ,所以 I ( x ) ≥ 0 I(x)≥0 I(x)≥0 。 如果事件 X 可能发生的情况分别为: x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,⋯,xn ,那么我们可以定义事件 X X X 的信息熵为:
H ( X ) = ∑ i = 1 n [ p ( x i ) I ( x i ) ] = − ∑ i = 1 n [ p ( x i ) ln ( p ( x i ) ) ] H(X)=\sum_{i=1}^{n}[p(x_i)I(x_i)]=-\sum_{i=1}^{n}[p(x_i)\ln(p(x_i))] H(X)=i=1∑n[p(xi)I(xi)]=−i=1∑n[p(xi)ln(p(xi))]
那么从上面的公式可以看出,信息上的本质就是对信息量的期望值。
可以证明的是: p ( x 1 ) = p ( x 1 ) = ⋯ = p ( x n ) = 1 / n \ p(x_1)=p(x_1)=\cdots = p(x_n) = {1}/{n} p(x1)=p(x1)=⋯=p(xn)=1/n 时, H ( x ) H(x) H(x) 取最大值,此时 H ( x ) = ln ( n ) H(x)=\ln(n) H(x)=ln(n)。 (n表示事件发生情况的总数)
熵权法的计算步骤大致分为以下三步:
1. 判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间(后面计算概率时需要保证每一个元素为非负数)。
假设有 n n n个要评价的对象, m m m个评价指标(已经正向化了)构成的正向化矩阵如下:
X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] X= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1m} \\ x_{21}& x_{22} & \cdots &x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{nm} \end{bmatrix} X=⎣⎢⎢⎢⎡x11x21⋮xn1x12x22⋮xn2⋯⋯⋱⋯x1mx2m⋮xnm⎦⎥⎥⎥⎤
设标准化矩阵为 Z Z Z, Z Z Z 中元素记为 z i j z_{ij} zij:
z i j = x i j ∑ i = 1 n x i j 2 z_{ij}=\frac{x_{ij}}{\sqrt{\displaystyle\sum_{i=1}^{n}{x_{ij}^2}}} zij=i=1∑nxij2xij
判断 Z Z Z 矩阵中是否存在着负数,如果存在的话,需要对 X X X 使用另一种标准化方法对矩阵 X X X 进行一次标准化得到 Z Z Z 矩阵,其标准化的公式为:
z i j = x i j − m i n { x 1 j , x 2 j , ⋯ , x n j } m a x { x 1 j , x 2 j , ⋯ , x n j } − m i n { x 1 j , x 2 j , ⋯ , x n j } z_{ij}=\frac{x_{ij} - min\lbrace x_{1j}, x_{2j},\cdots, x_{nj}\rbrace}{max\lbrace x_{1j}, x_{2j},\cdots, x_{nj} \rbrace - min\lbrace x_{1j}, x_{2j},\cdots, x_{nj} \rbrace} zij=max{ x1j,x2j,⋯,xnj}−min{ x1j,x2j,⋯,xnj}xij−min{ x1j,x2j,⋯,xnj}
这样可以保证 z i j z_{ij} zij 在 [0,1] 区间,没有负数。
2. 计算第 j 项指标下第 i 个样本所占的比重,并将其看作相对熵计算中用到的概率。
假设有 n n n 个要评价的对象, m m m 个评价指标,且经过了上一步处理得到的非负矩阵为:
Z = [ z 11 z 12 ⋯ z 1 m z 21 z 22 ⋯ z 2 m ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n m ] Z= \begin{bmatrix} z_{11} & z_{12} & \cdots &z_{1m} \\ z_{21}& z_{22} & \cdots &z_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1}& z_{n2} & \cdots &z_{nm} \end{bmatrix} Z=⎣⎢⎢⎢⎡z11z21⋮zn1z12z22⋮zn2⋯⋯⋱⋯z1mz2m⋮znm⎦⎥⎥⎥⎤
计算概率矩阵 P P P,其中 P P P 中每一个元素 p i j p_{ij} pij,的计算公式如下:
p i j = z i j ∑ i = 1 n z i j p_{ij}=\frac{z_{ij}}{\displaystyle\sum_{i=1}^{n}{z_{ij}}} pij=i=1∑nzijzij
保证每一列的加和为1,即每个指标所对应的概率和为1。
3. 计算每个指标的信息熵,并计算信息效用值,并归一化得到每个指标的熵权。
信息熵的计算:
对于第 j j j 个指标而言,其信息嫡的计算公式为:
e j = − 1 ln n ∑ i = 1 n p i j ln ( p i j ) , ( j = 1 , 2 , ⋯ , m ) e_j=-\frac{1}{\ln n}\sum_{i=1}^{n}{p_{ij}}\ln(p_{ij}), \quad(j=1,2,\cdots,m) ej=−lnn1i=1∑npijln(pij),(j=1,2,⋯,m)
这里要说明两个问题:
1. 为什么这里要除以 ln ( n ) \ln(n) ln(n) 这个常数?
在前面说过 p ( x 1 ) = p ( x 2 ) = . . . = p ( x n ) = 1 / n p(x_1)=p(x_2)=...=p(x_n)=1/n p(x1)=p(x2)=...=p(xn)=1/n 时, H ( x ) H(x) H(x) 取最大值为 ln ( n ) \ln(n) ln(n),这里除以 ln ( n ) \ln(n) ln(n) 能够使得信息嫡的始终位于 [0,1] 区间上面。
2. ej 越大,即第 j 个指标的信息嫡越大,表明第 j 个指标的信息越多还是越少?
答案是越少。当 p 1 j = p 2 j = ⋯ = p n j p_{1j} = p_{2j} =\cdots=p_{nj} p1j=p2j=⋯=pnj 时, e j e_j ej 取到最大值 1 。但是因为 p i j = z i j / ∑ i = 1 n z i j p_{ij} = z_{ij}/\displaystyle\sum_{i=1}^{n}z_{ij} pij=zij/i=1∑nzij ,所以 z 1 j = z 2 j = ⋯ = z n j z_{1j} = z_{2j} =\cdots= z_{nj} z1j=z2j=⋯=znj,即 所有样本的这个指标值都相同。 指标相同意味着这个指标的数据没有变化,也就是 信息少! 因此需要将其倒转,即计算信息效用值。
信息效用值的定义:
d j = 1 − e j d_j=1-e_j dj=1−ej
那么信息效用值越大,其对应的信息就越多。
将信息效用值进行归一化,我们就能够得到每个指标的 熵权 :
ω j = d j ∑ j = 1 m d j , ( j = 1 , 2 , 3 , ⋯ , m ) \omega_j=\frac{d_j}{\displaystyle\sum_{j=1}^{m}d_j},\quad(j=1,2,3,\cdots,m) ωj=j=1∑mdjdj,(j=1,2,3,⋯,m)
总结一下步骤:
本文借鉴了数学建模清风老师的课件与思路,如果大家发现文章中有不正确的地方,欢迎大家在评论区留言哦~