一、TOPSIS 简介

TOPSIS 法Technique for Order Preference by Similarity to ldeal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法。

TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距

二、层次分析法的局限性

  1. 评价的决策层不能太多,太多的话 n 会很大,判断矩阵和一致矩阵差异可能会很大。
    图2.1 评价的决策层不能太多
  2. 如果决策层中指标的数据是已知的,那么我们如何利用这些数据来使得评价的更加准确呢?
    图2.2 数据已知

三、TOPSIS 法步骤

3.1 数据正向化处理

在处理数据时,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好

一般指标大致可分为一下四类:

指标名称指标特点例子
极大型指标
(效益型指标)
越大 (多) 越好成绩、GDP增速、企业利润
极小型指标
(成本型指标)
越小 (少) 越好费用、坏品率、污染程度
中间型指标越接近某个值越好水质量评估时的PH值
区间型指标落在某个区间最好体温、水中植物性营养物量

所谓正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。

3.1.1 对于极小型指标的正向化处理

参数释明

  • $\hat x_i$ 正向化数据
  • $\max$ 待处理数据中的最大值
  • $x_i$ 待处理数据

处理公式:$$\hat x_i = max - x_i$$ 或 $$\hat x_i = \frac{1}{x_i} (x_i > 0)$$

3.1.2 对于中间型指标的正向化处理

参数释明

  • $\hat x_i$ 正向化数据
  • $x_{best}$ 中间指标的值
  • $M$ 所有待处理数据中距离中间指标的最远距离
  • $x_i$ 待处理数据

处理公式:$$\hat x_i = 1 - \frac{x_i - x_{best}}{M}$$ 且 $$M = \max \{ \vert x_i - x_{best} \vert \}$$

3.1.3 对于区间型指标的正向化处理

参数释明

  • $\hat x_i$ 正向化数据
  • $a$ 区间指标的下边界(区间最小值)
  • $b$ 区间指标的上边界(区间最大值)
  • $M$ 所有待处理数据中距离区间指标边界的最远距离
  • $x_i$ 待处理数据

处理公式

$$\hat 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}$$

$$M = \max \{ a - \min \{ x_i \} , \max \{ x_i \} - b \}$$

3.2 数据标准化处理

为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。

假设有 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}
$$

那么对矩阵 $X$ 标准化后的矩阵记作 $Z$,那么 $Z$ 中的每一个元素:$ z_{ij} = \frac{x_{ij}}{\sqrt{\begin{matrix} \sum_{i=1}^{n} {x_{ij}^2} \end{matrix}}} $

并且有标准化矩阵:

$$
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}
$$

3.3 为每个方案进行评分

3.3.1 计算最优解与最劣解

经过了正向化处理和标准化处理的评分矩阵 $Z$,里面的数据全部是极大型数据。我们就可以从中取出理想最优解和最劣解。因此我们取出每一列中最大的数,构成理想最优解向量 $z^+$。同时我们取出每一列中的最小值,构成最劣解向量 $z^-$。

最优解

$$
\begin{cases}
z^+ = [z_1^+, z_2^+, \cdots, z_m^+] \\
z_j^+ = \max\{ z_{1j}, z_{2j}, \cdots, z_{nj} \}
\end{cases}
$$

最劣解

$$
\begin{cases}
z^- = [z_1^-, z_2^-, \cdots, z_m^-] = \\
z_j^- =\min\{ z_{1j}, z_{2j}, \cdots, z_{nj} \}
\end{cases}
$$

3.3.2 计算每个方案与最优解的距离

对于每个方案我们都需要计算出其与最优解 $z_j^+$ 的距离 $d_i^+$:

不带权重的计算公式(默认每个指标权重相等):

$$
d_i^+ = \sqrt{\sum_{j=1}^m ({z_j^+ - z_{ij}})^2}
$$

带权重的计算公式

$$
d_i^+ = \sqrt{\sum_{j=1}^m \color{red}{\omega_j}({z_j^+ - z_{ij}})^2}
$$

注意:这里的 $\color{red}{\omega_j}$ 为该项指标的权重

3.3.3 计算每个方案与最劣解的距离

对于每个方案我们也需要计算出其与最劣解 $z_j^-$ 的距离 $d_i^-$:

不带权重的计算公式(默认每个指标权重相等):

$$
d_i^- = \sqrt{\sum_{j=1}^m ({z_j^- - z_{ij}})^2}
$$

带权重的计算公式

$$
d_i^- = \sqrt{\sum_{j=1}^m \color{red}{\omega_j}({z_j^- - z_{ij}})^2}
$$

注意:这里的 $\color{red}{\omega_j}$ 为该项指标的权重

3.3.3 计算每个方案的评分并排序

得到最优解距离 $d_i^+$ 和最劣解距离 $d_i^-$ 后,我们就可以根据最优解距离 $d_i^+$ 和最劣解距离 $d_i^-$ 计算每个方案的最终评分(综合距离) $S_i$ 了:

$$
S_i = \frac{ d_i^- }{ {d_i^+} + {d_i^-} }
$$

不难看出 $0 < S_i < 1$,并且 $d_i^+$ 越大、$d_i^-$ 越小,则 $S_i$ 越大,即代表越接近最优解;反之相反。

这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案比较好哪个方案比较好,那个方案比较差。