TOPSIS 法 (Technique for Order Preference by Similarity to Ideal Solution)
可翻译为逼近理想解排序法,也称优劣解距离法
TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确的反映各评价方案之间的差距

# 层次分析法的局限性

1) 决策层不能太多,太多 n 会很大,潘多矩阵和一致矩阵差距大
2)对于已知的指标数据,我们如何利用数据使之更加准确

# 一个例子

对于如下表格

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

对于这种评价系统我们可以发现,只要保证排名不变,那么评分就不会改变

# 优化的想法

我们可以取最高的成绩 max = 99
最低的成绩 min = 60
构造计算评分的公式: (x - min) / ( max - min )
然后对于每一个数据进行归一化处理即可
但同时最高分与最低分的评价是一定的,1&0

# 说明

为什么不直接将各自的分数除以 100 再进行归一化处理,这样对于数据的关联性还更强
原因有三点

  1. 比较对象一般远大于两个
  2. 比较的指标往往不是一个方面的
  3. 有很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP 增速
    故我们最好使用上述优化的想法

# 拓展问题:增加指标个数

姓名成绩与他人争吵的次数
小明892
小王600
小张741
清风993

成绩是越大越好,这样的指标称为极大型指标(效益型指标)
与他人争吵的次数越少越好,这样的指标称为极小型指标(成本型指标)

如果我们直接将这些数据加以利用显然是不合适的,因为指标类型不一样
所以我们应当统一指标类型
一般我们将所有的指标转化为极大型称为指标正向化(最常用)

姓名成绩与他人争吵的次数正向化后的争吵次数
小明8921
小王6003
小张7412
清风9930

极小型指标转换为极大型指标的公式:max - x

# 标准化处理

显然成绩的大小与争吵次数的大小不是一个量级上的比较
为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理
图像链接:
我们得到了标准化处理后的指标,那么我们怎么去联系这些值呢

# 如何计算得分

我们对于最开始的式子:(x - min) / ( max - min )
我们可以将其变形 = (x - min) / [ ( max - x ) + ( x - min ) ]
可以看作是:x 与最小值的距离 / (x 与最大值的距离 + x 与最小值的距离)
类比可以得出:
图像链接:

上面的一大串公式可以这样理解,我们对于只有一个指标时,我们将这一列的数据找出它的最大值和最小值,对于多个指标,同理,我们先将每一列的最大值和最小值找出来。
对于每一个评价对象,我们要找出它与最小值的距离可以看成一个平面直角坐标系,它的值所对应的点距离原点(最小值)的距离长度,也就是他的我们所要找的值
对于最大值的寻找也同理

计算出未归一化的得分后我们将其进行归一化处理,就可得到他们的排名了

这下子再回到 TOPSIS 算法,我们就不难理解它为什么是优劣解距离法了吧

# 梳理

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

最常见的四种指标

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

正向化就是将所有指标类型转化为极大型指标

我们介绍了极小型转化为极大型,那么另外两种指标该如何转换呢

# 中间型指标

{xi} 是一组中间型指标序列,且最佳的数值为 xbest,那么正向化的公式如下
M = max {| xi - xbest |} , xi' = 1 - | xi - xbest | / M
我们可以画图去理解这个公式,也是利用距离去计算,思想大致与极小型相同

# 区间型指标

我们设最佳区间为 [a,b]
M = max { a - min { xi } , max { xi } - b }
xi = 1 - ( a - x ) / M , x < a
1 , a <= x <= b
1 - ( x - b ) / M , x > b
思路与中间型指标也是差不多的,画图也可以理解

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

# 第三步:归一化处理并排名

# 带权重的 TOPSIS

对于之前我们所用到的 TOPSIS 我们默认了指标之间的权重为 1 ,然而实际情况可能更为复杂
有 n 个要评价的对象,m 个评价指标的标准化矩阵
可以利用层次分析法给这 m 个评价指标确定权重,每个指标的权重加起来显然是为 1 的。
我们在计算评价对象与最大值之间的距离是可以直接针对每个 j(即每个指标)乘以响应的权重 wj 再进行开方
可能有人就要问了,那你这样加起来的距离显然是要小于之前的距离呀,会对得出正确的结论有影响吗
其实是没有影响的
我们可以理解为对于我们建立的直角坐标系对于某个轴进行了压缩,压缩后虽然大小改变了,但是并不影响我们得出正确的结论

关于 TOPSIS 的代码见下一篇博客

更新于 阅读次数