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. 说一说webpack的配置文件

    可能有一些友友会奇怪为什么在写webpack的配置文件的时候,我们只能用commonJS导出. 原因:在打包的时候需要运行webpack的配置文件里面的代码,而webpack在打包运行的环境在node ...

  2. 1、HTTP的基本概念与交互模型

    1.上网的整个过程 假设我们点击了某网页上的一个链接,指向清华大学院系设置,其URL是:http://www.tsinghua.edu.cn/chn/yxsz/index.html.我们来分析一下整个 ...

  3. revit添加扩展组件

    revit 添加组件方法: 查找本地这个地址: C:\Users\用户名\AppData\Roaming\Autodesk\Revit\Addins\2018 下载网上找到的插件,一般从github查 ...

  4. shrding-jdbc分表引起的坑

    1.sum等函数不能解析,报错 2.3.1版本,分页,计算出错,第二页以后数据出现问题 3.4.1版本,创建索引添加"`"关键字报错,因为会给索引名拼接上表名,组装后的sql错误.

  5. nginx配置https安全访问

    1.使用wosigncode生成CSR https://bbs.wosign.com/forum.php?mod=viewthread&tid=3526#lastpost 2.配置,选择第7小 ...

  6. k8s基本操作

    注意:k8s的很多操作需要指定命名空间,如果不指定,默认default的命名空间,很多东西就查不出来了 kubectl get cs # 查看集群状态kubectl get nodes # 查看集群节 ...

  7. 背景图片 css写法

    background: url('../../assets/sj-my.png') no-repeat; background-size: 100% 100%;

  8. el-admin登录详解

    1.进入登陆界面后,就会自动获取验证码. 2.前端访问auth/code接口获取后端生成的验证码(包括uuid,img,结果值),然后放入redis,设置2分钟过期,并返回识别码.图片url给前端. ...

  9. 代码大全_V2(1,2章笔记)

    译序 这本书讲什么 代码大全 原名叫 code complete,它是什么,又不是什么? 不是IDE中的代码自动补全功能 不是软件源代码 "大全" 是 "编码完成&quo ...

  10. MySQL学习(十)索引

    1.索引的种类 聚簇索引,非聚簇索引 主键索引,唯一索引,普通索引(前缀索引),全文索引 单值索引,复合索引 二级索引 覆盖索引 1.1 聚簇索引,非聚簇索引 参考文档: https://www.cn ...