其他分享
首页 > 其他分享> > TOPSIS法(优劣解距离法)

TOPSIS法(优劣解距离法)

作者:互联网

目录

一、模型介绍

二、模型总结

1、将原始矩阵正向化

2、正向化矩阵标准化

3、计算得分并归一化

三、代码详解

四、模型拓展


一、模型介绍

层次分析法的一些局限性:

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

(2)若决策层中指标的数据是已知的,那么我们无法利用数据来使得评价的更加准确。

开始举例:

小明同宿舍共有四名同学,他们第一学期的高数成绩如下表所示:

姓名         成绩
小明         89
小王         60
小张         74
花花         99

请你为这四名同学进行评分,该评分能合理的描述其高数成绩的高低。

逐步解决问题的过程:

1、先类比上一讲层次分析法中要求的那个权重

该想法看上去是不合理的。

因为可以随便修改成绩,只要保证排名不变,那么评分就不会改变! 

2、那么比较好的做法是什么呢?

最高成绩max : 99

最低成绩min : 60

构造计算评分的公式: 

 这时候就得到下表:

 这里要解释三点:

(1)比较的对象一般要远大于两个。(例如比较一个班级的成绩)

(2)比较的指标也往往不只是一个方面的,例如成绩、工时数、课外竞赛得分等。

(3)有很多指标不存在理论上的最大值和最小值,如衡量经济增长水平的指标:GDP增速。

这种做法明显较为妥当!

现在我们将问题拓展一下:增加指标个数。

新增加了一个指标,现在要综合评价四位同学,并为他们进行评分。

 解释:

成绩是越高(大)越好,这样的指标称为极大型指标(效益型指标)。

与他人争吵的次数越少(越小)越好,这样的指标称为极小型指标(成本型指标)。

逐步解决拓展问题的过程:

1、统一指标类型

将所有的指标转化为极大型称为指标正向化(最常用)。

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

2、标准化处理

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

标准化处理的计算公式:

 

代码:

X = [89,1; 60,3; 74,2; 99,0]

[n , m] = size(X)

X ./ repmat(sum(X.*X) .^ 0.5, n, 1)

那么如何计算得分呢?

 

 类比只有一个指标计算得分:

 具体是如下图处理:

X = [89,1;60,3;74,2;99,0]
[n , m] = size(X);
Z = X ./ repmat(sum(X.*X) .^ 0.5,n,1);
D_P = sum([(Z - repmat(max(Z),n,1)).^2 ],2) .^ 0.5      %D+向量
D_N = sum([(Z - repmat(min(Z),n,1)).^2 ],2) .^ 0.5       %D-向量 

得:

二、模型总结

1、将原始矩阵正向化

最常见的四种指标:

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

(1)极小型指标 → 极大型指标

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

如果所有的元素均为正数,那么也可以使用 1 / x

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

(2)中间型指标 → 极大型指标

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

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

 (3)区间型指标 → 极大型指标

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

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

2、正向化矩阵标准化

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

注意:标准化的方法有很多种,其主要目的就是去除量纲的影响,未来我们还可能见到更多种的标准化方法,例如:(x‐x的均值)/x的标准差;具体选用哪一种标准化的方法在多数情况下并没有很大的限制,这里我们采用的是前人的论文中用的比较多的一种标准化方法。 

3、计算得分并归一化

标签:disp,TOPSIS,优劣,矩阵,距离,指标,向量,正向,输入
来源: https://blog.csdn.net/m0_52711790/article/details/121268224