前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

TOPSIS方法

qiguaw 2024-11-20 20:33:43 资源文章 35 ℃ 0 评论

TOPSIS方法

TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution),可翻译为逼近理解排序法,国内简称为优劣解距离法。

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

一、层次分析法回顾

层次分析法的局限:

  • 评价体系的方案层(决策层)不能够太多,太多的话n会很大,判断矩阵和一致矩阵的差异可能会很大
  • 并且RI的表格最多也只能有15个
  • 判断矩阵实际上是我们自己填入的,但是假设指标的数据是已知的,我们应该如何利用这些已知数据让评价结果更加准确呢?比如说有以下待评价表格:

学生

加权成绩

工时数

课外决赛得分

江红

89.7

32

5

时迎春

86.5

20

4

陶玲

90.1

10

6

江春秀

82.6

12

3

...

...

...

...


二、例题引出

假设要对宿舍的四个人进行一个排名,排名能够很好地反映成绩的高低

姓名

成绩

小明

89

小张

60

小王

74

小红

99

此时我们对各位同学进行评分:

姓名

成绩

排名

修正后的排名

评分

小明

89

2

3

3/10=0.3

小张

60

4

1

1/10=0.1

小王

74

3

2

2/10=0.2

小红

99

1

4

4/10=0.4

因为进行打分的时候直接按照排名来进行打分,那么成绩高的人评分反而越低,所以我们需要对排名进行修正,休正之后即可进行正确的评分。

但是这样还有一个问题,就是对于最高分和最低分,我们修改他们的修改之后,他的评分可能不发生变化,显然这是不客观的,比如,小红的成绩修改为90,小张的成绩修改为10之后,他们的评分不会发生变化,但是他们的分数却发生了很大的变化,这不利于描述他们的实际关系。

此时又产生了一个比较好的想法:

我们使用如下方式来构造一个评分方式:


使用上述评分准则来重新对宿舍四人的成绩进行打分

姓名

成绩

未归一化的评分

归一化之后的评分

小明

89

(89-60)/(99-60)=0.74

0.74/2.1=0.35

小张

60

(60-60)/(99-60)=0

0/2.1=0

小王

74

(74-60)/(99-60)=0.36

0.36/2.1=0.17

小红

99

(99-60)/(99-60)=1

1/2.1=0.48

可以发现此时还是和刚刚一样,变化最后一名和第一名的成绩,他们的评分依然不会改变。因为他们本身就是最高分和最低分,只要保证他们是最高分和最低分去变化他们的成绩,他们的评分就一直是1和0。

但是值得注意的是,卷面的最高分和最低分应该是100和0,此时再来做评分以及归一化,可得到

姓名

成绩

未归一化的评分

归一化之后的评分

小明

89

0.89

0.28

小张

60

0.60

0.19

小王

74

0.74

0.23

小红

99

0.9

0.30

这个表格可以很好的做关联性,并且分数的变化会引起评分的变化,但在实际的使用中并不会使用这个评分标准,

  • 首先,实际上大多数时候并不存在理论的上限和下限,如经济增长水平的指标:GDP增速
  • 其次,评价的指标要远大于两个,而不是像例题中的成绩一项
  • 最后,要评价的对象也远大于两个

所以,最常用的还是用已知数据的最大值和最小值来进行评价,即


三、问题拓展

新增加一个指标,从智商和情商两个方面来考察,成绩代表智商,与他人的争吵次数代表情商,现在来对下面的已知数据进行评价:

姓名

成绩

与他人争吵次数

小明

89

2

小张

60

0

小王

74

1

小红

99

3

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

此时,两种指标不可能都使用上面的评价标准,

3.1指标正向化

所以,需要统一指标类型:将所有的指标转化为极大型指标称为指标正向化(最常用)

姓名

成绩

与他人争吵次数

正向化之后的争吵次数

小明

89

2

1

小张

60

0

3

小王

74

1

2

小红

99

3

0

指标类型

极大型

极小型

极大型

极小型指标转化为极大型指标的方法:max-x

3.2 标准化处理

姓名

成绩

正向化之后的争吵次数

小明

89

1

小张

60

3

小王

74

2

小红

99

0

指标类型

极大型

极大型

就是说两个指标现在都是极大型指标了,我们能不能直接加和来进行评分呢?

显然是不能的,因为这两个指标的量纲不同,成绩为(分),争吵次数为(次)

对正向化矩阵进行标准化处理:消去不同量纲对不同指标的影响

标准化处理的计算公式:

假设有n个要评价的对象,m个评价指标(已经进行了指标正向化)构成的正向化矩阵如下:


那么,对其标准化的矩阵记为Z,Z中的每一个元素:,对X中的列元素平方求和开根号

经过标准化就变成了

代码为:

 X = [89 1;60 3; 74 2; 99 0];
 [n, m] = size(X)
 standard_Z = X./repmat(sum(X.*X).^0.5,n,1)

3.3计算得分

此时我们得到了标准化之后的矩阵:

姓名

成绩

争吵次数

小明

0.5437

0.2673

小张

0.3665

0.8018

小王

0.4520

0.5345

小红

0.6048

0

指标类型

极大型

极大型

只有一个指标的时候,评价公式为:

对其变形得到

可看作是

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

假设有n个要评价的对昂,m个评价指标的标准化矩阵:


定义最大值和最小值



就是对每列求出最大值和最小值

定义第i(i=1,2,...,n)个评价对象与最大值的距离为

定义第i(i=1,2,...,n)个评价对象与最小值的距离为

那么,我们可以计算出第i(i=1,2,...,n)个评价对象为归一化的得分:

很明显,即越大越小,即越接近最大值。

解例题

对于刚刚的题目,我们可以做出如下解答,首先我们得到标准化之后的矩阵:

姓名

成绩

争吵次数

小明

0.5437

0.2673

小张

0.3665

0.8018

小王

0.4520

0.5345

小红

0.6048

0

所以:


最大值Z+ = [0.6048, 0.8018],最小值Z- = [0.3665, 0]


对于小张、小王和小红依次计算即可

代码如下:

 X = [89 1; 60 3; 74 2; 99 0];
 [n, m] = size(A);
 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(max(Z),n,1).^2], 2) .^0.5  %D-向量


算出每位同学的D+,D-,我们就可以利用公式计算未归一化之后的得分:

姓名

D+

D-

未归一化的得分

归一化的分

排名

小明

0.5380

0.3206

0.3734

0.1857

3

小张

0.2382

0.8018

0.7709

0.3834

1

小王

0.3078

0.5413

0.6375

0.3170

2

小红

0.8018

0.2382

0.2291

0.1139

4

我们发现原本第一名的小红变成了第四名,why?不要慌,因为TOPSIS就是优劣解距离,优解就是最大值嘛,劣解就是最小值嘛。

四、TOPSIS介绍

C.L.Hwang和K.Yoon于1981年首次提出TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法。 TOPSIS法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。 基本过程为先将原始数据矩阵统-指标类型(一 般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

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

常见的四种指标:

指标名称

指标特点

例子

极大型指标

越大(多、高)越好

成绩、GDP增速、利润

极小型指标

越小(少、低)越好

成本、废品率

中间型指标

越接近某个值越好

PH值

区间型指标

落在某个区间最好

体温

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

极小 -> 极大

转换函数:max-x或者1/x(所有元素为正数时)

中间 -> 极大

中间型指标:不要太大也不要太小,取某个特定值最好(如PH值)

是一组中间型指标序列,且最佳的数值为,那么真相画的公式如下:


例如,有一组中间型指标,,所以M = 2

PH值(转换前)

PH值(转换后)

6

1-|6-7|/2 = 1/2

7

1-|7-7|/2 = 1

8

1-|8-7|/2 = 1/2

9

1-|9-7|/2 = 0

区间 -> 极大

区间型指标:直播落在某个区间最好,比如人体温度在36-37这个区间比较好。

\{x_i\}是一组中间型指标,且最佳的区间为[a,b],那么正向化的公式如下:


例如,有一组区间型指标,a = 36, b= 37 ,求得M = 1.4

体温(转换前)

体温(转换后)

35.2

0.4286

35.8

0.8571

36.6

1

37.8

0.4286

38.4

0

第二步 正向化矩阵标准化

假设有n个要评价的对象,m个评价指标(已经进行了指标正向化)构成的正向化矩阵如下:


那么,对其标准化的矩阵记为Z,Z中的每一个元素:,对X中的列元素平方求和开根号

第三步 计算得分并归一化

假设有n个要评价的对昂,m个评价指标的标准化矩阵:


定义最大值和最小值



就是对每列求出最大值和最小值

定义第i(i=1,2,...,n)个评价对象与最大值的距离为

定义第i(i=1,2,...,n)个评价对象与最小值的距离为

那么,我们可以计算出第i(i=1,2,...,n)个评价对象为归一化的得分:

很明显,即越大越小,即越接近最大值。

五、模型拓展

我们之前默认各个指标权重相同,但是实际中,m个指标可能会有不同的权重。

只需要将上述第三部中的D+、D-做出变化,乘一个即可

定义第i(i=1,2,...,n)个评价对象与最大值的距离为

定义第i(i=1,2,...,n)个评价对象与最小值的距离为

5.1 带权重的TOPSIS

这个权重我们可以使用上一节的层次分析法来确定各个指标的权重,此时,TOPSIS就变为带权重的TOPSIS

此时确定的各个权重

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表