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

server/2024/12/15 23:48:44/

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

文章目录

  • TOPSIS
    • 步骤
      • 第一步 原始矩阵正向化
        • 极小型指标-->极大型指标
        • 中间型指标-->极大型指标
        • 区间型指标-->极大型指标
      • 第二步 正向化矩阵标准化
      • 第三步 计算得分并归一化
    • 带权重的TOPSIS
      • 层次分析法
      • 基于熵权法对于TOPSIS模型的修正
        • 步骤
          • 第一步 正向化矩阵标准化
          • 第二步 计算概率矩阵
          • 第三步 计算每个指标的熵权

TOPSIS

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

topsis能充分利用原始数据的信息,精确地反映各评价方案之间的差距
可以解决层次分析法中决策层数据已知的情况,使评价结果更准确

步骤

第一步 原始矩阵正向化

常见的四种指标:极大型(效益型)指标、极小型(成本型)指标、中间型指标、区间型指标
在这里插入图片描述

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

极小型指标–>极大型指标

x = > m a x − x x =>max-x x=>maxx
当所有指标均为正数时,也可以
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{xixbest}
x i ~ = 1 − ∣ x i − x b e s t ∣ M \tilde{x_i}=1-\frac{|x_i-x_{best}|}{M} xi~=1Mxixbest
例如
在这里插入图片描述

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

[ 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{aminxi,maxxib}

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~= 1Maxi,1,1Mxib,xi<aaxi<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 0p(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=1n[p(xi)I(xi)]=i=1n[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}xijmin{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=1npijln(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=1ej
    可以理解为是将信息熵正向化,这样信息效用值就和信息量以及权重成正比了
  • 计算熵权: W j = d j ∑ j = 1 m d j W_j=\frac{d_{j}}{\sum_{j=1}^{m}d_j} Wj=j=1mdjdj
    即实现信息效用值归一化

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


http://www.ppmy.cn/server/150474.html

相关文章

WebRTC 基础

WebRTC 基础 目录 什么是 WebRTCWebRTC 的基本概念WebRTC 的基本流程 连接建立流程图 WebRTC 的基本对象 RTCPeerConnectionRTCSessionDescriptionRTCIceCandidate WebRTC API 详解 RTCPeerConnection API媒体流 API 详细的代码示例 基本连接示例完整的 WebRTC 实现示例 总结…

在C#中编程绘制和移动线段

这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时&#xff0c;光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时&#xff0c;光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…

前端面试题目 (Node.JS-Express框架)[二]

在 Express 中如何使用 Passport.js 进行身份认证? Passport.js 是一个 Node.js 的身份验证中间件&#xff0c;它可以很容易地与 Express 集成。下面是一个简单的示例&#xff0c;展示了如何使用 Passport.js 进行基本的身份认证。 安装依赖 npm install express passport …

SSM 架构下的垃圾分类系统,引领环保变革

摘 要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多国有企业的之中&#xff0c;随之就产生了“垃圾分类系统”&#xff0c;这样就让垃圾分类系统更加方便简单。 对于本垃圾分类系统的设计来说&#xff0c;系统…

网络术语MSS/MTU/TSO/Len说明

在网络通信中&#xff0c;MSS、MTU、Len 和 TSO 是与数据包传输相关的关键概念。以下是对这些概念的详细解释和它们之间的关系。 1. MSS&#xff08;Maximum Segment Size&#xff09; 1.1 定义 MSS 是 TCP 协议中的一个参数&#xff0c;表示 TCP 数据段中可以携带的最大数…

NLP-Huggingface基本使用方法

NLP的网络结构大同小异&#xff0c;只不过训练策略可能会不同。因为与图像cv不同&#xff0c;文本训练数据非常的多&#xff0c;cv可以使用10几张就可以获得特征向量&#xff0c;而文本做不到学几句话就能让计算机听得懂话。因此&#xff0c;我们都需要使用预训练模型&#xff…

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能&#xff0c;是通过获取手机设备&#xff0c;加速度传感器接口&#xff0c;获取其中的数值&#xff0c;进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…

EasyExcel设置表头上面的那种大标题(前端传递来的大标题)

1、首先得先引用easyExcel的版本依赖&#xff0c;我那 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency> 2、然后得弄直接的实体类&#xff0c;&…