TOPSIS 法 (Technique for Order Preference by Similarity to Ideal Solution)
可翻译为逼近理想解排序法,也称优劣解距离法
TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确的反映各评价方案之间的差距
# 层次分析法的局限性
1) 决策层不能太多,太多 n 会很大,潘多矩阵和一致矩阵差距大
2)对于已知的指标数据,我们如何利用数据使之更加准确
# 一个例子
对于如下表格
姓名 | 成绩 | 排名 | 修正后的排名 | 评分 |
---|---|---|---|---|
小明 | 89 | 2 | 3 | 3/10=0.3 |
小王 | 60 | 4 | 1 | 1/10=0.1 |
小张 | 74 | 3 | 2 | 2/10=0.2 |
我 | 99 | 1 | 4 | 4/10=0.4 |
对于这种评价系统我们可以发现,只要保证排名不变,那么评分就不会改变
# 优化的想法
我们可以取最高的成绩 max = 99
最低的成绩 min = 60
构造计算评分的公式: (x - min) / ( max - min )
然后对于每一个数据进行归一化处理即可
但同时最高分与最低分的评价是一定的,1&0
# 说明
为什么不直接将各自的分数除以 100 再进行归一化处理,这样对于数据的关联性还更强
原因有三点
- 比较对象一般远大于两个
- 比较的指标往往不是一个方面的
- 有很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP 增速
故我们最好使用上述优化的想法
# 拓展问题:增加指标个数
姓名 | 成绩 | 与他人争吵的次数 |
---|---|---|
小明 | 89 | 2 |
小王 | 60 | 0 |
小张 | 74 | 1 |
清风 | 99 | 3 |
成绩是越大越好,这样的指标称为极大型指标(效益型指标)
与他人争吵的次数越少越好,这样的指标称为极小型指标(成本型指标)
如果我们直接将这些数据加以利用显然是不合适的,因为指标类型不一样
所以我们应当统一指标类型
一般我们将所有的指标转化为极大型称为指标正向化(最常用)
姓名 | 成绩 | 与他人争吵的次数 | 正向化后的争吵次数 |
---|---|---|---|
小明 | 89 | 2 | 1 |
小王 | 60 | 0 | 3 |
小张 | 74 | 1 | 2 |
清风 | 99 | 3 | 0 |
极小型指标转换为极大型指标的公式: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 的代码见下一篇博客