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. GIMP选择,GIMP画布大小,GIMP图层

    基本概念 1. 画布 2. 图层 你只能操作一个图层--就是你选中的.就看起来所有的图像都在一起,但是不同的图层中的图像是不同,不能操作没有选中的图层. 对于选择操作,要注意你选中的图层. 要获取图像 ...

  2. idea好用的功能

    1. 自定义快捷输入 ----https://blog.csdn.net/qq_35091353/article/details/11828025 可以将一些常用的语法,比如各种lamda表达式.tr ...

  3. UI自动化之【chromedriver.exe无法删除问题】

    想删掉chromedriver.exe,结果提示被打开 在任务管理器中,找到Chromedriver.exe,结束进程

  4. springboot 项目启动后访问不论什么请求的是spring的注册页面Please sign in Username || springboot禁用security

    解决方法: 1.在启动类上添加注解@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class}) 2.或者:@SpringB ...

  5. 1402:Vigenère密码

    [题目描述] 6世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法--Vigenère密码.Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为 ...

  6. 使用navicat连接本地数据库时,出现错误1251错误

    在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication protocol r ...

  7. 使用Microsoft Network Monitor 抓包分析文件上传

    Microsoft 自己提供了一个官方的抓包工具,可以比较方便的在windows平台抓包,并可以提供协议关键字正则.安装包位置:\\192.168.10.248\public\ghw\tools\MN ...

  8. js字符串常用的方法

    1.  charAt( ) 获取指定下标处的字符 let str = 'hello' console.log(str.charAt(0));//h 2.  charCodeAt 获取下标出的字符的Un ...

  9. Windows10常用快捷键总结

    --Windows10常用快捷键总结 1. Window键: 打开或关闭|开始菜单 2. Win + A 打开操作中心 3. Win + D 显示桌面 4. Win + E 打开计算机文件管理器 5. ...

  10. 1012.Django中间件以及上下文处理器

    一.中间件 中间件的引入: Django中间件(Middleware)是一个轻量级.底层的"插入"系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. d ...