优劣解距离法-TOPSIS
优劣解距离法-TOPSIS
一、建模
TOPSIS进行建模,大致分为以下四个步骤:
- 将原始矩阵正向化
- 将正向化矩阵标准化
- 计算得分并归一化
个人感觉跟熵权法是有很多的相通之处的,二者应该可以相互混着用。
矩阵正向化
在生活中,常见的指标有四种:
| 指标名称 | 指标特点 | 例子 |
|---|---|---|
| 极大型(效益型)指标 | 越大(多)越好 | 成绩、GDP增速、企业利润 |
| 极小型(成本型)指标 | 越小(少)越好 | 费用、坏品率、污染程度 |
| 中间型指标 | 越接近某个值越好 | 水质量评估时的PH值 |
| 区间型指标 | 落在某个区间最好 | 体温、水中植物性营养物量 |
那么,在TOPSIS方法中,就是要将所有指标进行统一正向化,即统一转化为极大型指标。那么就需要极小型、中间型以及区间型的指标进行转化为极大型指标。
极小型转极大型:
$$
x_{new}= \frac{\max - x_i}{\max - \min}
$$
如果所有的元素均为正数,那么也可以使用:
$$
x_{new}=\frac{1}{x_i}
$$
中间型转极大型: 指标值既不要太大也不要太小,取某特定值最好(如水质量评估PH值)。设${x_i}$是一组中间型指标序列,且最佳的数据为 $x_{best}$,那么正向化的公式如下:
$$
M = \max{|x_i - x_{best}|}
$$
$$
\bar{x}i = 1 - \frac{|x_i - x{best}|}{M}
$$
区间型指标: 指标值落在某个区间内最好,例如人的体温在36°~37°这个区间比较好。设${x_i}$是一组区间型指标序列,且最佳的区间为$[a,b]$,那么正向化的公式如下:
$$
M = \max{a - \min{x_i}, \max{x_i} - b},\ \tilde{x}_i =
\begin{cases}
1 - \frac{a - x_i}{M}, & x_i < a \
1, & a \leq x_i \leq b \
1 - \frac{x_i - b}{M}, & x_i > b
\end{cases}
$$
实际上这里跟熵权法里面讲过的那个正向化基本上一模一样,具体见熵权法
矩阵标准化
标准化的目的就是消除不同量纲的影响。
假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化矩阵如下:
$$
X =
\begin{bmatrix}
x_{11} & x_{12} & \cdots & x_{1m} \
x_{21} & x_{22} & \cdots & x_{2m} \
\vdots & \vdots & \ddots & \vdots \
x_{n1} & x_{n2} & \cdots & x_{nm}
\end{bmatrix}
$$
那么对其标准化后的矩阵记为Z,Z的每一个元素:
$$
z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}x_{ij}^2}}
$$
标准化矩阵Z:
$$
Z =
\begin{bmatrix}
z_{11} & z_{12} & \cdots & z_{1m} \
z_{21} & z_{22} & \cdots & z_{2m} \
\vdots & \vdots & \ddots & \vdots \
z_{n1} & z_{n2} & \cdots & z_{nm}
\end{bmatrix}
$$
注意:标准化的方法不唯一,但目的都是为了去量纲。比如熵权法那一章就还介绍过存在负数时直接上
$$
z_{ij} = \frac{x_{ij} - \min{x_{1j}, x_{2j}, \ldots, x_{nj}}}{\max{x_{1j}, x_{2j}, \ldots, x_{nj}} - \min{x_{1j}, x_{2j}, \ldots, x_{nj}}}
$$
计分归一化
最大值:
$$
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^- = (\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}})
$$
定义第 $i(i = 1,2,…,n)$个评价对象与最大值的距离:
$$
D_i^+ = \sqrt{\sum_{j=1}^{m}(Z_j^+ - z_{ij})^2}
$$
定义第 $i(i = 1,2,…,n)$ 个评价对象与最小值的距离:
$$
D_i^- = \sqrt{\sum_{j=1}^{m}(Z_j^- - z_{ij})^2}
$$
那么,我们可以计算得出第 $i(i = 1,2,…,n)$ 个评价对象未归一化的得分:
$$
S_i = \frac{D_i^-}{D_i^+ + D_i^-}
$$
很明显 $0 \leq S_i \leq 1$,且 $S_i$ 越大 $D_i^+$ 越小,即越接近最大值。
二、扩展
权重结合
上述过程默认了各项指标的权重相同,但在实际的评价中指标都是有各自的权重,因此应该用权重对公式进行修正,修正后的公式如下,ω代表权重。
$$
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}
$$
这里就可以直接上熵权法,当然,专家瞎打分也不是不行。
本质推导
公式:
$$
S_i = \frac{D_i^-}{D_i^+ + D_i^-}
$$
实际上是:
$$
\frac{x - \min}{\max - \min} \rightarrow \frac{x - \min}{(\max - x) + (x - \min)} \rightarrow \frac{x与最小值的距离}{x与最大值的距离 + x与最小值的距离}
$$
$D_i^+$与$D_i^-$实际上是欧氏距离,这个的本质思想和熵权法的实际上是有很多的相同之处的。