TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。TOPSIS全称Technique for Order Preference by Similarity to an Ideal Solution ,TOPSIS法是C.L.Hwang和K.Yoon于1981年首次提出的,它根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。作为一种逼近于理想解的排序法,该方法只要求各效用函数具有单调递增(或递减)性就行,它是多目标决策分析中一种常用的有效方法,国内常简称为优劣解距离法或理想点法。

一、TOPSIS法的原理

设多属性决策方案集为\(D=\{d_1,d_2,\cdots,d_m\}\),衡量方案优劣的属性变量为\(\{x_1,\cdots,x_n\}\),这时方案集D中的每个方案\(d_i(i=1,\cdots,m)\)的\(n\)个属性值构成的向量是\([a_{i1},\cdots,a_{in}]\),它作为\(n\)维空间中的一个点,能唯一地表征方案\(d_i\)。

正理想解\(C^*\)是一个方案集\(D\)中并不存在的虚拟的最佳方案,它的每个属性值都是决策矩阵中该属性的最好值;而负理想解\(C^0\)则是虚拟的最差方案,它的每个属性值都是决策矩阵中该属性的最差值。在\(n\)维空间中,将方案集\(D\)中的各备选方案\(d_i\)与正理想解\(C^*\)和负理想解\(C^0\)的距离进行比较,既靠近正理想解又远离负理想解的方案就是方案集\(D\)中的最佳方案;并可以据此排定方案集\(D\)中各备选方案的优先序。

为什么既用正理想解,又用负理想解?

考虑到只有一个正理想解时可能会出现两个方案离正理想解距离相同的情况。​ 基本过程为先将原始数据矩阵统一指标类型(一般正向化处理) 得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指 标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分 别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对 象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

用理想解法求解多属性决策问题的概念简单,只要在属性空间定义适当的距离测度就能计算备选方案与理想解的距离。TOPSIS法所用的是欧氏距离。至于既用正理想解又用负理想解是因为在仅仅使用正理想解时有时会出现某两个备选方案与正理想解的距离相同的情况,为了区分这两个方案的优劣,引入负理想解并计算这两个方案与负理想解的距离,与正理想解的距离相同的方案离负理想解远者为优。

二、TOPSIS的算法步骤

TOPSIS法的具体算法如下:

用向量规划化的方法求得规范决策矩阵

设多属性决策问题的决策矩阵\(A=(a_{ij}​)_{m×n​}\),规范化决策矩阵\(B=(b_{ij}​)_{m×n​}\)​,其中

\[b_{ij}=\frac{a_{ij}}{\sqrt{\sum_{i=1}^{m}a_{ij}^2}}, i=1,2,\cdots m; j=1,2,\cdots,n \quad (1)
\]

构造加权规范阵\(\mathbf{C}=(c_{ij})_{m\times n}\)

设由决策人给定各属性的权重向量为$ \mathbf{w}=[w_1,w_2,\cdots,w_n]^T$,则

\[ c_{ij}=w_j\cdot b_{ij}, i=1,2,\cdots,m; j=1,2,\cdots,n\quad (2)
\]

确定正理想解 和负理想解

设正理想解 \(C^*\)的第 \(j\)个属性值为\(c_j^*\),负理想解\(C^0\)第\(j\)个属性值为\(c_j^0\),则

正理想解:

\[c_j^*=
\begin{cases} \max_i{c_{ij}}, j为效益型属性,\\\min_i{c_{ij}}, j为成本型属性, \end{cases} \quad j=1,2,⋯,n\quad (3)
\]

负理想解:

\[c_j^0=
\begin{cases} \min_i{c_{ij}}, j为效益型属性,\\ \max_i{c_{ij}}, j为成本型属性,\end{cases} \quad j=1,2,⋯,n \quad(4)
\]

计算各方案到正理想解与负理想解的距离

备选方案\(d_i\)到正理想解的距离为

\[s_i^*=\sqrt{\sum_{j=1}^{n}{(c_{ij}-c_j^*)^2}}, i=1,2,\cdots,m \quad(5)
\]

备选方案\(d_i\)到负理想解的距离为

\[ s_i^0=\sqrt{\sum_{j=1}^{n}{(c_{ij}-c_j^0)^2}}, i=1,2,\cdots,m \quad (6)
\]

计算各方案的排序指标值(即综合评价指数)

\[f_i^*=s_i^0/(s_i^0+s_i^*), i=1,2,\cdots,m\quad (7)
\]

按\(f_i^*\)​由大到小排列方案的优劣次序。

三、R语言计算示例

研究生院试评估: 为了客观地评价我国研究生教育的实际状况和各研究生院的教学质量,国务院学位委员会办公室组织过一次研究生院的评估。为了取得经验,先选5所研究生院,评价五所研究生院教学质量,收集有关数据资料进行了试评估。下表给出所用数据:

人均专著\(x_1\)(本/人) 生师比\(x_2\) 科研经费\(x_3\) (万元、年) 逾期毕业率\(x_4\) (%)
1 0.1 5 5000 4.7
2 0.2 6 6000 5.6
3 0.4 7 7000 6.7
4 0.9 10 10000 2.3
5 1.2 2 400 1.8

3.1 构造初始决策矩阵

\(D=(d_{ij})_{m \times n}\)。据题意可以判断\(x_1,x_3\)是效益型属性,$x_2,x_4 $为消费型属性.

D <- matrix(c(0.1, 0.2, 0.4, 0.9, 1.2,
1/5, 1/6, 1/7, 1/10, 1/2,
5000, 6000, 7000, 10000, 400,
1/4.7, 1/5.6, 1/6.7, 1/2.3, 1/1.8), nrow = 5)

3.2 数据预处理

按列(属性)对决策矩阵\(D\)归一化

col_sum <- apply(D, 2, sum) # 2代表列
ColSum <- matrix(c(col_sum, col_sum, col_sum, col_sum, col_sum ), nrow = 5, byrow = T) # 按行填入
R <- D/ColSum
R
[,1] [,2] [,3] [,4]
[1,] 0.03571429 0.18025751 0.17605634 0.13897831
[2,] 0.07142857 0.15021459 0.21126761 0.11664251
[3,] 0.14285714 0.12875536 0.24647887 0.09749224
[4,] 0.32142857 0.09012876 0.35211268 0.28399915
[5,] 0.42857143 0.45064378 0.01408451 0.36288780

3.3 信息熵法计算权重

Entropy <- function(x) -sum(x*log(x))/log(5)
E <- apply(R, 2, Entropy)
F <- 1 - E
w <- F/sum(F)
 w
[1] 0.3670204 0.2179919 0.2510037 0.1639840

3.4 正理想和负理想解

#赋权
W <- diag(w)
V <- R %*% W
#计算正理想解和负理想解
v_max <- apply(V, 2, max)
v_min <- apply(V, 2, min)

3.5 与正理想解的相对接近度计算

#计算正负理想距离
V_MAX <- matrix(c(v_max, v_max, v_max, v_max, v_max), nr = 5, byrow = TRUE)
V_MIN <- matrix(c(v_min, v_min, v_min, v_min, v_min), nr = 5, byrow = TRUE)
fun <- function(x) sqrt(sum(x^2))
s_max <- apply(V-V_MAX, 1, fun)
s_min <- apply(V-V_MIN, 1, fun)
C <- s_min/(s_max + s_min)
C
[1] 0.2157095 0.2533230 0.3423939 0.6089369 0.6669153

因此五所研究院的得分为0.2157095, 0.2533230, 0.3423939, 0.6089369, 0.6669153,故五所研究院的排名顺序5 > 4 > 3 > 2 > 1。

总结

Topsis 法是理解解的排序方法,它借助于评价问题的正理想解和负理想解,对各评价对象进行排序。所谓正理想解是一个虚拟的最佳对象,其每个指标值都是对所有评价对象中的该指标的最好值;而负理想解是另一个虚拟的最差对象,其每个指标值都是所有评价对象中该指标的最差值。求出各评价对象与正理想解和负理想解的距离,并依次对各评价对象进行优劣排序。

参考文献

TOPSIS算法

R语言实战Topsis综合评价法

综合评价与决策方法01——理想解法

系统评价——理想点TOPSIS法的R语言实现(五)的更多相关文章

  1. 从零开始学习R语言(五)——数据结构之“列表(List)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125678 ...

  2. 基于R语言的时间序列指数模型

    时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...

  3. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 分箱法在实际案例操作过程中较为常见,能够将一些 ...

  4. 几种经典排序算法的R语言描述

    1.数据准备 # 测试数组 vector = c(,,,,,,,,,,,,,,) vector ## [] 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),ord ...

  5. R语言 常见模型

    转自 雪晴网 [R]如何确定最适合数据集的机器学习算法 抽查(Spot checking)机器学习算法是指如何找出最适合于给定数据集的算法模型.本文中我将介绍八个常用于抽查的机器学习算法,文中还包括各 ...

  6. R语言学习笔记:向量

    向量是R语言最基本的数据类型. 单个数值(标量)其实没有单独的数据类型,它只不过是只有一个元素的向量. x <- c(1, 2, 4, 9) x <- c(x[1:3], 88, x[4] ...

  7. R语言书籍的学习路线图

    现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...

  8. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  9. 机器学习与R语言

    此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...

  10. 线性函数拟合R语言示例

    线性函数拟合(y=a+bx) 1.       R运行实例 R语言运行代码如下:绿色为要提供的数据,黄色标识信息为需要保存的. x<-c(0.10,0.11, 0.12, 0.13, 0.14, ...

随机推荐

  1. (1)从txt读取GPS数据 真实GPS和slam定位GPS匹配 坐标系ecef和enu转化 计算均方根误差和单帧误差

    #!/usr/bin/python # -*- coding: UTF-8 -*- import numpy as np import os #==========================1坐 ...

  2. maven项目资源导出问题

    maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案: <!--在build中配置resources,来防止我们资源导出失败的问题--> ...

  3. CF527D 题解

    题意:数轴上有 \(n\) 个点,第 \(i\) 个点的坐标为 \(x_i\),权值为 \(w_i\).两个点 \(i,j\) 之间存在一条边当且仅当 \(abs(x_i-x_j)\geq w_i+w ...

  4. Docker系列--Docker设置系统资源限制及验证

    1.限制容器的资源 默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源.Docker提供了控制容器可以使用多少内存或CPU的方法,设置docker run命令的运行时配置标 ...

  5. uniapp调起微信支付查询订单状态逻辑处理

    首先看页面效果: <template> <view class="page"> <view class="page-bd"> ...

  6. docker知识篇

    什么是Docker?Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).b ...

  7. C语言初级阶段5——函数1

    C语言初级阶段5--函数1 函数的基本概念 1.函数:理解为封装功能的容器. 主函数是函数的入口 2.函数定义的基本格式: 返回值类型:常用的基本数据类型,执行完以后,函数会得到一个什么类型的值,如果 ...

  8. 面向对象ooDay9

    精华笔记: 多态:多种形态 同一个对象被造型为不同的类型时,有不同的功能-------所有对象都是多态的(明天总结详细讲) 对象的多态:水.我.你...... 同一类型的引用在指向不同的对象时,有不同 ...

  9. 借助5G智能网关实现无人化智慧农业应用

    发展智慧农业是新时代的必由之路.依托5G+物联网技术赋能农业生产,能够实现更少的人员需求,更大面积的综合土地管理,更实时精细的生产环境监测,更智能的生产自主管控.5G技术正以其广连接.低时延的优势,助 ...

  10. 智汇成城 ,创赢未来 | AI+产业峰会智慧城市专场在深成功举办!

    11月4日下午,由福田区人才工作局指导,广州英码信息科技有限公司和共达地创新技术(深圳)有限公司联合主办,深圳市人工智能行业协会承办的AI+产业峰会之智慧城市专场活动在深圳市南山区成功举办. &quo ...