TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)
即逼近理想解排序法,或优劣解距离法
目录
1 TOPSIS算法的优势
这里对照层次分析法局限性来看
- 层次分析法中决策层不能太多,不然N太大,判断矩阵和一致性矩阵差异会很大,而且平均随机一致性指标RI的表格中n最多也只有15。
- 层次分析法中的数据是“专家”给出的,会有很强的主观性(从层次分析法的笔记可以看出来)。TOPSIS算法一般用于题目给好了数据,或者数据来的很客观,然后根据客观数据进行评价。
2 引例
我们给出四个人的成绩与对应的排名:
如果要依据排名进行评分的话,排名当然是越小越好,但是评分是越大越好,所以我们进行一个修正。
修正方法很简单捏,如上图所示, 评分其实就是归一化。
但是不难发现一个问题:
即使小王和清风成绩发生了变化,评分也不会改变,也就是说刚刚的算法与成绩相关性不强。
那么我们不妨这样来评分:
我们用每个人的成绩减去最小的成绩,得到一组新的数,但是数字太大了,我们再除以最大值减去最小值,这样子所有的数字就都存在于0到1之间了,最后归一化:
但是这样子会出现一个问题,最后一名的评分永远是0,第一名的评分永远是1,无论他的成绩怎么变化,评分都不变,我们不妨设想一种这样子的解决办法:
我们不使用样本最高分与最低分,我们用100和0,这样子得到如图:
但是不难发现这种方法的问题:
- ⭐核心问题:不一定存在理论上的最大与最小,例如GDP增速。
- 比较对象中只有第一名和最后一名得分不变,其余都会变。
- 指标也往往不是一个方面,倘若指标大于两个,不变的情况就更少了(现在不理解没关系,接着看)。
现在我们加一个指标:
可以看出两个指标有明显的区别:
成绩是越高越好,即极大型指标(效益型指标)
而与他人争吵的次数越少越好,即极小型指标(成本型指标)
那么为了方便处理,我们来统一一下类型:
即指标正向化(论文里用到的话要写明方法)
现在我们可以直接把成绩和争吵次数相加,然后计算得分嘛?
显然不可以,量纲都不一样,所以接下来我们消去量纲(标准化):
即用元素除以所在列的元素平方和开根号
标准化后如下:
但是如何计算得分呢?
我们先来看一下只有一个指标的时候
也就是所谓的优劣解距离
那我们类比一下:
假设矩阵n行m列,我们现在只要明确最小值是什么,最大值是什么,x与最小值的距离,x与最大值的距离就好。
n个要评价的对象就是n行,m个评价的指标就是m列,那怎么定义最小值呢?
原来只有一个指标时,最小值就是那一列里面最小的,那现在我们把它拓展一下:
我们把每列的最小值都拿出来,组成一个向量,这个就是我们的新的最小值(最大值同理)
那怎么定义x与最小值的距离呢?
比如我们取第i行,那第i个指标与最小值的距离,不就是欧氏距离嘛
注意到这里默认权重是相同的
从这里不难看出,想让成绩改变而得分不变,只有当正好每列最大值/最小值出现再同一行时才可能,而随着指标的增加,这种情况发生的概率会越来越小。
好的那么我们回到原来的问题:如何计算得分
结果如下:
3 算法步骤
3.1 第一步:原始矩阵正向化
最常见的四种指标:
而正向化就是统一成越大越好就行,转换形式不唯一
3.1.1 极小型转到极大型
不过有0的话也没办法取倒数,这里主要是想说明转化方式不止一种。
3.1.2 中间型到极大型
什么意思捏:
这样会让所有的数据都限制在0到1上
而越接近xbest就越好,我们就想让正向化之后的数据越大,那你看,如果Xi越接近Xbest,那样是不是绝对值会越小,那么再来一步极小型转极大型就可以了,即:
例如:
3.1.3 区间型转极大型
与刚刚类似:
距离区间越近得分越高,与刚刚思路一致,我们来看一个例子:
3.2 第二步:标准化(消除量纲)
3.3 第三步:归一化
关于权重问题,可以用层次分析法来确定权重,即带权重的TOPSIS方法。