第二讲 综合评价分析—TOPSIS法

TOPSIS法简称优劣解距离法,是一种常用的综合评价法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。


层次分析法的一些局限性

(1)评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大

(2)如果决策层指标的数据是已知的,那么我们如何利用这些数据来使得评价的更加准确呢?

例如:

学生加权成绩工时数课外竞赛得分
A89.7325
B86.5204
C87146
D88389
............

如何利用已知的数据来推举出优秀学生?(显然不能使用层次分析法,这时应使用TOPSIS法


TOPSIS法三点解释

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

构造计算评分的公式:

 成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)
与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)

这种时候应统一指标类型:将所有的指标转化为极大型称为指标正向化(最常用)

极小型指标转换为极大型指标的公式: max-x

姓名                成绩(分)        与他人争吵的次数(次)       正向化后的争吵次数
小明                   89                                  2                                            1
小王                   60                                  0                                            3
小张                   74                                  1                                            2
清风                   99                                  3                                            0
指标类型         极大型                          极小型                                   极大型

 为了消去不同指标量纲的影响,需要对已经正向化的矩阵进行标准化处理

标准化不会影响相对大小。


 如何计算得分?

只有一个指标的时候:
构造计算评分的公式:

变形:

 
可看作:

𝒙与最小值的距离  /  𝒙与最大值的距离 + 𝒙与最小值的距离

 

 归一化得出得分后进行排序。


基本过程

1.将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,

2.对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,

3.分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。

该方法对数据分布及样本含量没有严格限制,数据计算简单易行。


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

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

      所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为极大型指标。(转换的函数形式可以不唯一 )

极小型指标\rightarrow 极大型指标:

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

 中间型指标\rightarrow极大型指标:

 中间型指标:指标值既不要太大也不要太小,取某特定值最好(如水质量评估 PH 值)

 注意:正向化的公式不唯一,大家也可以结合自己的数据进行适当的修改。

 区间型指标\rightarrow极大型指标

区间型指标:指标值落在某个区间内最好,例如人的体温在36°~37°这个区间比较好。

第二步:正向化矩阵标准化

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

第三步:计算得分并归一化


 模型拓展:

问题:计算得分时指标的权重默认为相同的

改进方法:计算得分时乘以权重

 带权重的TOPSIS法:

缺点:层次分析法的主观性太强了,更推荐大家使用熵权法来进行客观赋值


代码优化:

请你改编代码,使用户能选择是否加入指标的权重计算。

提示:用if函数判断用户的输入


感谢观看!

  • 15
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)综合评价是一种常用的多属性决策分析,在实际工作中得到了广泛的应用。Python中有多种方可以实现TOPSIS综合评价,下面介绍其中一种方: 首先,需要导入相关的库: ```python import numpy as np import pandas as pd ``` 接着,我们可以定义一个函数来计算TOPSIS综合评价的结果: ```python def topsis(data, weights, impacts): """ :param data: 数据矩阵,每行表示一个评价对象,每列表示一个评价指标 :param weights: 权重向量,表示各个评价指标的重要程度 :param impacts: 影响向量,表示各个评价指标对综合评价结果的影响方向,1表示正向,-1表示负向 :return: 综合评价结果,返回一个元组,第一个元素是各个评价对象相对于最优解的距离,第二个元素是各个评价对象相对于最劣解的距离,评价对象按照最优解距离的升序排列 """ # 标准化数据矩阵 norm_data = data / np.sqrt((data ** 2).sum(axis=0)) # 加权标准化数据矩阵 weight_norm_data = norm_data * weights # 计算正负理想解 ideal_best = np.max(weight_norm_data, axis=0) ideal_worst = np.min(weight_norm_data, axis=0) # 计算各个评价对象相对于最优解和最劣解的距离 best_dist = np.sqrt(((weight_norm_data - ideal_best) ** 2).sum(axis=1)) worst_dist = np.sqrt(((weight_norm_data - ideal_worst) ** 2).sum(axis=1)) # 计算综合评价结果 result = (worst_dist / (best_dist + worst_dist)).argsort() return best_dist, worst_dist, result ``` 其中,`data`表示数据矩阵,每行表示一个评价对象,每列表示一个评价指标;`weights`表示权重向量,表示各个评价指标的重要程度;`impacts`表示影响向量,表示各个评价指标对综合评价结果的影响方向,1表示正向,-1表示负向。 接下来,我们可以用一个例子来演示如何使用TOPSIS综合评价: ```python # 定义数据矩阵 data = np.array([ [0.8, 0.6, 0.5, 0.2], [0.6, 0.7, 0.4, 0.3], [0.7, 0.4, 0.6, 0.4], [0.4, 0.3, 0.8, 0.5] ]) # 定义权重向量 weights = np.array([0.4, 0.3, 0.2, 0.1]) # 定义影响向量 impacts = np.array([1, 1, -1, -1]) # 计算综合评价结果 best_dist, worst_dist, result = topsis(data, weights, impacts) # 输出结果 print('Best distance:', best_dist) print('Worst distance:', worst_dist) print('Ranking:', result) ``` 运行结果如下: ``` Best distance: [0.33221779 0.38349881 0.33531014 0.46499137] Worst distance: [0.52721903 0.51664544 0.58259519 0.55799589] Ranking: [0 2 1 3] ``` 其中,`Best distance`表示各个评价对象相对于最优解的距离,`Worst distance`表示各个评价对象相对于最劣解的距离,`Ranking`表示评价对象按照最优解距离的升序排列。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值