TOPSIS--优劣解距离法

TOPSIS法–优劣解距离法

TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反应各评价方案之间的差距。
前面是根据例子来进行方法讲解,知识点在最后,想直接看知识点的同学可以直接翻到最后。

例子引入

小明寝室有4名同学,它们某一学期的高数成绩如下表所示:

姓名成绩
小明89
小王60
小李74
小张99

请你为这四名同学进行评分,该评分能合理的描述其高数成绩的高低。
方法一
既然这里得到了成绩,我们就可以进行一个排名:

姓名成绩排名修正后的排名评分
小明89233/10=0.3
小王60411/10=0.1
小李74322/10=0.2
小张99144/10=0.4

因为排名的数字越小越好,但是评分越高越好,所以我们进行排名修正后进行归一化的到评分。
但是这里有一个弊端,就是成绩可以随意修改而的分不变,这样得到的评分就和成绩的关联性不密切,无法客观进行评价。所以方法需要改进。
方法二
在表中可以得到:
最高成绩max:99,最低成绩min:60,由此我们可以构造计算评分的公式:
x − m i n m a x − m i n \frac{x-min}{max-min} maxminxmin

姓名成绩未归一化的评分归一化的评分
小明89(89-60)/(99-60)=0.740.74/2.1=0.35
小王60(60-60)/(99-60)=00/0.21=0
小李74(74-60)/(99-60)=0.360.36/0.21=0.17
小张99(99-60)/(99-60)=11/2.1=0.48

方法三
在上面大家可能会想为什么不用卷面最高成绩100,和卷面最低成绩0呢?
x − 0 100 − 0 \frac{x-0}{100-0} 1000x0

姓名成绩未归一化的评分归一化的评分
小明890.890.28
小王600.600.19
小李740.740.23
小张990.990.30

这样的话得出的评分会与成绩的关系性更强,但是相比于方法二有哪些不同呢?
① 方法二中最后一名的评分是0,第一名的评分是1,但是中间的数值没有太大影响,在实际操作时,比较的对象一般远大于两个,所以影响并不大。
② 比较的指标也不往往是一个方面,好比小王得了60分,第二种的评分是0,但是加入其他指标之后小王可能不再是最后一名,评分也就不再会是0。
③ 我认为是最重要的一点,很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP增速,在遇到这种没有理论最大值的指标时,我们无法使用其上下限来进行计算,也就是无法使用方法三。
所以我们得到构造计算评分的公式为
x − m i n m a x − m i n \frac{x-min}{max-min} maxminxmin

对于多个指标的处理方法

下面开始多个指标的处理,如下表所示,我们应该怎样进行评分和排名呢?

姓名成绩逃课次数
小明892
小王600
小李741
小张993

一、正向化处理

姓名成绩逃课次数
小明892
小王600
小李741
小张993

成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)
逃课次数是越少(越小)越好,这样的指标称为极小型指标(成本型指标)
指标正向化:在使用计算评分公式时需要将所有的指标转化为极大型指标。极小型指标转化为极大型指标的公式:
m a x − x max-x maxx

姓名成绩逃课次数正向化后的逃课次数
小明8921
小王6003
小李7412
小张9930
指标类型极大型极小型极大型

二、标准化处理

经正向化的到的表格还是不能直接使用,因为有量纲的影响。为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理

姓名成绩正向化后的逃课次数
小明891
小王603
小李742
小张990
指标类型极大型极大型

标准化处理计算公式

假设有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{matrix} 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{matrix} \right] X=x11x21xn1x12x22xn2x1mx2mxnm
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
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

按照公式对我们已经得出的矩阵进行标准化变换
[ 89 1 60 3 74 2 99 0 ] \left[ \begin{matrix} 89 & 1 \\ 60 & 3\\ 74& 2\\ 99&0 \end{matrix} \right] 896074991320
标准化之后得到的矩阵为:
[ 0.5437 0.2673 0.3665 0.8018 0.4520 0.5345 0.6048 0 ] \left[ \begin{matrix} 0.5437 & 0.2673 \\ 0.3665 & 0.8018\\ 0.4520& 0.5345\\ 0.6048&0 \end{matrix} \right] 0.54370.36650.45200.60480.26730.80180.53450

三、计算得分

当我们只有一个指标时计算评分的公式已经给出,我们对其变形,并推测其在多个指标时的公式
x − m i n m a x − m i n = x − m a x ( m a x − x ) + ( x − m i n ) \frac{x-min}{max-min}=\frac{x-max}{(max-x)+(x-min)} maxminxmin=(maxx)+(xmin)xmax
可 以 看 作 : x 与 最 小 值 的 距 离 x 与 最 大 值 的 距 离 + x 与 最 小 值 的 距 离 可以看作:\frac{x与最小值的距离}{x与最大值的距离+x与最小值的距离} x+xx
下面我们开始定义最大值、最小值、对象与最大值、最小值之间的距离
对于标准化后的矩阵Z有:
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= \left[ \begin{matrix} 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{matrix} \right] Z=z11z21zn1z12z22zn2z1mz2mznm

定义最大值: Z + = ( Z 1 + , Z 2 + , . . . , Z m + ) Z^+=(Z_1^+,Z_2^+,...,Z_m^+) Z+=(Z1+,Z2+,...,Zm+)
定义最小值: Z − = ( Z 1 − , Z 2 − , . . . , Z m − ) Z^-=(Z_1^-,Z_2^-,...,Z_m^-) Z=(Z1,Z2,...,Zm)

定义第i(i=1,2,…,n)个评价对象与最大值的距离为:
D i + = ∑ j = 1 m ( Z J + − z i j ) 2 D_i^+=\sqrt{\sum_{j=1}^m(Z_J^+-z_{ij})^2} Di+=j=1m(ZJ+zij)2
定义第i(i=1,2,…,n)个评价对象与最小值的距离为:
D i − = ∑ j = 1 m ( Z J − − z i j ) 2 D_i^-=\sqrt{\sum_{j=1}^m(Z_J^--z_{ij})^2} Di=j=1m(ZJzij)2
那么,我们就可以计算出第i(i=1,2,…,n)个评价对象未归一化的得分:
S i = D i − D i + + D i − S_i=\frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi
很明显, 0 ≤ S i ≤ 1 , 且 S i 越 大 D i + 越 小 , 即 越 接 近 最 大 值 。 0\leq S_i\leq 1,且S_i越大D_i^+越小,即越接近最大值。 0Si1SiDi+

下面我们根据上面的公式进行评分和排名

姓名成绩正向化后的争吵次数
小明0.54370.2673
小王0.36650.8018
小李0.45200.5345
小张0.60480

得到最大值:[0.6048,0.8018],最小值[0.3665,0]
开始计算距离:
D 小 明 + = ( 0.6048 − 0.5437 ) 2 + ( 0.8018 − 0.2673 ) 2 = 0.5380 D_{小明}^+=\sqrt{(0.6048-0.5437)^2+(0.8018-0.2673)^2}=0.5380 D+=(0.60480.5437)2+(0.80180.2673)2 =0.5380
D 小 明 − = ( 0.3665 − 0.5437 ) 2 + ( 0 − 0.2673 ) 2 = 0.3206 D_{小明}^-=\sqrt{(0.3665-0.5437)^2+(0-0.2673)^2}=0.3206 D=(0.36650.5437)2+(00.2673)2 =0.3206
D 小 王 + = ( 0.6048 − 0.3665 ) 2 + ( 0.8018 − 0.8018 ) 2 = 0.2382 D_{小王}^+=\sqrt{(0.6048-0.3665)^2+(0.8018-0.8018)^2}=0.2382 D+=(0.60480.3665)2+(0.80180.8018)2 =0.2382
D 小 王 − = ( 0.3665 − 0.3665 ) 2 + ( 0 − 0.8018 ) 2 = 0.8018 D_{小王}^-=\sqrt{(0.3665-0.3665)^2+(0-0.8018)^2}=0.8018 D=(0.36650.3665)2+(00.8018)2 =0.8018

经计算后得到了每个同学的评分和排名:

姓名D+D-未归一化的得分归一化后的得分排名
小明0.53800.32060.37340.18573
小王0.23820.80180.77090.38341
小李0.30780.54130.63750.31702
小张0.81080.23820.22910.11394

TOPSIS方法总结

第一步:将原始矩阵正向化

最常见的四种指标:

指标名称指标特点例子
极大型(效益性)指标越大(多)越好成绩、GDP增速、企业利润
极小型(成本型)指标越小(少)越好费用、坏品率、污染程度
中间型指标越接近某个值越好水质评估时的PH值
区间型指标落在某个区间最好体温、水中植物性营养物料

极 小 型 指 标 转 换 为 极 大 型 指 标 的 公 式 : m a x − x 极小型指标转换为极大型指标的公式:max-x maxx
中间型指标转换为极大型指标
有{xi}是一组中间型指标序列,且最佳的数值为xbest,那么正向化的公式如下:
M = m a x ∣ x i − x b e s t ∣ , x i ∗ = 1 − ∣ x i − x b e s t ∣ M M=max{|x_i-x_{best}|} , x_i^*=1-\frac{|x_i-x_{best}|}{M} M=maxxixbest,xi=1Mxixbest
区间型指标转换为极大型指标
有{xi}是一组中间型指标序列,且最佳的区间为[a,b],那么正向化的公式如下:

M=max{a-min{xi},max{xi}-b}

X i ∗ = { 1 − a − x M x < a 1 a ≤ x ≤ b 1 − x − b M x > b X^{*}_i=\left\{ \begin{array}{rcl} 1-\frac{a-x}{M} & & {x < a}\\ 1 & & {a \leq x \leq b}\\ 1-\frac{x-b}{M} & & {x>b} \end{array} \right. Xi=1Max11Mxbx<aaxbx>b

第二步:将正向化矩阵标准化

矩阵标准化的目的是消除不同指标量纲的影响。
假设有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{matrix} 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{matrix} \right] X=x11x21xn1x12x22xn2x1mx2mxnm
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
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

第三步:计算并归一化

对于标准化后的矩阵Z有:
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= \left[ \begin{matrix} 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{matrix} \right] Z=z11z21zn1z12z22zn2z1mz2mznm

定义最大值: Z + = ( Z 1 + , Z 2 + , . . . , Z m + ) Z^+=(Z_1^+,Z_2^+,...,Z_m^+) Z+=(Z1+,Z2+,...,Zm+)
定义最小值: Z − = ( Z 1 − , Z 2 − , . . . , Z m − ) Z^-=(Z_1^-,Z_2^-,...,Z_m^-) Z=(Z1,Z2,...,Zm)

定义第i(i=1,2,…,n)个评价对象与最大值的距离为:
D i + = ∑ j = 1 m ( Z J + − z i j ) 2 D_i^+=\sqrt{\sum_{j=1}^m(Z_J^+-z_{ij})^2} Di+=j=1m(ZJ+zij)2
定义第i(i=1,2,…,n)个评价对象与最小值的距离为:
D i − = ∑ j = 1 m ( Z J − − z i j ) 2 D_i^-=\sqrt{\sum_{j=1}^m(Z_J^--z_{ij})^2} Di=j=1m(ZJzij)2
那么,我们就可以计算出第i(i=1,2,…,n)个评价对象未归一化的得分:
S i = D i − D i + + D i − S_i=\frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi
很明显, 0 ≤ S i ≤ 1 , 且 S i 越 大 D i + 越 小 , 即 越 接 近 最 大 值 。 0\leq S_i\leq 1,且S_i越大D_i^+越小,即越接近最大值。 0Si1SiDi+

带权重的TOPSIS

有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 ] Z= \left[ \begin{matrix} 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{matrix} \right] Z=z11z21zn1z12z22zn2z1mz2mznm
可以使用层次分析法给这m个评价指标确定权重:
∑ j = 1 m w j = 1 \sum^m_{j=1}w_j=1 j=1mwj=1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值