通俗易懂的说清楚 TOPSIS逼近理想解排序法,原理,实操,案例说明讲解
通俗易懂的说清楚 TOPSIS逼近理想解排序法,原理,实操,案例说明讲解
1.基础概念
C.LJwang和K.Yoon于1981年首次提出 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法。在国内常简称为优劣解距离法。
TOPSIS法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
TOPSIS法引入了两个基本概念:
理想解:设想的最优的解(方案),它的各个属性值都达到各备选方案中的最好的值;
负理想解:设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。
方案排序的规则
是把各备选方案与理想解和负理想解做比较,若其中有一个方案最接近理想解,而同时又远离负理想解,则该方案是备选方案中最好的方案。TOPSIS通过最接近理想解且最远离负理想解来确定最优选择。
例如问题:
你想要找个对象,但喜欢你的人太多,不知道怎么选,下面是你的三个候选人
理想情况下:
最好的对象应该是颜值9,脾气3。
最差的对象应该是颜值6,脾气10。
那么可以把这几个点映射到一个二维空间中,其中距离最好点最近或者距离最差点最远的的就是综合条件最好的
最好的(9,3) ,最差的就是(6,10)。注意是现有数据里面推出来最好的和最差的。
2.模型原理与基本步骤
2.1模型原理
TOPSIS法是一种理想目标相似性的顺序选优技术,在多目标决策分析中是一种非常有效的方法。它通过归一化后(去量纲化)的数据规范化矩阵,找出多个目标中最优目标和最劣目标(分别用理归想一解化和反理想解表示),分别计算各评价目标与理想解和反理想解的距离,获得各目标与理想解的贴近度,按理想解贴近度的大小排序,以此作为评价目标优劣的依据。贴近度取值在0~1之间,该值愈接近1,表示相应的评价目标越接近最优水平;反之,该值愈接近0,表示评价目标越接近最劣水平。
2.2 基本步骤
2.2.1.将原始矩阵正向化
将原始矩阵正向化,就是要将所有的指标类型统一转化为极大型指标。
这是由于有很多时候,有些指标的好坏的评价并不是统一的
比如有的时候利润肯定是越大越好,说明我们挣到钱了。那成本的话,就肯定是越小越好,因为这样我们的利润就更高了。这两个就是典型的评价的。
还有一些指标可能是趋近某个区间、某个数值是最好的,最典型是就是PH值。
有的时候我们要的就是PH值为中性的值,所以也就不是越大或者越小就最好
2.2.2.正向矩阵标准化
标准化的方法有很多种,其主要目的就是去除量纲的影响,保证不同评价指标在同一数量级,且数据大小排序不变。
就比如找对象,一个指标可能是工资的多少,一个指标是这个身高。那工资和身高明显差距太大了,如果没有映射到一个区间。可能一个矮的离谱的人1.3,1.5万工资,就比1.88米的1.4万收入的人排序就更高的。
2.2.3.计算得分并归一化
$$
S_i = \frac{D_i^-}{D_i^+ + D_i^-}
$$
其中$S_i$为得分,$D_i^+$为评价对象与最大值的距离,$D_i^-$为评价对象与最小值的距离
2.4 指标类型
现在你要找一个选项,之前是光考虑了颜值和脾气,现在你觉得光靠颜值和脾气可能考虑的还不够全面,就又加上了身高和体重两个指标。
而且咱们暂时定在认为身高165是最好,体重在90-100斤是最好。
一定要注意我们这里是指标作为列,备选的人作为行数据,不要自己的数据进来算的时候,弄颠倒了。
那么从上面的指标就可以将指标映射到下面这几类指标下:
那可看出指标有4中类型,极大、极小和中间型、区间型
3.实际操作说明
3.1原始矩阵正向化-4类指标
将原始矩阵正向化,就是要将所有的指标类型统一转化为极大型指标
那么我们看下面的指标,就可以发现颜值是一个极大型指标,那么就可以不用转换成为极大型指标了。
脾气是一个极小型指标,那么就需要将其转为极大型。这个就很简单,就是把它倒过来就是极大型,将最大值变成0。
找到对应列的最大值max=10。 max-10=0。那么3就变为了max-3=7。最小变最大,最大变最小。
咱们暂时定在认为身高165是最好,体重在90-100斤是最好
身高是一个中间型指标,假设我们希望最理想的身高是165=Xbest。
每一列减去Xbest:|175-165| 、 |164-165|、|157-165| 的最大值是10
那么M就是10;
1- |175-165|/10 = 0
1- |164-165|/10 = 9/10 可以看到最远的变成了0,最近的接近了1.
同理,区间型的就可以按照区间的公式进行计算,要有一个最佳的区间[a,b] 的 值。体重在90-100斤是最好,[90,100]
也是要找到M。 M=max{90- 90,120-100} 那么M=20
然后用后面的公式计算区分当前值在是小于最小值90,还是大于最大值100,以及在区间内计算
经过下面的计算,就可以得到正向化后的矩阵:
3.2正向化矩阵转为标准化矩阵Z
标准化的目的是消除不同指标量纲的影响
标准化后,还需给不同指标加上权重,采用的权重确定方法有层次分析法、嫡权法、Delphi法、对数最小二乘法等。
这里呢就是TOPSIS和各种权重方法结合的评价方法了,比如论文中常见的就是嫡权+TOPSIS。自己可以后续去继续学习。
在这里先暂时认为各个指标的权重相同,不做过多的分析了。
通过上面的公式作为将正向化矩阵转为标准化矩阵Z
3.3标准化矩阵Z-得分计算
当我们得到上面的标准化矩阵Z的时候,我们就可以根据标准话的矩阵,计算出其与最优和最差解之间的距离了。
为了方便说明,将上面的标准化矩阵Z用下面的矩阵来表示:
3.3.1 获得Z + Z^+Z+的集合和最小值Z − Z^-Z−
那么计算最大值Z + Z^+Z+的集合和最小值Z − Z^-Z−的集合。通过这两个来算距离
注意啊Z + Z^+Z+是集合,不是一个值,同理Z − Z^-Z−
$$
Z^+ = (Z_1^+, Z_2^+, \ldots, Z_m^+) = \left( \max{Z_{11}, Z_{21}, \ldots, Z_{n1}}, \max{Z_{12}, Z_{22}, \ldots, Z_{n2}}, \ldots, \max{Z_{1m}, Z_{2m}, \ldots, Z_{nm}} \right)
$$
$$
Z^- = (Z_1^-, Z_2^-, \ldots, Z_m^-) = \left( \min{Z_{11}, Z_{21}, \ldots, Z_{n1}}, \min{Z_{12}, Z_{22}, \ldots, Z_{n2}}, \ldots, \min{Z_{1m}, Z_{2m}, \ldots, Z_{nm}} \right)
$$
我们可以看出来$\max { Z_{11}, Z_{21}, \ldots, Z_{n1} }$其实就是第一列的最大值,其他的就是不同列的最大值。同理$\min { Z_{11}, Z_{21}, \ldots, Z_{n1} }$
3.3.2 计算D A + D_A^+DA+ 和D A − D_A^-DA− 值
那么有上面的方法,我们就可以开始算了D A + D_A^+DA+ 和D A − D_A^-DA− 值:
$D_A^+$定义第i $(i = 1,2,... ,n)$个评价对象与最大值的距离
$$
D_i^+ = \sqrt{\sum_{j=1}^{m} (Z_j^+ - z_{ij})^2}
$$
$D_A^-$定义第i $(i = 1,2,... ,n)$个评价对象与最小值的距离
$$
D_i^- = \sqrt{\sum_{j=1}^{m} (Z_j^- - z_{ij})^2}
$$
计算说明
现在下面这个已经标准化后的矩阵
$Z^+ = [0.669, 0.919.0.917 , 0.894]$
那么开始算每个人与每个指标最优值之间的距离之和:
A 的计算就是:
$$
D_A^+= \sqrt{(0.669-0.669)^2 + (0-0.919)^2+(0-0.976)^2+(0-0.894)^2}
$$
同理,可以计算出每个对象的$D_A^+$ 和$D_A^-$ 值
3.3.3 计算具体得分S i S_iSi 值
$S_i$是每个对象的综合得分:
$$
S_i = \frac{D_i^-}{D_i^+ + D_i^-}
$$
3.3.4 得分S i S_iSi 换算为百分制
根据下面的公式,将其转为百分制。
我个人觉得换不换都无所谓,都可以体现排序了。
$$
\widetilde{S}i = \frac{S_i}{\sum{i=1}^{n} S_i} \times 100
$$
下面就是标准化矩阵转为得分数,再转为百分制得分。