TOPSIS
基本步骤
- 将原始矩阵正向化 (转换为极大型指标)
- 正向矩阵标准化 (消除量纲的影响)
- 计算得分并归一化
将原始矩阵正向化
现实生活中主要是这么几种指标,为了适合使用TOPSIS,都需要转换成极大型指标。
转换规则如下:
极小值指标:用最大值减去属性值即可。
中间值指标:自己选定一个最优中间值,计算出离中间值的距离与最大距离的占比。
区间型指标:选定一个最佳区间,算出离双端的最大距离,计算出离最近一端所占的比值。
如:
身高为中间值指标,设取的中间值为165。M=175-165=10。B的转换值为
1
−
∣
164
−
165
∣
10
=
0.9
1- \frac{|164-165|}{10} = 0.9
1−10∣164−165∣=0.9。
体重为区间型指标,设区间为[90,100]。M=120-100-20。B的转换值为
1
−
∣
80
−
90
∣
20
=
0.5
1-\frac{|80-90|}{20} = 0.5
1−20∣80−90∣=0.5。
正向矩阵标准化
主要是为了消除量纲的影响,比如:1000km和38℃,如果不进行标准化,1000km的影响会远大于38℃。
标准化公式为:
Z
i
j
=
x
i
j
∑
i
=
1
n
x
i
j
2
Z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}x_{ij}^2}}
Zij=∑i=1nxij2xij
也就是每个元素 除以 该列所有元素的平方合开根号。
比如A的颜值:
9
9
2
+
8
2
+
6
2
≈
0.669
\frac{9}{\sqrt{9^2+8^2+6^2}} \approx 0.669
92+82+629≈0.669
计算得分并归一化
计算得分:
取每列的最大值和最小值分别组成 Z + Z^+ Z+和 Z − Z^- Z−,也就是最好的点和最差的点。
计算每个点到最好的和最差点的欧式距离 D i + D_i^+ Di+和 D i − D_i^- Di−。
计算得分 S i = D i − D i + + D i − S_i = \frac{D_i^-}{D_i^+ + D_i^-} Si=Di++Di−Di−
进行归一化转换成百分比:
进行归一化的主要目的是为了转换成百分比。
S i ~ = S i ∑ i = 1 n S i ∗ 100 \tilde{S_i} = \frac{S_i}{\sum_{i=1}^{n}S_i}*100 Si~=∑i=1nSiSi∗100
也就是每个元素除以每列的和。
比如:
上图中 Z + = ( 0.669 , 0.919 , 0.976 , 0.894 ) Z^+=(0.669,0.919,0.976,0.894) Z+=(0.669,0.919,0.976,0.894), Z − = ( 0.446 , 0 , 0 , 0 ) Z^-=(0.446,0,0,0) Z−=(0.446,0,0,0)
A的颜值:
D
i
+
=
(
0.669
−
0.669
)
2
+
(
0.919
−
0
)
2
+
(
0.976
−
0
)
2
+
(
0.894
−
0
)
2
=
1.611
D_i^+=\sqrt{(0.669-0.669)^2+(0.919-0)^2+(0.976-0)^2+(0.894-0)^2} = 1.611
Di+=(0.669−0.669)2+(0.919−0)2+(0.976−0)2+(0.894−0)2=1.611
D
i
−
=
(
0.446
−
0.669
)
2
+
(
0
−
0
)
2
+
(
0
−
0
)
2
+
(
0
−
0
)
2
=
0.223
D_i^-=\sqrt{(0.446-0.669)^2+(0-0)^2+(0-0)^2+(0-0)^2} = 0.223
Di−=(0.446−0.669)2+(0−0)2+(0−0)2+(0−0)2=0.223
S
i
=
0.223
0.223
+
1.611
=
0.122
S_i = \frac{0.223}{0.223+1.611}=0.122
Si=0.223+1.6110.223=0.122
同理计算出其他的,进行归一化:
S
i
~
=
0.122
0.122
+
0.624
+
0.622
=
8.9
%
\tilde{S_i} = \frac{0.122}{0.122+0.624+0.622} = 8.9\%
Si~=0.122+0.624+0.6220.122=8.9%