
TOPSIS 优劣解距离法
一般用于对已有样本进行评价/排名。
引例
按照成绩对四人进行评分

思路:按照成绩进行1234的排名,然后因为评分越高越好,所以将排名逆转。
问题:
- 如果最高分和最低分变化后排名不变,此时评分也不变,但是考的分数就变了,而且与别人的评分差异不大(最低分得分0.1而不是0)
- 即评分无法很好地体现成绩的变化
-
image.png
想法一:
-
修改构造评分的公式:
-
-
max,min为样本中的最高分与最低分
-
image.png
-
- 此时未归一化的评分,最高分得分1,最低分得分0,不管最低分怎么变化,得分一直是0,和别人的评分拉开了差距。
增加指标个数
下图增加了一个指标

指标有类型,分为:
- 极大型:数值越大越好
- 极小型:数值越小越好
- 中间型:数值越靠近一个中间数值最好
- 区间型:数值在一个区间内最好
因此要对拿到的指标转化,统一指标类型,一般都化为极大型,称为指标正向化。
步骤
1. 将原始矩阵正向化
将指标类型统一转化为极大型指标
-
极小型->极大型:
或者全部为正数时:
-
中间型->极大型:
-
- 先求和最佳中间值最近的距离M,然后求每个
和最佳值的距离,再和M比较,再取反
- 先求和最佳中间值最近的距离M,然后求每个
-
区间型->极大型:
-
-
先求出max(左边和a的距离,右边和b的距离)=M,然后再按照区间有不同公式带入求分数
-
2. 正向化矩阵标准化
-
消除量纲的影响。不同指标的单位不同,因此数据数值差异很大,不利于计算,因此要标准化。
-
image.png
-
3. 计算得分并归一化
将每个样本的指标转化为两个对象:与最大值的距离和与最小值的距离,然后计算得分
-
image.png
-
使用如下公式计算得分,
i
为第i
个评价对象: -
-
最大值,是一个向量,表示由每列的最大值组成的行向量:
-
最小值,是一个向量,表示由每列的最小值组成的行向量:
-
与最大值的距离
:
-
与最小值的距离
:
-
评分:
举例:
-
image.png
我们得到处理过的矩阵Z,下面计算得分:
-
找出
(最大值)=[0.6048, 0.8018]
-
找出
(最小值)=[0.3665, 0]
-
计算
与
:
-
image.png
-
- 计算得分
-
image.png
扩展模型
带权重的TOPSIS模型:

权重可以用层次分析法得出。但是主观性比较大。
网友评论