优劣解距离法-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^-\)实际上是欧氏距离,这个的本质思想和熵权法的实际上是有很多的相同之处的。