评价类算法 之 Topsis优劣解距离法和熵权法权值确定

Topsis简述

TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距
基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

几何标准化

  • 消除量纲对模型的影响

对于原始数据:

X = [ a 11 … a 1 m ⋮ ⋱ ⋮ a n 1 … a n m ] n × m X=\begin{bmatrix}a_{11} & \dots & a_{1m}\\% 省略号(横纵斜)和下标的使用 \vdots& \ddots&\vdots\\ a_{n1} & \dots &a_{nm} \end{bmatrix}_{n \times m} X=a11an1a1manmn×m

进行标准化:

Z i j = x i j ∑ i = 1 n x i j 2 Z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}} Zij=i=1nxij2 xij

MATLAB代码:

X = [89,1; 60,3; 74,2; 99,0]
[n , m] = size(X)
Z = X ./ repmat(sum(X.*X) .^ 0.5, n, 1)

min-max归一化

  • 适用于指标不存在理论上的最大值和最小值,例如GDP增速
  • 适用于量纲和其他指标相比过大
  • 消除量纲对模型的影响

min-max归一化方程:

x s c a l e = x − x m i n x m a x − x m i n x_{scale}=\frac{x-x_{min}}{x_{max}-x_{min}} xscale=xmaxxminxxmin

例如:
在这里插入图片描述

正向化

在这里插入图片描述

在这里插入图片描述

中间型–>极大

中间型指标:指标值既不要太大也不要太小,取某特定值最好(如水质量评估 PH 值)

转化公式:
M = m a x ∣ x i − x b e s t ∣ M=max{|x_{i}-x_{best}|} M=maxxixbest

x ˜ i = 1 − ∣ x i − x b e s t ∣ M \text{\~{x}}_i = 1-\frac{|x_i-x_{best}|}{M} x˜i=1Mxixbest

实际上本质还是使用的是 x b e s t x_{best} xbest距离作为标准,不过Topsis定义是极大化,所以还是要进行转化的

区间型–>极大型

{ x i } \{x_i\} {xi}就是一组区间型指标序列,且最佳区间1 [ a , b ] [ a, b] [a,b],那么正向化指标公式如下:

M = m a x { a − m i n { x i } , m a x { x i } − b } M=max\{a-min\{x_i\},max\{x_i\}-b\} M=max{amin{xi},max{xi}b}
x ˜ i = { 1 − a − x i M , x i < a 1 a ≤ x i ≤ b 1 − x i − b M , x i > b \text{\~x}_i= \begin{cases} 1-\frac{a-x_i}{M}, &x_i<a\\ 1 &a\le x_i \le b\\ 1-\frac{x_i-b}{M}, &x_i>b \end{cases} x˜i=1Maxi,11Mxib,xi<aaxibxi>b

Topsis

转化min-max方法

在这里插入图片描述

Topsis步骤

在这里插入图片描述

在这里插入图片描述

思想

就是通过计算和数据样本各个指标绝对最值之间的欧式距离,然后通过min-max思想来评判样本的优劣程度

举例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

代码

X = [89,1;60,3;74,2;99,0]
[n , m] = size(X);
Z = X ./ repmat(sum(X.*X) .^ 0.5,n,1);
D_P = sum([(Z - repmat(max(Z),n,1)).^2 ],2) .^ 0.5 % D+向量
D_N = sum([(Z - repmat(min(Z),n,1)).^2 ],2) .^ 0.5 % D-向量
S = D_N ./ (D_P + D_N)

个人理解

实际上Topsis就是对于同一种目标哪个是最优的选择,就是根据当前数据样本每个特征的最优值的距离作为我们的判断指标,但是有一个致命的缺点:我们经典的Topsis算法对于每一项指标的权值默认相同的,就是说他会本质是根据每个样本在每个特征中最大绝对差值中的位置决定了在结果中距离的贡献,这可能是不是最优的选择,所以我们想在Topsis基础之上通过某种方式给每种指标一个权重,于是引入熵权法给每个指标一个权值。

熵权法

信息熵

假设 x i x_i xi 表示事件 X X X 可能发生的某种情况, p ( x i ) p(x_i) p(xi) 表示这种情况发生的概率 ,
那么我们可以定义事件 X X X 的信息熵(和机器学习中的信息熵相同)为:

H ( X ) = − ∑ i = 1 n [ p ( x i ) ln ⁡ ( p ( x i ) ) ] H(X)=-\sum_{i=1}^{n}\left[p\left(x_{i}\right) \ln \left(p\left(x_{i}\right)\right)\right] H(X)=i=1n[p(xi)ln(p(xi))]

从上面的公式可以看出,信息熵的本质就是对信息量的期望值。
可以得:
p ( x 1 ) = p ( x 2 ) = ⋯ = p ( x n ) = 1 n 时 , H ( x ) p\left(x_{1}\right)=p\left(x_{2}\right)=\cdots=p\left(x_{n}\right)=\frac{1}{n} 时, H(x) p(x1)=p(x2)==p(xn)=n1,H(x) 取最大值, 此时 H ( x ) = ln ⁡ n H(x)=\ln n H(x)=lnn

H ( X ) H(X) H(X)就是我们对于指标中的权值,在Topsis中直接引入。

熵权法步骤

数据预处理

  • 保证数据的正向化
  • 保证数据非负,通过归一化标准化处理,通常保不保证都处理一下
    假设有 n 个要评价的对象, 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=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 m} \\ x_{21} & x_{22} & \cdots & x_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n 1} & x_{n 2} & \cdots & x_{n m} \end{array}\right] X=x11x21xn1x12x22xn2x1mx2mxnm

那么, 对其标准化的矩阵记为 Z, Z 中的每一个元素: z i j = x i j / ∑ i = 1 n x i j 2 z_{i j}=x_{i j} / \sqrt{\sum_{i=1}^{n} x_{i j}^{2}} zij=xij/i=1nxij2
判断 Z 矩阵中是否存在着负数, 如果存在的话, 需要对 X 使用另一种标准化方法对矩阵 X X X 进行一次标准化得到 Z ~ \tilde{Z} Z~ 矩阵, 其标准化的公式为:

z ~ i j = x i j − min ⁡ { x 1 j , x 2 j , ⋯   , x n j } max ⁡ { x 1 j , x 2 j , ⋯   , x n j } − min ⁡ { x 1 j , x 2 j , ⋯   , x n j } \tilde{z}_{i j}=\frac{x_{i j}-\min \left\{x_{1 j}, x_{2 j}, \cdots, x_{n j}\right\}}{\max \left\{x_{1 j}, x_{2 j}, \cdots, x_{n j}\right\}-\min \left\{x_{1 j}, x_{2 j}, \cdots, x_{n j}\right\}} z~ij=max{x1j,x2j,,xnj}min{x1j,x2j,,xnj}xijmin{x1j,x2j,,xnj}

计算概率矩阵

假设有 n 个要评价的对象, 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 ] \tilde{Z}=\left[\begin{array}{cccc} \tilde{z}_{11} & \tilde{z}_{12} & \cdots & \tilde{z}_{1 m} \\ \tilde{z}_{21} & \tilde{z}_{22} & \cdots & \tilde{z}_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ \tilde{z}_{n 1} & \tilde{z}_{n 2} & \cdots & \tilde{z}_{n m} \end{array}\right] Z~=z~11z~21z~n1z~12z~22z~n2z~1mz~2mz~nm

我们计算概率矩阵 P P P , 其中 P P P 中每一个元素 p i j p_{i j} pij 的计算公式如下:
p i j = z ~ i j ∑ i = 1 n z ~ i j p_{i j}=\frac{\tilde{z}_{i j}}{\sum_{i=1}^{n} \tilde{z}_{i j}} pij=i=1nz~ijz~ij
容易验证: ∑ i = 1 n p i j = 1 \sum_{i=1}^{n} p_{i j}=1 i=1npij=1 , 即保证了每一个指标所对应的概率和为 1

计算信息熵矩阵

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_{i j} \ln \left(p_{i j}\right)(j=1,2, \cdots, m) ej=lnn1i=1npijln(pij)(j=1,2,,m)

p ( x 1 ) = p ( x 2 ) = ⋯ = p ( x n ) = 1 n p\left(x_{1}\right)=p\left(x_{2}\right)=\cdots=p\left(x_{n}\right)=\frac{1}{n} p(x1)=p(x2)==p(xn)=n1时, H ( x ) H(x) H(x) 取最大值, 此时 H ( x ) = ln ⁡ n H(x)=\ln n H(x)=lnn 除以 ln ⁡ n \ln n lnn 能够使得信息熵的始终位于 [ 0 , 1 ] [0,1] [0,1] 区间上面。

信息熵效应值和熵权

信息熵越大,包含的信息量越小,有兴趣可以看一下李航老师统计学习方法的决策树对信息熵的解释。

信息效用值的定义: d j = 1 − e j d_{j}=1-e_{j} dj=1ej
那么信息效用值越大, 其对应的信息就越多。将信息效用值进行归一化, 我们就能够得到每个指标的熵权: W j = d j / ∑ j = 1 m d j ( j = 1 , 2 , ⋯   , m ) W_{j}=d_{j} / \sum_{j=1}^{m} d_{j}(j=1,2, \cdots, m) Wj=dj/j=1mdj(j=1,2,,m)

Topsis和熵权法结合

就是将 W j W_j Wj通过和距离的结合决定和最优值的距离,相对来说比较合理,其他步骤和Topsis相同

D i + = ∑ j = 1 m W j ( Z j + − z i j ) 2 D i − = ∑ j = 1 m W j ( Z j − − z i j ) 2 \begin{array}{l} D_{i}^{+}=\sqrt{\sum_{j=1}^{m}W_j\left(Z_{j}^{+}-z_{i j}\right)^{2}} \\ D_{i}^{-}=\sqrt{\sum_{j=1}^{m}W_j\left(Z_{j}^{-}-z_{i j}\right)^{2}} \end{array} Di+=j=1mWj(Zj+zij)2 Di=j=1mWj(Zjzij)2

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「 25' h 」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值