(续上篇文章)层次分析法的局限
上一篇文章中,层次分析法有这样的局限
- 评价决策层不能太多;
- 数据是已知的的话,便无法使用层次分析法进行精确的分析评价;
因此,为对这些情况做出更为精准的分析,我们可以使用Topsis优劣解距离法。
Topsis优劣解距离法介绍
Topsis优劣解距离法是一种综合评价方法,主要优点是能够充分利用原始数据来进行分析。
主要步骤为:
- 将原始数据正向化
- 将正向化矩阵进行标准化(消除量纲的影响)
- 计算样本数据与最大值、最小值的距离
- 根据公式,利用距离计算未归一化的得分
- 最后进行排序即可
正向化简介
指标名称 | 指标特点 | 实例 |
---|---|---|
极大型指标 | 数据越大越好 | 成绩、水体氧气含量…… |
极小型指标 | 数据越小越好 | 细菌含量、水体富营养化程度…… |
中间型指标 | 数据越靠近一个中间的值越好 | PH值…… |
区间型指标 | 数据在一个区间中最好 | 人体体温、水体植物量 |
在Topsis第一步中,我们需要将数据进行正向化处理,一般的处理模式都是将其他类型指标转化为极大型指标。下面叙述转化方法:
- 极小型指标
→
\rightarrow
→ 极大型指标
转 化 公 式 为 : m a x − x 转化公式为:max-x 转化公式为:max−x同时,如果所有数据都是正数(注意正数不包含0哦~~)也可以使用公式 1 x \frac{1}{x} x1,但主要推荐使用 m a x − x max-x max−x 来转化。
(正向化公式不唯一,如果有更好的公式,欢迎告诉我,我会持续更新hhh) - 中间型指标
→
\rightarrow
→ 极大型指标
中间型指标一般会有一个最佳数值,记为 x b e s t x_{best} xbest ,设 { x i x_i xi} 是中间型指标序列,那么正向化公式为: M = m a x ∣ x i − x b e s t ∣ x i ^ = 1 − ∣ x i − x b e s t ∣ M M = max{|x_i - x_{best}|} \\ \hat{x_i} = 1 - \frac{|x_i - x_{best}|}{M} M=max∣xi−xbest∣xi^=1−M∣xi−xbest∣例如:对于PH值的正向化( x b e s t = 7 , m a x = 3 x_{best}=7, max=3 xbest=7,max=3)
PH | PH(正向化后) |
---|---|
1 | 1 − 6 3 = − 1 1-\frac{6}{3}=-1 1−36=−1 |
6 | 1 − 1 3 = 2 3 1-\frac{1}{3}=\frac{2}{3} 1−31=32 |
8 | 1 − 1 3 = 2 3 1-\frac{1}{3}=\frac{2}{3} 1−31=32 |
10 | 1 − 3 3 = 0 1-\frac{3}{3}=0 1−33=0 |
- 区间型指标
→
\rightarrow
→ 极大型指标
区间型指标一般也会有一个最佳区间 [ a , b ] [a, b] [a,b] ,同样设 { x i } \{x_i\} {xi} 是区间型指标序列,那么正向化公式为: M = m a x { a − m i n { x i } , m a x { x i − b } } x i ^ = { 1 − a − x i M , a < x i , 1 , a ≤ x i ≤ b , 1 − x i − b M , x i < b M = max\{a-min\{x_i\}, max\{x_i-b\}\} \\ \\ \hat{x_i}=\left\{ \begin{aligned} & 1-\frac{a-x_i}{M}, a<x_i, \\ \\ & 1, a \leq x_i \leq b, \\ \\ & 1-\frac{x_i-b}{M}, x_i<b \end{aligned} \right. M=max{a−min{xi},max{xi−b}}xi^=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧1−Ma−xi,a<xi,1,a≤xi≤b,1−Mxi−b,xi<b例如对于人体体温的转化:
a = 36 , b = 37 , M = m a x { 36 − 35.2 , 38.4 − 37 } = 1.4 a=36, b=37, M = max\{36-35.2, 38.4-37\}=1.4 a=36,b=37,M=max{36−35.2,38.4−37}=1.4
体温 | 提问(正向化后) |
---|---|
35.2 | 0.4286 |
35.8 | 0.8571 |
36.6 | 1 |
37.1 | 0.9286 |
37.8 | 0.4286 |
38.4 | 0 |
下面来看一个具体的例子
- 原始数据为:
姓名 | 成绩 | 过失次数 | 竞赛次数 | 总和 |
---|---|---|---|---|
小明 | 89 | 2 | 2 | 50 |
小刚 | 60 | 0 | 4 | 60 |
小张 | 74 | 1 | 6 | 70 |
小李 | 99 | 3 | 8 | 80 |
由原始数据可知,成绩指标为极大型指标,过失次数为极小型指标,竞赛次数为区间型指标,总和为中间型指标。
根据上面描述的方法可以得到正向化矩阵为:
X
=
[
89
1
0
0.5
60
3
1
1
74
2
1
0.5
99
0
0
0
]
X= \begin{bmatrix} 89 & 1 & 0 & 0.5 \\ 60 & 3 & 1 & 1 \\ 74 & 2 & 1 & 0.5 \\ 99 & 0 & 0 & 0\\ \end{bmatrix}
X=⎣⎢⎢⎡89607499132001100.510.50⎦⎥⎥⎤2. 将正向化的矩阵进行标准化去除量纲的影响
标
准
化
公
式
为
:
z
i
j
=
x
i
j
∑
i
=
1
n
x
0
2
(
每
一
个
元
素
/
其所在列的元素的平方和
)
标准化公式为:z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^n x_0^2}}(每一个元素 / \sqrt{\text{其所在列的元素的平方和}})
标准化公式为:zij=∑i=1nx02xij(每一个元素/其所在列的元素的平方和)
S
=
[
0.5437
0.2673
0
0.4082
0.3665
0.8018
0.7071
0.8165
0.4520
0.5345
0.7071
0.4082
0.6048
0
0
0
]
S=\begin{bmatrix} 0.5437 & 0.2673 & 0 & 0.4082 \\ 0.3665 & 0.8018 & 0.7071 & 0.8165 \\ 0.4520 & 0.5345 & 0.7071 & 0.4082 \\ 0.6048 & 0 & 0 & 0\\ \end{bmatrix}
S=⎣⎢⎢⎡0.54370.36650.45200.60480.26730.80180.5345000.70710.707100.40820.81650.40820⎦⎥⎥⎤
3. 将标准化矩阵进行归一化
- 求解样本数据与最大值和最小值的距离
定义最大值
Z
+
=
(
m
a
x
{
z
11
,
z
21
,
⋯
,
z
n
1
}
,
m
a
x
{
z
12
,
z
22
,
⋯
,
z
n
2
}
,
⋯
,
m
a
x
{
z
1
m
,
z
2
m
,
⋯
,
z
n
m
}
)
Z^+ = (max\{z_{11}, z_{21}, \cdots, z_{n1}\}, max\{z_{12}, z_{22}, \cdots, z_{n2}\}, \cdots, max\{z_{1m}, z_{2m}, \cdots, z_{nm}\})
Z+=(max{z11,z21,⋯,zn1},max{z12,z22,⋯,zn2},⋯,max{z1m,z2m,⋯,znm})
定义最小值
Z
−
=
(
m
i
n
{
z
11
,
z
21
}
,
⋯
,
z
n
1
}
,
m
i
n
{
z
12
,
z
22
,
⋯
,
z
n
2
}
,
⋯
,
m
i
n
{
z
1
m
,
z
2
m
,
⋯
,
z
n
m
}
)
Z^- = (min\{z_{11}, z_{21}\}, \cdots, z_{n1}\}, min\{z_{12}, z_{22}, \cdots, z_{n2}\}, \cdots, min\{z_{1m}, z_{2m}, \cdots, z_{nm}\})
Z−=(min{z11,z21},⋯,zn1},min{z12,z22,⋯,zn2},⋯,min{z1m,z2m,⋯,znm})
因此,第
i
(
i
=
1
,
2
,
⋯
,
n
)
i(i=1, 2, \cdots, n)
i(i=1,2,⋯,n)个评价对象与最大值的距离
D
i
+
=
∑
j
=
1
m
(
Z
j
+
−
z
i
j
)
2
D_i^+ = \sqrt{\sum_{j=1}^{m}(Z_j^+-z_{ij})^2}
Di+=∑j=1m(Zj+−zij)2
第
i
(
i
=
1
,
2
,
⋯
,
n
)
i(i=1, 2, \cdots, n)
i(i=1,2,⋯,n)个评价对象与最小值的距离
D
i
−
=
∑
j
=
1
m
(
Z
j
−
−
z
i
j
)
2
D_i^- = \sqrt{\sum_{j=1}^{m}(Z_j^- - z_{ij})^2}
Di−=∑j=1m(Zj−−zij)2
那么,我们可以计算出第
i
(
i
=
1
,
2
,
⋯
,
n
)
i(i=1, 2, \cdots, n)
i(i=1,2,⋯,n) 个评价对象未归一化的得分:
S
i
=
D
i
−
D
i
+
+
D
i
−
S_i = \frac{D_i^-}{D_i^+ + D_i^-}
Si=Di++Di−Di−,即:
S
t
a
n
d
_
X
=
[
0.1731
0.4240
0.3279
0.0751
]
Stand\_X=\begin{bmatrix} 0.1731\\ 0.4240\\ 0.3279\\ 0.0751\\ \end{bmatrix}
Stand_X=⎣⎢⎢⎡0.17310.42400.32790.0751⎦⎥⎥⎤
因此可以得到最终排序结果为:
姓名 | 排序 |
---|---|
小刚 | 1 |
小张 | 2 |
小明 | 3 |
小李 | 4 |
总结:
- Topsis优劣距离法的核心在于计算距离 z与最小值的距离 z与最大值的距离+z与最小值的距离 \frac{\text{z与最小值的距离}}{\text{z与最大值的距离+z与最小值的距离}} z与最大值的距离+z与最小值的距离z与最小值的距离
- 要区别归一化和标准化,前者是对计算结果计算比例,后者是去除量纲的影响。
模型拓展
Topsis模型还可以加入权重,因此可以将上一篇文章中的层次分析法应用于该模型中。只需要在计算距离时乘以权重即可。具体公式为: D i + = ∑ j = 1 m ω j ( Z j + − z i j ) 2 D i − = ∑ j = 1 m ω j ( Z j − − z i j ) 2 D_i^+ = \sqrt{\sum_{j=1}^{m}\omega_j(Z_j^+-z_{ij})^2} \\ D_i^- = \sqrt{\sum_{j=1}^{m}\omega_j(Z_j^--z_{ij})^2} Di+=j=1∑mωj(Zj+−zij)2Di−=j=1∑mωj(Zj−−zij)2( ω j \omega_j ωj为权重)
这就是Topsis优劣距离法的步骤。其中的数据处理可以使用 M a t l a b Matlab Matlab编程计算。如果有什么错误的话,烦请告知~~~
有什么建议也请告诉我哦~~~