(续上篇文章)层次分析法的局限
上一篇文章中,层次分析法有这样的局限
- 评价决策层不能太多;
- 数据是已知的的话,便无法使用层次分析法进行精确的分析评价;
因此,为对这些情况做出更为精准的分析,我们可以使用Topsis优劣解距离法。
Topsis优劣解距离法介绍
Topsis优劣解距离法是一种综合评价方法,主要优点是能够充分利用原始数据来进行分析。
主要步骤为:
- 将原始数据正向化
- 将正向化矩阵进行标准化(消除量纲的影响)
- 计算样本数据与最大值、最小值的距离
- 根据公式,利用距离计算未归一化的得分
- 最后进行排序即可
正向化简介
指标名称 | 指标特点 | 实例 |
---|---|---|
极大型指标 | 数据越大越好 | 成绩、水体氧气含量…… |
极小型指标 | 数据越小越好 | 细菌含量、水体富营养化程度…… |
中间型指标 | 数据越靠近一个中间的值越好 | PH值…… |
区间型指标 | 数据在一个区间中最好 | 人体体温、水体植物量 |
在Topsis第一步中,我们需要将数据进行正向化处理,一般的处理模式都是将其他类型指标转化为极大型指标。下面叙述转化方法:
- 极小型指标 →\rightarrow→ 极大型指标
转化公式为:max−x转化公式为:max-x转化公式为:max−x同时,如果所有数据都是正数(注意正数不包含0哦~~)也可以使用公式 1x\frac{1}{x}x1,但主要推荐使用 max−xmax-xmax−x 来转化。
(正向化公式不唯一,如果有更好的公式,欢迎告诉我,我会持续更新hhh) - 中间型指标 →\rightarrow→ 极大型指标
中间型指标一般会有一个最佳数值,记为 xbestx_{best}xbest ,设 {xix_ixi} 是中间型指标序列,那么正向化公式为:M=max∣xi−xbest∣xi^=1−∣xi−xbest∣MM = 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值的正向化(xbest=7,max=3x_{best}=7, max=3xbest=7,max=3)
PH | PH(正向化后) |
---|---|
1 | 1−63=−11-\frac{6}{3}=-11−36=−1 |
6 | 1−13=231-\frac{1}{3}=\frac{2}{3}1−31=32 |
8 | 1−13=231-\frac{1}{3}=\frac{2}{3}1−31=32 |
10 | 1−33=01-\frac{3}{3}=01−33=0 |
- 区间型指标 →\rightarrow→ 极大型指标
区间型指标一般也会有一个最佳区间 [a,b][a, b][a,b] ,同样设 {xi}\{x_i\}{xi} 是区间型指标序列,那么正向化公式为:M=max{a−min{xi},max{xi−b}}xi^={1−a−xiM,a<xi,1,a≤xi≤b,1−xi−bM,xi<bM = 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=max{36−35.2,38.4−37}=1.4a=36, b=37, M = max\{36-35.2, 38.4-37\}=1.4a=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=[89100.56031174210.599000]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. 将正向化的矩阵进行标准化去除量纲的影响
标准化公式为:zij=xij∑i=1nx02(每一个元素/其所在列的元素的平方和)标准化公式为:z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^n x_0^2}}(每一个元素 / \sqrt{\text{其所在列的元素的平方和}})标准化公式为:zij=∑i=1nx02xij(每一个元素/其所在列的元素的平方和) S=[0.54370.267300.40820.36650.80180.70710.81650.45200.53450.70710.40820.6048000]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+=(max{z11,z21,⋯,zn1},max{z12,z22,⋯,zn2},⋯,max{z1m,z2m,⋯,znm})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−=(min{z11,z21},⋯,zn1},min{z12,z22,⋯,zn2},⋯,min{z1m,z2m,⋯,znm})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)个评价对象与最大值的距离Di+=∑j=1m(Zj+−zij)2D_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)个评价对象与最小值的距离Di−=∑j=1m(Zj−−zij)2D_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) 个评价对象未归一化的得分:Si=Di−Di++Di−S_i = \frac{D_i^-}{D_i^+ + D_i^-}Si=Di++Di−Di−,即:Stand_X=[0.17310.42400.32790.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模型还可以加入权重,因此可以将上一篇文章中的层次分析法应用于该模型中。只需要在计算距离时乘以权重即可。具体公式为:Di+=∑j=1mωj(Zj+−zij)2Di−=∑j=1mωj(Zj−−zij)2D_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优劣距离法的步骤。其中的数据处理可以使用MatlabMatlabMatlab编程计算。如果有什么错误的话,烦请告知~~~
有什么建议也请告诉我哦~~~