Topsis 优劣解距离法

Topsis 优劣解距离法

用于有具体数据评价

初步评价思路

利用已有数据,找到数据中的最大值和最小值,构造计算评分公式 x − m i n m a x − m i n \frac{x-min}{max-min} maxminxmin
但是也存在一些不完善的地方:

  1. 比较的对象一般要远大于两个。(例如比较一个班级的成绩)
  2. 比较的指标也往往不只是一个方面的,例如成绩、工时数、课外竞赛得分等。
  3. 有很多指标不存在理论上的最大值和最小值,例如衡量经济增长水平的指标:GDP增速。

TOPSIS的介绍

C.L.Hwang K.Yoon 于1981年首次提出TOPSIS(Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法。
TOPSIS法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
基本过程为先将原始数据矩阵统一指标类型(一般正向化处理),得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

Topsis步骤

1.原始矩阵正向化

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

在评价前,需要将所有的指标转化为极大型——也叫指标正向化(转化的函数形式可以不唯一)

转化的方法
极小型指标->极大型指标

极小型指标转换为极大型指标的公式: m a x − x max-x maxx,如果所有的元素均为正数,那么也可以使用 1 x \frac{1}{x} x1

中间型指标->极大型指标

中间型指标:指标值既不要太大也不要太小,取某特定值最好(如水质量评估PH值) { x i } \{x_i\} {xi}是一组中间型指标序列,且最佳的数值为 x b e s t x_{best} xbest,那么正向化的公式如下:

M = m a x { ∣ x i − x b e s t ∣ } , x i ~ = 1 − ∣ x i − x b e s t ∣ M M=max\{|x_i-x_{best}|\},\tilde{x_i}=1-\frac{|x_i-x_{best}|}{M} M=max{xixbest}xi~=1Mxixbest

image-20220728145047141

区间型指标->极大型指标

区间型指标:指标值落在某个区间内最好,例如人的体温在36°~37°这个区间比较好。
{ x i } \{x_i\} {xi}是一组区间型指标序列,且最佳的区间为 [ a , b ] [a,b] [ab],那么正向化的公式如下:

M = max ⁡ { a − min ⁡ { x i } , max ⁡ { x i } − b } , x ~ i = { 1 − a − x i M , x i < a 1 , a ≤ x i ≤ b 1 − x i − b M , x i > b M=\max \left\{a-\min \left\{x_{i}\right\}, \max \left\{x_{i}\right\}-b\right\}, \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} M=max{amin{xi},max{xi}b},x~i= 1Maxi11Mxib,,xi<a,axibxi>b

image-20220728150905301

2.正向化矩阵标准化

标准化的目的是消除不同指标量纲的影响

假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化评价矩阵如下:
X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ x n 1 ⋮ x n 2 ⋱ ⋮ ⋯ x n m ] X=\left[ \begin{matrix} x_{11}& x_{12}& \begin{matrix} \cdots& x_{1m}\\ \end{matrix}\\ x_{21}& x_{22}& \begin{matrix} \cdots& x_{2m}\\ \end{matrix}\\ \begin{array}{c} \vdots\\ x_{n1}\\ \end{array}& \begin{array}{c} \vdots\\ x_{n2}\\ \end{array}& \begin{array}{c} \begin{matrix} \ddots& \vdots\\ \end{matrix}\\ \begin{matrix} \cdots& x_{nm}\\ \end{matrix}\\ \end{array}\\ \end{matrix} \right] X= x11x21xn1x12x22xn2x1mx2mxnm
那么,对其标准化的矩阵记为Z,Z中的每一个元素:
z v = x v / ∑ i = 1 n x v 2 z_v=x_v/\sqrt{\sum_{i=1}^{n}{x_v}^2} zv=xv/i=1nxv2 即: 每一个元素 / 其所在列的元素的平方和 每一个元素/\sqrt{其所在列的元素的平方和} 每一个元素/其所在列的元素的平方和

标准化的方法不唯一,这个只是最常用的方法

3.计算得分并归一化

如何计算得分

只要一个指标时,构造计算评分的公式: z = x − m i n m a x − m i n z=\frac{x-min}{max-min} z=maxminxmin

变形为: z = x − m i n m a x − m i n = x − m i n ( m a x − x ) + ( x − m i n ) z=\frac{x-min}{max-min}=\frac{x-min}{(max-x)+(x-min)} z=maxminxmin=(maxx)+(xmin)xmin

可看作: z = x 与最小值得距离 x 与最大值的距离 + x 与最小值的距离 z=\frac{x与最小值得距离}{x与最大值的距离+x与最小值的距离} z=x与最大值的距离+x与最小值的距离x与最小值得距离

如何归一化

定义最大值 Z + Z^+ Z+=( Z 1 + , Z 2 + , Z 3 + , ⋅ ⋅ ⋅ , Z m + {Z_1}^+,{Z_2}^+,{Z_3}^+,···,{Z_m}^+ Z1+,Z2+,Z3+,⋅⋅⋅,Zm+)
=( m a x { z 11 , z 21 , ⋯   , z n 1 } , m a x { z 12 , z 22 , ⋯   , z n 2 } , ⋯   , m a x { z 1 m , z 2 m , ⋯   , z n m } 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}\} max{z11,z21,,zn1},max{z12,z22,,zn2},,max{z1m,z2m,,znm})

定义最小值 Z − Z^- Z=( Z 1 − , Z 2 − , Z 3 − , ⋅ ⋅ ⋅ , Z m − {Z_1}^-,{Z_2}^-,{Z_3}^-,···,{Z_m}^- Z1,Z2,Z3,⋅⋅⋅,Zm)
=( m i n { z 11 , z 21 , ⋯   , z n 1 } , m i n { z 12 , z 22 , ⋯   , z n 2 } , ⋯   , m i n { z 1 m , z 2 m , ⋯   , z n m } 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}\} min{z11,z21,,zn1},min{z12,z22,,zn2},,min{z1m,z2m,,znm})

定义第i(i=1,2,…,n)个评价对象与最大值的距离 D i + = ∑ j = 1 m ( Z j + − z i j ) 2 {D_i}^+=\sqrt{\sum_{j=1}^{m}{({Z_j}^+-z_{ij})^2}} Di+=j=1m(Zj+zij)2

定义第i(i=1,2,…,n)个评价对象与最小值的距离 D i − = ∑ j = 1 m ( Z j − − z i j ) 2 {D_i}^-=\sqrt{\sum_{j=1}^{m}{({Z_j}^{-}-z_{ij})^2}} Di=j=1m(Zjzij)2

那么,我们可以计算得出第i(i=1,2,…,n)个评价对象未归一化的得分: S i = D i − D i + + D i − S_i=\frac{{D_i}^-}{{D_i}^++{D_i}^-} Si=Di++DiDi
很明显 0 < S i < 1 0<S_i<1 0<Si<1 且 S i 越大 D i + 越小 且S_i越大{D_i}^+越小 Si越大Di+越小,即越接近最大值。

我们可以将得分归一化: S i ~ = S i / ∑ i = 1 n S i \tilde{S_i}=S_i/\sum_{i=1}^n{S_i} Si~=Si/i=1nSi, 这样的话 ∑ i = 1 n S i ~ = 1 \sum_{i=1}^n\tilde{S_i}=1 i=1nSi~=1

PS:清风老师的数模课程和其他课程比起来,质量很高,并且听起来也很有趣,让人容易接受这些知识,愿意去学习枯燥的数学模型。如果在准备数模比赛的话,强烈推荐入手!以上为个人亲身实际感受,仅供参考。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梧星07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值