模型02:TOPSIS法

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

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

AHP的局限性

  • 评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。

  • 如果决策层中指标的数据是已知的,TOPSIS法可以通过利用数据本身来使得评价的更加准确。

TOPSIS算法步骤

算法的输入是一个矩阵\(X=\left( x_{ij} \right) _{n\times m}\),给出的是n个被评价的对象在m个评价指标下的得分,即一行表示同一被评价的对象在不同评价指标下的得分,一列表示不同被评价的对象在某一个评价指标下的得分。

将原始矩阵正向化

常见的四种指标:

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

注:所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为极大型指标,但TOPSIS法没有规定转换方法,可以自行定义,下文提供了一些参考转换方式。

极小型指标的正向化

设$\left\{ x_i \right\} $是一组极小型指标序列,那么正向化的通用转换方法:

\[\tilde{x}_i=\max \left\{ x_i \right\} -x_i \]

如果能保证所有的数据均为正数,那么也可以使用

\[\tilde{x}_i=\frac{1}{x_i} \]

中间型指标的正向化

设 $\left\{ x_i \right\} $ 是一组中间型指标序列,最佳值(越接近这个值越好)为 \(x_{\text{best}}\) ,那么正向化的转换方法:

  1. 计算出距离最大值:$M=\max \left\{ \left| x_i-x_{\text{best}} \right| \right\} $
  2. 逐个正向化:\(\tilde{x}_i=1-\frac{\left| x_i-x_{\text{best}} \right|}{\max \left\{ \left| x_i-x_{\text{best}} \right| \right\}}\)

区间型指标的正向化

设 $\left\{ x_i \right\} $ 是一组区间型指标序列,最佳区间(落在这个区间最好)为 $\left[ a,b \right] $ ,那么正向化的转换方法:

  1. 计算出距离最大值:$M=\max \left\{ a-\min \left\{ x_i \right\} ,\max \left\{ x_i \right\} -b \right\} $
  2. 逐个正向化:\(\tilde{x}_i=\begin{cases} 1-\frac{a-x_i}{M},& x_i<a\\ 1,& a\leqslant x_i\leqslant b\\ 1-\frac{x_i-b}{M},& x_i>b\\ \end{cases}\)

正向化矩阵标准化

将经过正向化后的矩阵记作\(\tilde{X}=\left( \tilde{x}_{ij} \right) _{n\times m}\),对其标准化可以得到矩阵\(Z=\left( z_{ij} \right) _{n\times m}\),其中

\[z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^n{x_{ij}^{2}}}} \]

即每个元素除以所在列所有元素的平方和的平方根。

注:标准化的方法有很多种,其主要目的就是去除量纲的影响,未来我们还可能见到更多种的标准化方法,例如:(x‐x的均值)/x的标准差;具体选用哪一种标准化的方法在多数情况下并没有很大的限制,这里我们采用的是前人的论文中用的比较多的一种标准化方法。

计算得分并归一化

定义最大值向量$Z^+=\left( Z_{1}{+},Z_{2},\dots ,Z_{m}^{+} \right) $,其中

\(Z_{j}^{+}=\max \left\{ z_{1j},z_{2j},\dots ,z_{nj} \right\} \,\,, j=1,2,\dots ,m\)

类似地,定义最小值向量$Z^-=\left( Z_{1}{-},Z_{2},\dots ,Z_{m}^{-} \right) $,其中

\(Z_{j}^{-}=\max \left\{ z_{1j},z_{2j},\dots ,z_{nj} \right\} \,\,, j=1,2,\dots ,m\)

假设第\(j\)个指标的权重为\(\omega _j\),采用欧式空间的距离定义:

\(i\)个评价对象的得分向量(也就是矩阵\(Z\)中一行的数据)与最大值向量的距离(称为优解距离

\[D_{i}^{+}=\sqrt{\sum_{j=1}^m{\omega _j\left( Z_{j}^{+}-z_{ij} \right) ^2}},i=1,2,\dots n \]

\(i\)个评价对象的得分向量与最小值向量的距离(称为劣解距离

\[D_{i}^{-}=\sqrt{\sum_{j=1}^m{\omega _j\left( Z_{j}^{-}-z_{ij} \right) ^2}},i=1,2,\dots n \]

注意:

  1. 我们也可以先对标准化矩阵中的每个元素计算权重,然后直接用带权重的标准化矩阵来计算得分,这样得到的结果和上述方式得到的结果是几乎相同的。
  2. 各个指标的权重,可以简单使用层次分析法AHP确定,如果需要更加客观的话可以使用熵权法来进行客观赋值。

那么,可以计算得出第\(i\)个评价对象未归一化的得分:

\[S_i=\frac{D_{i}^{-}}{D_{i}^{+}+D_{i}^{-}} \]

显然 $ S_i\in \left[ 0,1 \right] $,且 \(S_i\) 越大 \(D_{i}^{+}\) 越小,即越接近最大值。

最后再对各个数据做归一化处理:

\[\tilde{S}_i=\frac{S_i}{\sum_{i=1}^n{S_i}} \]

即可得到TOPSIS最终的得分。

注意:要区别开归一化和标准化。归一化的计算步骤也可以消去量纲的影响,但更多时候,我们进行归一化的目的是为了让我们的结果更容易解释,或者说让我们对结果有一个更加清晰直观的印象。例如将得分归一化后可限制在$\left[ 0,1 \right] $这个区间,对于区间内的每一个得分,我们很容易的得到其所处的比例位置。

posted @ 2020-08-10 00:45  Sefank  阅读(455)  评论(0)    收藏  举报