【数模学习笔记】TOPSIS优劣解距离法

声明:以下笔记中的图片均来自"数学建模学习交流"清风老师的课程ppt,仅用作学习交流使用

文章目录

TOPSIS

全称 Technique for Order Preference by Similarity to Ideal Solution 逼近理想解排序法

topsis能充分利用原始数据的信息,精确地反映各评价方案之间的差距

可以解决层次分析法中决策层数据已知的情况,使评价结果更准确

步骤

第一步 原始矩阵正向化

常见的四种指标:极大型(效益型)指标、极小型(成本型)指标、中间型指标、区间型指标

一般将其他三种指标化为极大型指标,这个过程被称之为指标正向化

极小型指标-->极大型指标

x = > m a x − x x =>max-x x=>max−x

当所有指标均为正数时,也可以
x = > 1 x x=>\frac{1}{x} x=>x1

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

x b e s t x_{best} xbest为最佳指标
M = m a x { ∣ x i − x b e s t ∣ } M=max{ \{|x_i-x_{best}|\} } M=max{∣xi−xbest∣}
x i ~ = 1 − ∣ x i − x b e s t ∣ M \tilde{x_i}=1-\frac{|x_i-x_{best}|}{M} xi~=1−M∣xi−xbest∣

例如

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

[ a , b ] [a,b] [a,b]为最佳区间
M = m a x { a − m i n x i , m a x x i − b } M=max\{a-min{x_i},max{x_i}-b\} M=max{a−minxi,maxxi−b}

x i ~ = { 1 − a − x i M , x i < a 1 , a ≤ x i < b 1 − x i − b M , x i > b \tilde{x_i}=\left\{ \begin{array}{rcl} 1-\frac{a-x_i}{M} ,& & {x_i<a}\\ 1 ,& & {a \leq x_i < b}\\ 1-\frac{x_i-b}{M} ,& & {x_i>b}\\ \end{array} \right. xi~=⎩ ⎨ ⎧1−Ma−xi,1,1−Mxi−b,xi<aa≤xi<bxi>b

例如

第二步 正向化矩阵标准化

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

此时标准化矩阵可能会存在负数,但是并不影响正常topsis的计算过程,但是当运用到熵权法时,则要求标准化矩阵都是正数,故需要将正向化矩阵进行另一种标准化方法,具体操作见后文。

第三步 计算得分并归一化

补充:如果各项指标带权重的话,只需要在每个欧氏距离前乘上对应权重即可

最后按照得分排序即可

带权重的TOPSIS

层次分析法

有n个评价对象,m个指标,可以根据层次分析法对这m个指标赋权重,缺点是层次分析法主观性太强

基于熵权法对于TOPSIS模型的修正

  • 熵权法依据的原理: 指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低。(客观 = 数据本身就可以告诉我们权重)
    (一种极端的例子:对于所有的样本而言,这个指标都是相同的数值,那么我们可认为这个指标的权值为0,即这个指标对于我们的评价起不到任何帮助)
  • 事情发生的概率越大,所包含的信息量越小;反之同理。
    假设 x x x表示事件 X X X可能发生的某种情况, p ( x ) p(x) p(x)表示这种情况发生的概率,我们可以定义: I ( x ) = − l n ( p ( x ) ) I(x)=-ln(p(x)) I(x)=−ln(p(x))

且由于 0 ≤ p ( x ) ≤ 1 0 \leq p(x) \leq 1 0≤p(x)≤1 故 I ( x ) ≥ 0 I(x)\geq0 I(x)≥0

那么事件 X X X的信息熵为:
H ( X ) = ∑ i = 1 n [ p ( x i ) I ( x i ) ] = − ∑ i = 1 n [ p ( x i ) l n ( p ( x i ) ) ] H(X)=\sum_{i=1}^{n}{[p(x_i)I(x_i)]}=-\sum_{i=1}^{n}{[p(x_i)ln(p(x_i))]} H(X)=i=1∑n[p(xi)I(xi)]=−i=1∑n[p(xi)ln(p(xi))]

可以证明当 p ( x 1 ) = p ( x 2 ) = p ( x 3 ) = . . . = p ( x n ) = 1 n p(x_1)=p(x_2)=p(x_3)=...=p(x_n)=\frac{1}{n} p(x1)=p(x2)=p(x3)=...=p(xn)=n1时, H ( X ) m a x = ln ⁡ n H(X)_{max}=\ln n H(X)max=lnn

随机变量的信息熵越大,则它的值能够给当前信息所补充的信息量越大,而已有的信息量越小。熵权法所关注的是已有的信息量,所以信息熵越大,信息越小。

步骤
第一步 正向化矩阵标准化

若 X X X中本身存在不负数,则执行TOPSIS第二步,即 z i j = x i j ∑ i = 1 n x i j 2 z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}} zij=∑i=1nxij2 xij ,从而得到标准化矩阵 Z Z Z。

若 X X X中本身存在负数 ,则需要对其执行另一种标准化方法,即 z i j ~ = x i j − m i n { x 1 j , x 2 j , . . . , x n j } m a x { x 1 j , x 2 j , . . . , x n j } − m i n { x 1 j , x 2 j , . . . , x n j } \tilde{z_{ij}}=\frac{x_{ij}-min\{x_{1j},x_{2j},...,x_{nj}\}}{max\{x_{1j},x_{2j},...,x_{nj}\}-min\{x_{1j},x_{2j},...,x_{nj}\}} zij~=max{x1j,x2j,...,xnj}−min{x1j,x2j,...,xnj}xij−min{x1j,x2j,...,xnj}

第二步 计算概率矩阵

p i j = z i j ~ ∑ i = 1 n z i j ~ p_{ij}=\frac{\tilde{z_{ij}}}{\sum^{n}{i=1}{\tilde{z{ij}}}} pij=∑i=1nzij~zij~

即每个数除以所在列和

容易验证 ∑ i = 1 n p i j = 1 \sum_{i=1}^{n}p_{ij}=1 ∑i=1npij=1 即保证各列和为1,即每个指标的概率和为1

第三步 计算每个指标的熵权
  • 计算信息熵: e j = − 1 ln ⁡ n ∑ i = 1 n p i j ln ⁡ ( p i j ) , ( j = 1 , 2 , . . . , m ) e_j=-\frac{1}{\ln n} \sum_{i=1}^{n}{p_{ij}\ln (p_{ij})} , (j=1,2,...,m) ej=−lnn1i=1∑npijln(pij),(j=1,2,...,m)
    与前面的 H ( X ) H(X) H(X)相比多除以了一个常数,是为了使信息熵和信息效用值落在 [ 0 , 1 ] [0,1] [0,1]
  • 计算信息效用值: d j = 1 − e j d_j=1-e_j dj=1−ej
    可以理解为是将信息熵正向化,这样信息效用值就和信息量以及权重成正比了
  • 计算熵权: W j = d j ∑ j = 1 m d j W_j=\frac{d_{j}}{\sum_{j=1}^{m}d_j} Wj=∑j=1mdjdj
    即实现信息效用值归一化

最后利用熵权计算得分即可

相关推荐
MC何失眠6 分钟前
vulnhub靶场【shenron】之3
网络·学习·web安全·网络安全
阳阳大魔王15 分钟前
动态高优先权优先进程调度
c语言·笔记·编辑器·操作系统
残月只会敲键盘25 分钟前
Python学习通移动端自动化刷课脚本,雷电模拟器近期可能出现的问题,与解决方案
学习
番茄灭世神29 分钟前
Qt学习笔记第61到70讲
笔记·学习
cwtlw1 小时前
Wallpaper壁纸制作学习记录10
经验分享·笔记·学习·生活
begei1 小时前
接口开发笔记-WebApi
笔记
为了孩子他娘而奋斗1 小时前
C语言数组和字符串笔记
c语言·笔记
小虎鲸722 小时前
Scratch节日作品 | 圣诞节礼物——体验节日的温馨与编程的乐趣! ❄️
学习·青少年编程·节日
赏你个麻辣烫儿2 小时前
日拱一卒(16)——leetcode学习记录:山脉数组峰值索引
学习·算法·leetcode
minos.cpp2 小时前
Rust之抽空学习系列(三)—— 编程通用概念(中)
开发语言·学习·rust