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

本文详细介绍了TOPSIS法及其与熵权法的结合应用,涵盖了正向化处理、标准化、权重计算和整个建模流程,适合数学建模初学者理解并应用于实际问题中。

最近在学习数学建模,在B站发现一个特别不错的课程,讲的很全面,常考的算法都有涉及到:清风数学建模

本文将结合熵权法介绍TOPSIS法,并将淡化原理的推导,更侧重于具体应用。

TOPSIS法

概述

TOPSIS法(优劣解距离法)是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。同时TOPSIS法也可以结合熵权法使用确定各指标所占的权重。

基本过程

一、统一指标类型

常见的四种指标如下:
在这里插入图片描述

在进行建模之前需要对所有的指标进行正向化处理,正向化的过程就是将所有指标类型统一转化为极大型指标(越大越好)的过程(转换函数形式不唯一)。假设原始数据序列为x,则各类型指标转化为极大型指标的方法如下:

  1. 极小型指标→极大型指标:
    max - x
  2. 中间型指标→极大型指标:
    假设最佳数值为xbest,X为正向化后的序列,则正向化公式为:
    M = max{|xi-xbest|},X = 1 - |xi-xbest|/M
  3. 区间型指标→极大型指标:
    假设最佳区间为[a,b],则正向化公式如下:
    M = max{a - min{x},max{x}-b}

在这里插入图片描述

二、正向化矩阵标准化

标准化的目的是消除不同指标量纲的影响
设正向化矩阵为X,则标准化矩阵Z为:
在这里插入图片描述
除上述方法以外,还有许多方法,如:(x - x的均值) / x的标准差,具体选用哪一种方法在多数情况下并没有很大限制。

三、计算得分并归一化

假设有n个要评价的对象,m个评价指标的大小为 n×m 标准化矩阵Z。
定义最大值:
在这里插入图片描述

定义最小值:
在这里插入图片描述

定义第 i 个评价对象与最大值的距离:
在这里插入图片描述

定义第 i 个评价对象与最小值的距离:
在这里插入图片描述

可以计算第 i 个评价对象未归一化的得分:
在这里插入图片描述

将得分归一化(得分归一化不影响排序):
在这里插入图片描述

以上分析过程未考虑指标的权重,可以使用熵权法来确定各指标的权重

综上所述,算法基本过程如下:

  1. 将原始数据矩阵进行正向化处理, 得到正向化矩阵;
  2. 对正向化矩阵进行标准化处理以消除各指标量纲的影响,并找出有限方案中的最优方案与最劣方案;
  3. 分别计算各评价对象与最优方案和最劣方案之间的距离;
  4. 根据“构造计算评分公式”获得各评价对象与最优方案的接近程度,作为评价优劣的依据。

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

基本原理

熵权法是一种客观赋权的方法,依据的原理为:指标的变异程度越小,所反映的信息量也越少,其对应的权值也越低(客观等同于数据本身就可以告诉我们权重)。
熵权法的性质:越有可能发生的事情,信息量越少;越不可能发生的事情,信息量就越多。信息量与概率的函数关系如下:
在这里插入图片描述

设 x 为事件X发生的某种情况,p(x) 表示这种情况发生的概率,则 I(x) = -ln(p(x))。
定义事件 X 的信息熵为:
在这里插入图片描述

即,信息熵的本质是对信息量的期望值。对于熵权法而言,因为关注的是已有的信息,所以信息熵越大,信息量越小(随机变量的信息熵越大,则它的值(内容)能为你补充的信息量越大,而在知道这个值之前你已有的信息量越小)。

熵权法的计算步骤

  1. 判断矩阵中是否存在负数,如果有则要重新标准化到非负区间(后续步骤计算概率时要保证每一个元素为非负数):
    假设有 n 个要评价的对象,m 个评价指标(已经经过正向化),构成正向化矩阵 X,则其标准化的矩阵Z中每一个元素满足:
    在这里插入图片描述

如果矩阵 Z 中存在负数,则要对 X 使用另一种标准化方法:
在这里插入图片描述

  1. 计算第 j 项指标下第 i 个样本所占的权重,并将其看作相对熵计算中用到的概率:
    对于上一步得到的非负标准化矩阵,计算其概率矩阵P,且P中每一个元素的计算公式如下:
    在这里插入图片描述

  2. 计算每一个指标的信息熵,并计算信息效用值,并归一化得到的每个指标的熵权
    对于第 j 个指标而言,其信息熵的计算公式为:
    在这里插入图片描述

信息效用值的定义:
在这里插入图片描述

将信息效用值进行归一化,就能得到每个指标的熵权:
在这里插入图片描述

考虑权重的TOPSIS法

上述介绍的TOPSIS法未考虑各指标的权重,当使用熵权法计算出各指标的权重时,仅需要重新计算各评价对象的D+与D-即可,其它步骤与上述未考虑权重的步骤相同。
定义第 i 个评价对象与最大值的距离:
在这里插入图片描述

定义第 i 个评价对象与最小值的距离:
在这里插入图片描述

由于最近比较忙的原因,所以本文可能存在不完善的地方,后续会继续完善文章。

### 使用熵权法改进TOPSIS模型的方 #### 方概述 传统的TOPSIS依赖于主观赋予权重来衡量不同指标的重要性。然而,这种方可能导致结果偏差,因为人为设定的权重可能无完全反映实际情况。为了克服这一局限性,可以引入熵权法自动计算各个指标的客观权重。 熵权法通过分析数据本身的离散程度来确定各指标的重要度。具体来说,如果某个指标的数据差异较大,则该指标对于区分备选方案更为重要;反之则不那么重要。因此,利用熵权法能够更科学合理地分配权重给不同的评估标准[^2]。 #### 改进后的流程说明 1. **数据预处理** - 对原始数据进行必要的清洗和转换操作; - 将所有效益型指标转化为成本型指标或相反(视具体情况而定),使得后续计算统一方向上的最优解。 2. **标准化处理** - 鉴于不同量纲之间可能存在数量级差异,在比较之前需先做无量纲化变换。 3. **构建概率矩阵并求取信息熵** - 根据标准化后的数值建立相应的概率分布表; - 应用公式\[E_j=-k\sum_{i=1}^{m}(p_{ij}\ln p_{ij})\]计算第\(j\)项特征的信息熵值,其中\(k=\frac{1}{\ln m}\),\(m\)表示样本总数。\(^4] 4. **获取信息效用值与权重向量** - 利用\[g_j=(1-E_j)\]得到各项属性的信息效用值; - 权重定义为:\[\omega_j=\frac{g_j}{\sum g_i}, i \in [1,n]\],这里n代表总的属性数目. 5. **计算加权规范化决策矩阵中的理想点坐标** - 正理想解(A+)\[A^+=max(\omega_iz_{ij}), j \in J_B; min(\omega_iz_{ij}), j \in J_C\] - 负理想解(A-)\[A^-=min(\omega_iz_{ij}), j \in J_B; max(\omega_iz_{ij}), j \in J_C\] 这里,\(J_B,J_C\)分别指代收益类, 成本类指标集合.\(^1] 6. **测量相对接近度** - 分别求得每个待评对象到正负理想点的距离D+, D-, 并据此得出贴近度C*. 7. **排序输出最终结果** ```python import numpy as np from math import log def entropy_weight(data): """Calculate the weight vector using Entropy Method""" # Step 0: Data Preprocessing & Normalization norm_data = data / np.sum(data, axis=0) # Step 1: Construct Probability Matrix P and Calculate Information Entropy E prob_matrix = norm_data / np.tile(np.sum(norm_data, axis=0), (data.shape[0], 1)) epsilon = 1e-6 # Avoid division by zero error when calculating ln(p_ij) info_entropy = -np.sum(prob_matrix * np.log(prob_matrix + epsilon), axis=0) / log(len(data)) # Step 2: Get Utility Value G And Weight Vector Omega utility_value = 1 - info_entropy omega_vector = utility_value / sum(utility_value) return omega_vector if __name__ == "__main__": # Example dataset with three attributes for five alternatives example_dataset = np.array([[0.8, 0.6, 0.9], [0.7, 0.8, 0.7], [0.6, 0.9, 0.6], [0.9, 0.7, 0.8], [0.7, 0.7, 0.7]]) weights = entropy_weight(example_dataset) print(f"Weights calculated via Entropy Method are {weights}") ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值