TOPSIS法–优劣解距离法

TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反应各评价方案之间的差距。
前面是根据例子来进行方法讲解,知识点在最后,想直接看知识点的同学可以直接翻到最后。

例子引入

小明寝室有4名同学,它们某一学期的高数成绩如下表所示:

姓名 成绩
小明 89
小王 60
小李 74
小张 99

请你为这四名同学进行评分,该评分能合理的描述其高数成绩的高低。
方法一
既然这里得到了成绩,我们就可以进行一个排名:

姓名 成绩 排名 修正后的排名 评分
小明 89 2 3 3/10=0.3
小王 60 4 1 1/10=0.1
小李 74 3 2 2/10=0.2
小张 99 1 4 4/10=0.4

因为排名的数字越小越好,但是评分越高越好,所以我们进行排名修正后进行归一化的到评分。
但是这里有一个弊端,就是成绩可以随意修改而的分不变,这样得到的评分就和成绩的关联性不密切,无法客观进行评价。所以方法需要改进。
方法二
在表中可以得到:
最高成绩max:99,最低成绩min:60,由此我们可以构造计算评分的公式:
x−minmax−min\frac{x-min}{max-min}max−minx−min​

姓名 成绩 未归一化的评分 归一化的评分
小明 89 (89-60)/(99-60)=0.74 0.74/2.1=0.35
小王 60 (60-60)/(99-60)=0 0/0.21=0
小李 74 (74-60)/(99-60)=0.36 0.36/0.21=0.17
小张 99 (99-60)/(99-60)=1 1/2.1=0.48

方法三
在上面大家可能会想为什么不用卷面最高成绩100,和卷面最低成绩0呢?
x−0100−0\frac{x-0}{100-0}100−0x−0​

姓名 成绩 未归一化的评分 归一化的评分
小明 89 0.89 0.28
小王 60 0.60 0.19
小李 74 0.74 0.23
小张 99 0.99 0.30

这样的话得出的评分会与成绩的关系性更强,但是相比于方法二有哪些不同呢?
① 方法二中最后一名的评分是0,第一名的评分是1,但是中间的数值没有太大影响,在实际操作时,比较的对象一般远大于两个,所以影响并不大。
② 比较的指标也不往往是一个方面,好比小王得了60分,第二种的评分是0,但是加入其他指标之后小王可能不再是最后一名,评分也就不再会是0。
③ 我认为是最重要的一点,很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP增速,在遇到这种没有理论最大值的指标时,我们无法使用其上下限来进行计算,也就是无法使用方法三。
所以我们得到构造计算评分的公式为
x−minmax−min\frac{x-min}{max-min}max−minx−min​

对于多个指标的处理方法

下面开始多个指标的处理,如下表所示,我们应该怎样进行评分和排名呢?

姓名 成绩 逃课次数
小明 89 2
小王 60 0
小李 74 1
小张 99 3

一、正向化处理

姓名 成绩 逃课次数
小明 89 2
小王 60 0
小李 74 1
小张 99 3

成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)
逃课次数是越少(越小)越好,这样的指标称为极小型指标(成本型指标)
指标正向化:在使用计算评分公式时需要将所有的指标转化为极大型指标。极小型指标转化为极大型指标的公式:
max−xmax-xmax−x

姓名 成绩 逃课次数 正向化后的逃课次数
小明 89 2 1
小王 60 0 3
小李 74 1 2
小张 99 3 0
指标类型 极大型 极小型 极大型

二、标准化处理

经正向化的到的表格还是不能直接使用,因为有量纲的影响。为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理

姓名 成绩 正向化后的逃课次数
小明 89 1
小王 60 3
小李 74 2
小张 99 0
指标类型 极大型 极大型

标准化处理计算公式

假设有n个要评价的对象,m个指标(已正向化),构成的正向化矩阵如下:
X=[x11x12⋯x1mx21x22⋯x2m⋮⋮⋱⋮xn1xn2⋯xnm]X= \left[ \begin{matrix} 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{matrix} \right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xn1​​x12​x22​⋮xn2​​⋯⋯⋱⋯​x1m​x2m​⋮xnm​​⎦⎥⎥⎥⎤​
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
zij=xij∑i=1nxij2z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}}zij​=∑i=1n​xij2​​xij​​

按照公式对我们已经得出的矩阵进行标准化变换
[891603742990]\left[ \begin{matrix} 89 & 1 \\ 60 & 3\\ 74& 2\\ 99&0 \end{matrix} \right] ⎣⎢⎢⎡​89607499​1320​⎦⎥⎥⎤​
标准化之后得到的矩阵为:
[0.54370.26730.36650.80180.45200.53450.60480]\left[ \begin{matrix} 0.5437 & 0.2673 \\ 0.3665 & 0.8018\\ 0.4520& 0.5345\\ 0.6048&0 \end{matrix} \right] ⎣⎢⎢⎡​0.54370.36650.45200.6048​0.26730.80180.53450​⎦⎥⎥⎤​

三、计算得分

当我们只有一个指标时计算评分的公式已经给出,我们对其变形,并推测其在多个指标时的公式
x−minmax−min=x−max(max−x)+(x−min)\frac{x-min}{max-min}=\frac{x-max}{(max-x)+(x-min)} max−minx−min​=(max−x)+(x−min)x−max​
可以看作:x与最小值的距离x与最大值的距离+x与最小值的距离可以看作:\frac{x与最小值的距离}{x与最大值的距离+x与最小值的距离} 可以看作:x与最大值的距离+x与最小值的距离x与最小值的距离​
下面我们开始定义最大值、最小值、对象与最大值、最小值之间的距离
对于标准化后的矩阵Z有:
Z=[z11z12⋯z1mz21z22⋯z2m⋮⋮⋱⋮zn1zn2⋯znm]Z= \left[ \begin{matrix} 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{matrix} \right] Z=⎣⎢⎢⎢⎡​z11​z21​⋮zn1​​z12​z22​⋮zn2​​⋯⋯⋱⋯​z1m​z2m​⋮znm​​⎦⎥⎥⎥⎤​

定义最大值:Z+=(Z1+,Z2+,...,Zm+)Z^+=(Z_1^+,Z_2^+,...,Z_m^+)Z+=(Z1+​,Z2+​,...,Zm+​)
定义最小值:Z−=(Z1−,Z2−,...,Zm−)Z^-=(Z_1^-,Z_2^-,...,Z_m^-)Z−=(Z1−​,Z2−​,...,Zm−​)

定义第i(i=1,2,…,n)个评价对象与最大值的距离为:
Di+=∑j=1m(ZJ+−zij)2D_i^+=\sqrt{\sum_{j=1}^m(Z_J^+-z_{ij})^2} Di+​=j=1∑m​(ZJ+​−zij​)2​
定义第i(i=1,2,…,n)个评价对象与最小值的距离为:
Di−=∑j=1m(ZJ−−zij)2D_i^-=\sqrt{\sum_{j=1}^m(Z_J^--z_{ij})^2} Di−​=j=1∑m​(ZJ−​−zij​)2​
那么,我们就可以计算出第i(i=1,2,…,n)个评价对象未归一化的得分:
Si=Di−Di++Di−S_i=\frac{D_i^-}{D_i^++D_i^-} Si​=Di+​+Di−​Di−​​
很明显,0≤Si≤1,且Si越大Di+越小,即越接近最大值。0\leq S_i\leq 1,且S_i越大D_i^+越小,即越接近最大值。0≤Si​≤1,且Si​越大Di+​越小,即越接近最大值。

下面我们根据上面的公式进行评分和排名

姓名 成绩 正向化后的争吵次数
小明 0.5437 0.2673
小王 0.3665 0.8018
小李 0.4520 0.5345
小张 0.6048 0

得到最大值:[0.6048,0.8018],最小值[0.3665,0]
开始计算距离:
D小明+=(0.6048−0.5437)2+(0.8018−0.2673)2=0.5380D_{小明}^+=\sqrt{(0.6048-0.5437)^2+(0.8018-0.2673)^2}=0.5380D小明+​=(0.6048−0.5437)2+(0.8018−0.2673)2​=0.5380
D小明−=(0.3665−0.5437)2+(0−0.2673)2=0.3206D_{小明}^-=\sqrt{(0.3665-0.5437)^2+(0-0.2673)^2}=0.3206D小明−​=(0.3665−0.5437)2+(0−0.2673)2​=0.3206
D小王+=(0.6048−0.3665)2+(0.8018−0.8018)2=0.2382D_{小王}^+=\sqrt{(0.6048-0.3665)^2+(0.8018-0.8018)^2}=0.2382D小王+​=(0.6048−0.3665)2+(0.8018−0.8018)2​=0.2382
D小王−=(0.3665−0.3665)2+(0−0.8018)2=0.8018D_{小王}^-=\sqrt{(0.3665-0.3665)^2+(0-0.8018)^2}=0.8018D小王−​=(0.3665−0.3665)2+(0−0.8018)2​=0.8018

经计算后得到了每个同学的评分和排名:

姓名 D+ D- 未归一化的得分 归一化后的得分 排名
小明 0.5380 0.3206 0.3734 0.1857 3
小王 0.2382 0.8018 0.7709 0.3834 1
小李 0.3078 0.5413 0.6375 0.3170 2
小张 0.8108 0.2382 0.2291 0.1139 4

TOPSIS方法总结

第一步:将原始矩阵正向化

最常见的四种指标:

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

极小型指标转换为极大型指标的公式:max−x极小型指标转换为极大型指标的公式:max-x极小型指标转换为极大型指标的公式:max−x
中间型指标转换为极大型指标
有{xi}是一组中间型指标序列,且最佳的数值为xbest,那么正向化的公式如下:
M=max∣xi−xbest∣,xi∗=1−∣xi−xbest∣MM=max{|x_i-x_{best}|} , x_i^*=1-\frac{|x_i-x_{best}|}{M} M=max∣xi​−xbest​∣,xi∗​=1−M∣xi​−xbest​∣​
区间型指标转换为极大型指标
有{xi}是一组中间型指标序列,且最佳的区间为[a,b],那么正向化的公式如下:

M=max{a-min{xi},max{xi}-b}

Xi∗={1−a−xMx<a1a≤x≤b1−x−bMx>bX^{*}_i=\left\{ \begin{array}{rcl} 1-\frac{a-x}{M} & & {x < a}\\ 1 & & {a \leq x \leq b}\\ 1-\frac{x-b}{M} & & {x>b} \end{array} \right. Xi∗​=⎩⎨⎧​1−Ma−x​11−Mx−b​​​x<aa≤x≤bx>b​

第二步:将正向化矩阵标准化

矩阵标准化的目的是消除不同指标量纲的影响。
假设有n个要评价的对象,m个指标(已正向化),构成的正向化矩阵如下:
X=[x11x12⋯x1mx21x22⋯x2m⋮⋮⋱⋮xn1xn2⋯xnm]X= \left[ \begin{matrix} 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{matrix} \right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xn1​​x12​x22​⋮xn2​​⋯⋯⋱⋯​x1m​x2m​⋮xnm​​⎦⎥⎥⎥⎤​
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
zij=xij∑i=1nxij2z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}}zij​=∑i=1n​xij2​​xij​​

第三步:计算并归一化

对于标准化后的矩阵Z有:
Z=[z11z12⋯z1mz21z22⋯z2m⋮⋮⋱⋮zn1zn2⋯znm]Z= \left[ \begin{matrix} 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{matrix} \right] Z=⎣⎢⎢⎢⎡​z11​z21​⋮zn1​​z12​z22​⋮zn2​​⋯⋯⋱⋯​z1m​z2m​⋮znm​​⎦⎥⎥⎥⎤​

定义最大值:Z+=(Z1+,Z2+,...,Zm+)Z^+=(Z_1^+,Z_2^+,...,Z_m^+)Z+=(Z1+​,Z2+​,...,Zm+​)
定义最小值:Z−=(Z1−,Z2−,...,Zm−)Z^-=(Z_1^-,Z_2^-,...,Z_m^-)Z−=(Z1−​,Z2−​,...,Zm−​)

定义第i(i=1,2,…,n)个评价对象与最大值的距离为:
Di+=∑j=1m(ZJ+−zij)2D_i^+=\sqrt{\sum_{j=1}^m(Z_J^+-z_{ij})^2} Di+​=j=1∑m​(ZJ+​−zij​)2​
定义第i(i=1,2,…,n)个评价对象与最小值的距离为:
Di−=∑j=1m(ZJ−−zij)2D_i^-=\sqrt{\sum_{j=1}^m(Z_J^--z_{ij})^2} Di−​=j=1∑m​(ZJ−​−zij​)2​
那么,我们就可以计算出第i(i=1,2,…,n)个评价对象未归一化的得分:
Si=Di−Di++Di−S_i=\frac{D_i^-}{D_i^++D_i^-} Si​=Di+​+Di−​Di−​​
很明显,0≤Si≤1,且Si越大Di+越小,即越接近最大值。0\leq S_i\leq 1,且S_i越大D_i^+越小,即越接近最大值。0≤Si​≤1,且Si​越大Di+​越小,即越接近最大值。

带权重的TOPSIS

有n个要评价对象,m个评价指标的标准化矩阵:
Z=[z11z12⋯z1mz21z22⋯z2m⋮⋮⋱⋮zn1zn2⋯znm]Z= \left[ \begin{matrix} 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{matrix} \right] Z=⎣⎢⎢⎢⎡​z11​z21​⋮zn1​​z12​z22​⋮zn2​​⋯⋯⋱⋯​z1m​z2m​⋮znm​​⎦⎥⎥⎥⎤​
可以使用层次分析法给这m个评价指标确定权重:
∑j=1mwj=1\sum^m_{j=1}w_j=1j=1∑m​wj​=1

TOPSIS--优劣解距离法相关推荐

  1. 数学建模学习笔记(二)——Topsis优劣解距离法

    (续上篇文章)层次分析法的局限 上一篇文章中,层次分析法有这样的局限 评价决策层不能太多: 数据是已知的的话,便无法使用层次分析法进行精确的分析评价: 因此,为对这些情况做出更为精准的分析,我们可以使 ...

  2. TOPSIS(优劣解距离法)【附Python实现代码及可视化代码】

    目录 一.指标正向化 1.极小型指标->极大型指标 2.中间型指标->极大型指标 3.区间型指标->极大型指标 二.标准化处理 三.计算得分并归一化(不带权重) 四.计算得分并归一化 ...

  3. 【数学建模】Topsis优劣解距离法

    内容来自这篇 https://blog.csdn.net/weixin_43819566/article/details/112342602 评价方法大体上可分为两类,其主要区别在确定权重的方法上.一 ...

  4. topsis(优劣解距离法)在matlab上的实现

    TOPSIS 模型是 Hwang 和 Yoon 于 1981 年首次 提出,它是一种根据有限评价对象与理想化目标接 近程度进行排序的方法,通过计算评价对象的最优 值和最劣值来进行排序,当评价对象与最优 ...

  5. TOPSIS 优劣解距离法

    目录 举例介绍 TOPSIS步骤 第一步将原始矩阵正向化 极小型指标-->极大型指标 中间型指标->极大型 区间型-->极大型 第二步正向化矩阵标准化 第三步计算得分并归一化 TOP ...

  6. MATLAB 之 优劣解距离法(TOPSIS )

    文章目录 一.TOPSIS 简介 二.TOPSIS 步骤 1:将原始矩阵正向化,得到正向化矩阵 1.1 指标类型 1.2 正向化公式 2. 正向化矩阵标准化 3. 计算得分并归一化 3.1 方法 3. ...

  7. TOPSIS算法(优劣解距离法)的使用举例与matlab实现

    文章目录 一.算法的提出 二.TOPSIS算法的一般步骤 1.形成决策矩阵 2.计算加权决策矩阵 (1)指标正向化处理 a.极大值指标正向化 b.极小型指标极大正向化 c.中间型指标极大正向化 d.区 ...

  8. TOPSIS法笔记(优劣解距离法)

    一.概述 C.L.Hwang 和K.Yoon 于1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal So ...

  9. Python实现TOPSIS分析法(优劣解距离法)

    文章目录 (1).题目 (2).读取Excel表中的数据 (3).将不同的指标转换为极大型指标 (4).正向化矩阵标准化 (5).计算得分并归一化 (6).主函数 (7).完整代码部分 (8).计算结 ...

  10. 数学建模——TOPSIS法(优劣解距离法)学习笔记(一)

    一.TOPSIS方法 TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简 ...

最新文章

  1. router3 BGP2 属性及选路
  2. 【深度学习】2021年深度学习哪些方向比较新颖,处于上升期或者朝阳阶段,没那么饱和,比较有研究潜力?...
  3. python函数作用域包括局部变量和参数_python函数变量的作用域声明(全局变量和局部变量)...
  4. 在MAC下搭建JSP开发环境
  5. java中的single_解析java泛型(一)
  6. php中获得客户端,服务器ip
  7. 初一音乐计算机教学方案,人音版七年级音乐教案
  8. day4作业小代码练习
  9. 六招让你成职场超男超女
  10. oracle协议适配器错误tns,ORA-12560: TNS: 协议适配器错误 常见原因
  11. 基于Discuz的原生态MVC框架Uxf
  12. 【NOIP模拟】矩阵
  13. TestStand-从LabVIEW创建TestStand数据类型的簇
  14. CIDetector 边缘识别
  15. java实现注册的短信验证码
  16. python中 for in 用法_python中for in的用法详解
  17. MySQL免安装版本的下载/配置/连接DBeaver---详细教程
  18. pyecharts对于经纬度_pyecharts绘制geo地图
  19. 关于pandas的这些干货,你也必须知道!
  20. python识别图片文字、并返回文字坐标_PyAutoGui 图片识别+定位+截图函数文档

热门文章

  1. 【2022/1/12】think-swoole使用教程
  2. 查看Mac本机路由器IP地址
  3. 西门子1200plc485轮询读写28个测试仪表,包括plc程序和触摸屏程序,仪表485通讯协议说明书
  4. 运筹学研究者关注的Github和CSDN账号
  5. 无心剑中译伊丽莎白·毕肖普《一门技艺》
  6. Ubuntu 18.04 锁屏 快捷键 无效
  7. 一个APP诞生的自述日记,APP开发流程
  8. Ajax请求传递中文参数
  9. cadence 通孔焊盘_Cadence学习3(通孔类焊盘的建立)(转)
  10. 微服务如何聚合 API 文档?这波操作也太秀了