优劣解距离法(TOPSIS法)的原理简析_实例应用_代码


首先先要明确一些概念

  1. 指标的类型
指标名称 指标特点
极大型指标 越大越好
极小型指标 越小越好
中间性指标 越接近某个值越好
区间型指标 落在某个区间最好

比如说:
极大型指标:成绩、GDP增速、企业利润等
极小型指标:费用、坏品率、污染程度
中间性指标:水质量评估时的PH
区间型指标:体温
在利用TOPSIS方法进行计算时一般要将所有指标正向化,即将所有类型的指标都化为极大型指标
2. 归一化处理
归一化处理可以将有量纲的表达式转化为无量纲的表达式,一般的公式为 z i , j = a i , j ∑ i = 1 n a i , j z_{i,j}=\frac{a_{i,j}}{\sum_{i=1}^na_{i,j}} zi,j=i=1nai,jai,j,即将每个元素除以该列元素之和,使得新得到的矩阵满足列和为一
比如下面的矩阵,归一化后化为
( 1 3 5 2 2 4 2 5 1 ) → ( 0.2 0.3 0.5 0.4 0.2 0.4 0.4 0.5 0.1 ) \begin{pmatrix} 1&3&5\\2&2&4\\2&5&1 \end{pmatrix}\rightarrow \begin{pmatrix}0.2&0.3&0.5\\ 0.4&0.2&0.4\\ 0.4&0.5&0.1 \\\end{pmatrix} 1223255410.20.40.40.30.20.50.50.40.1

3.标准化处理
标准化处理与归一化处理作用类似,都是为了消除量纲的影响。标准化的方法有很多,在这里我们选择其中较为简单的一种
z i , j = x i , j ∑ i = 1 n x i , j z_{i,j}=\frac{x_{i,j}}{\sqrt{\sum_{i=1}^nx_{i,j}}} zi,j=i=1nxi,j xi,j,即用当前元素除以根下每列元素的平方和
比如下面的矩阵,标准化完后为
( 2 3 4 3 2 4 3 3 0 ) → ( 0.5 0.43 0.5 0.75 0.5 0.5 0.43 0.75 0 ) \begin{pmatrix} 2&\sqrt{3}&4\\3&2&4\\\sqrt{3}&3&0 \end{pmatrix}\rightarrow \begin{pmatrix}0.5&0.43&0.5\\ 0.75&0.5&0.5\\ 0.43&0.75&0 \\\end{pmatrix} 233 3 234400.50.750.430.430.50.750.50.50

TOPSIS算法步骤

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

转化的函数形式可以不唯一

  1. 极小转化为极大
    m a x − x max-x maxx,如果元素全为正数,也可以使用 1 x \frac{1}{x} x1

  2. 中间型转化为极大
    假设 { x i } \{x_i\} { xi}一组中间型指标序列, x b e s t x_{best} xbest为最佳数值,那么正向化公式为
    x i ′ = 1 − ∣ x i − x b e s t ∣ M , 其 中 M = m a x { ∣ x i − x b e s t ∣ } x_i'=1-\frac{\vert{x_i-x_{best}}\vert}{M},其中M=max\{\vert x_i-x_{best}\vert\} xi=1Mxixbest,M=max{ xixbest}
    如下例
    在这里插入图片描述其中 x b e s t = 7 x_{best}=7 xbest=7, M = m a x { ∣ 6 − 7 ∣ , ∣ 7 − 7 ∣ , ∣ 8 − 7 ∣ , ∣ 9 − 7 ∣ } = 2 M=max\{|6-7|,|7-7|,|8-7|,|9-7|\}=2 M=max{ 67,77,87,97}=2

  3. 区间型转化为极大
    假设最佳区间为 [ a , b ] [a,b] [a,b],则正向化的公式如下

x i ′ = { 1 − a − x i M x i < a 1 a ≤ x i ≤ S M 1 − x i − b M x i > b x_i'=\left\{ \begin{array}{rcl} 1-\frac{a-x_i}{M} & & {x_i<a}\\ 1 & & {a\le x_i \le S_M}\\ 1-\frac{x_i-b}{M}& & {x_i>b}\\ \end{array} \right. xi=

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值