Topsis优劣解距离法

  • Topsis简述
  • 几何标准化
  • min-max归一化
  • 正向化
  • 中间型-->极大
  • 区间型-->极大型
  • Topsis
  • 转化min-max方法
  • Topsis步骤
  • 思想
  • 举例
  • 代码
  • 个人理解
  • 熵权法
  • 信息熵
  • 熵权法步骤
  • 数据预处理
  • 计算概率矩阵
  • 计算信息熵矩阵
  • 信息熵效应值和熵权
  • Topsis和熵权法结合


Topsis简述

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

几何标准化

  • 消除量纲对模型的影响

对于原始数据:

TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis

进行标准化:

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_02

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归一化方程:

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_03

例如:

TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_04

正向化

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_05

TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_06

中间型–>极大

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

转化公式:
TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_07

TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_08

实际上本质还是使用的是TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_09距离作为标准,不过Topsis定义是极大化,所以还是要进行转化的

区间型–>极大型

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_10就是一组区间型指标序列,且最佳区间1TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_11,那么正向化指标公式如下:

TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_12
TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_13

Topsis

转化min-max方法

TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_14

Topsis步骤

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_15

TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_16

思想

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

举例

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_17

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_18

TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_19


TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_20

代码

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基础之上通过某种方式给每种指标一个权重,于是引入熵权法给每个指标一个权值。

熵权法

信息熵

假设 TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_21 表示事件 TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_22 可能发生的某种情况, TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_23 表示这种情况发生的概率 ,
那么我们可以定义事件 TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_22

TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_25

从上面的公式可以看出,信息熵的本质就是对信息量的期望值。
可以得:
TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_26 取最大值, 此时 TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_27

TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_28就是我们对于指标中的权值,在Topsis中直接引入。

熵权法步骤

数据预处理

  • 保证数据的正向化
  • 保证数据非负,通过归一化标准化处理,通常保不保证都处理一下
    假设有 n 个要评价的对象, m 个评价指标(已经正向化了)构成的正向化矩阵如下:
    TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_29

那么, 对其标准化的矩阵记为 Z, Z 中的每一个元素: TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_30
判断 Z 矩阵中是否存在着负数, 如果存在的话, 需要对 X 使用另一种标准化方法对矩阵 TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_22 进行一次标准化得到 TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_32

TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_33

计算概率矩阵

假设有 n 个要评价的对象, m 个评价指标, 且经过了上一步处理得到的非负矩阵为:
TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_34

我们计算概率矩阵 TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_35 , 其中 TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_36 中每一个元素 TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_37 的计算公式如下:
TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_38
容易验证: TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_39

计算信息熵矩阵

TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_40

TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_41时, TOPSIS_熵权法在python 熵权法topsis的优缺点_数学建模_42 取最大值, 此时 TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_27 除以 TOPSIS_熵权法在python 熵权法topsis的优缺点_原始数据_44 能够使得信息熵的始终位于 TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_45

信息熵效应值和熵权

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

信息效用值的定义: TOPSIS_熵权法在python 熵权法topsis的优缺点_TOPSIS_熵权法在python_46
那么信息效用值越大, 其对应的信息就越多。将信息效用值进行归一化, 我们就能够得到每个指标的熵权: TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_47

Topsis和熵权法结合

就是将TOPSIS_熵权法在python 熵权法topsis的优缺点_Topsis_48通过和距离的结合决定和最优值的距离,相对来说比较合理,其他步骤和Topsis相同

TOPSIS_熵权法在python 熵权法topsis的优缺点_熵权法_49