TOPSIS--优劣解距离法
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=⎣⎢⎢⎢⎡x11x21⋮xn1x12x22⋮xn2⋯⋯⋱⋯x1mx2m⋮xnm⎦⎥⎥⎥⎤
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
zij=xij∑i=1nxij2z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}}zij=∑i=1nxij2xij
按照公式对我们已经得出的矩阵进行标准化变换
[891603742990]\left[ \begin{matrix} 89 & 1 \\ 60 & 3\\ 74& 2\\ 99&0 \end{matrix} \right] ⎣⎢⎢⎡896074991320⎦⎥⎥⎤
标准化之后得到的矩阵为:
[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.60480.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=⎣⎢⎢⎢⎡z11z21⋮zn1z12z22⋮zn2⋯⋯⋱⋯z1mz2m⋮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−x11−Mx−bx<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=⎣⎢⎢⎢⎡x11x21⋮xn1x12x22⋮xn2⋯⋯⋱⋯x1mx2m⋮xnm⎦⎥⎥⎥⎤
那么,对其标准化后的矩阵记为Z,Z中的每一个元素:
zij=xij∑i=1nxij2z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^nx_{ij}^2}}zij=∑i=1nxij2xij
第三步:计算并归一化
对于标准化后的矩阵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=⎣⎢⎢⎢⎡z11z21⋮zn1z12z22⋮zn2⋯⋯⋱⋯z1mz2m⋮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=⎣⎢⎢⎢⎡z11z21⋮zn1z12z22⋮zn2⋯⋯⋱⋯z1mz2m⋮znm⎦⎥⎥⎥⎤
可以使用层次分析法给这m个评价指标确定权重:
∑j=1mwj=1\sum^m_{j=1}w_j=1j=1∑mwj=1
TOPSIS--优劣解距离法相关推荐
- 数学建模学习笔记(二)——Topsis优劣解距离法
(续上篇文章)层次分析法的局限 上一篇文章中,层次分析法有这样的局限 评价决策层不能太多: 数据是已知的的话,便无法使用层次分析法进行精确的分析评价: 因此,为对这些情况做出更为精准的分析,我们可以使 ...
- TOPSIS(优劣解距离法)【附Python实现代码及可视化代码】
目录 一.指标正向化 1.极小型指标->极大型指标 2.中间型指标->极大型指标 3.区间型指标->极大型指标 二.标准化处理 三.计算得分并归一化(不带权重) 四.计算得分并归一化 ...
- 【数学建模】Topsis优劣解距离法
内容来自这篇 https://blog.csdn.net/weixin_43819566/article/details/112342602 评价方法大体上可分为两类,其主要区别在确定权重的方法上.一 ...
- topsis(优劣解距离法)在matlab上的实现
TOPSIS 模型是 Hwang 和 Yoon 于 1981 年首次 提出,它是一种根据有限评价对象与理想化目标接 近程度进行排序的方法,通过计算评价对象的最优 值和最劣值来进行排序,当评价对象与最优 ...
- TOPSIS 优劣解距离法
目录 举例介绍 TOPSIS步骤 第一步将原始矩阵正向化 极小型指标-->极大型指标 中间型指标->极大型 区间型-->极大型 第二步正向化矩阵标准化 第三步计算得分并归一化 TOP ...
- MATLAB 之 优劣解距离法(TOPSIS )
文章目录 一.TOPSIS 简介 二.TOPSIS 步骤 1:将原始矩阵正向化,得到正向化矩阵 1.1 指标类型 1.2 正向化公式 2. 正向化矩阵标准化 3. 计算得分并归一化 3.1 方法 3. ...
- TOPSIS算法(优劣解距离法)的使用举例与matlab实现
文章目录 一.算法的提出 二.TOPSIS算法的一般步骤 1.形成决策矩阵 2.计算加权决策矩阵 (1)指标正向化处理 a.极大值指标正向化 b.极小型指标极大正向化 c.中间型指标极大正向化 d.区 ...
- TOPSIS法笔记(优劣解距离法)
一.概述 C.L.Hwang 和K.Yoon 于1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal So ...
- Python实现TOPSIS分析法(优劣解距离法)
文章目录 (1).题目 (2).读取Excel表中的数据 (3).将不同的指标转换为极大型指标 (4).正向化矩阵标准化 (5).计算得分并归一化 (6).主函数 (7).完整代码部分 (8).计算结 ...
- 数学建模——TOPSIS法(优劣解距离法)学习笔记(一)
一.TOPSIS方法 TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简 ...
最新文章
- router3 BGP2 属性及选路
- 【深度学习】2021年深度学习哪些方向比较新颖,处于上升期或者朝阳阶段,没那么饱和,比较有研究潜力?...
- python函数作用域包括局部变量和参数_python函数变量的作用域声明(全局变量和局部变量)...
- 在MAC下搭建JSP开发环境
- java中的single_解析java泛型(一)
- php中获得客户端,服务器ip
- 初一音乐计算机教学方案,人音版七年级音乐教案
- day4作业小代码练习
- 六招让你成职场超男超女
- oracle协议适配器错误tns,ORA-12560: TNS: 协议适配器错误 常见原因
- 基于Discuz的原生态MVC框架Uxf
- 【NOIP模拟】矩阵
- TestStand-从LabVIEW创建TestStand数据类型的簇
- CIDetector 边缘识别
- java实现注册的短信验证码
- python中 for in 用法_python中for in的用法详解
- MySQL免安装版本的下载/配置/连接DBeaver---详细教程
- pyecharts对于经纬度_pyecharts绘制geo地图
- 关于pandas的这些干货,你也必须知道!
- python识别图片文字、并返回文字坐标_PyAutoGui 图片识别+定位+截图函数文档