TOPSIS 法是一种综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。
1 模型概览
1.1 模型分属
1.2 历史发展
TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首次提出,TOPSIS法根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。
2 模型介绍2.1 具体模型介绍2.1.1 将原始数据矩阵正向化2.1.2 构造归一化初始矩阵2.1.3 确定最优方案和最劣方案2.1.4 计算各评价对象与最优方案、最劣方案的接近程度2.1.5 计算各评价对象与最优方案的贴近程度 2.1.6 根据 大小进行排序,给出评价结果2.2 确定指标权重的方法2.2.1 基于信息论的熵值法(数据差异程度)2.2.2 (AHP)层次分析法定权重2.3 模型缺点3 模型应用3.1 常见应用场景3.2 数学建模竞赛应用4 软件/程序介绍4.1 模拟介绍指标属性同向化函数代码TOPSIS法算法实现过程4.2 MATLAB实现Matlab实现TOPSIS法源程序
2 模型介绍
2.1 具体模型介绍
2.1.1 将原始数据矩阵正向化
基本原理:通过检测评价对象与最优解、最劣解的距离来进行排序,若评价对象最靠近最优解同时又最远离最劣解,则为最好;否则不为最优。其中最优解的各指标值都达到各评价指标的最优值。最劣解的各指标值都达到各评价指标的最差值。
也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。
1.1 极小型指标:期望指标值越小越好。(如患病率、死亡率等)
或
其中M 为指标 x 可能取值的最大值
1.2 中间型指标:期望指标值既不要太大也不要太小,适当取中间值最好。(如水质量评估PH值)
其中 为指标 x 的可能取值的最大值, 为指标 的可能取值的最小值。
1.3 区间型指标:区间型指标:期望指标的取值最好落在某一个确定的区间最好(如体温)
其中 为指标 x 的最佳稳定区间, 为最大容忍区间
2.1.2 构造归一化初始矩阵
设共有 个待评价对象,每个对象都有 个指标(属性),则原始数据矩阵构造为:
构造加权规范矩阵,属性进行向量规范化,即每一列元素都除以当前列向量的范数(使用余弦距离度量)
由此得到归一化处理后的标准化矩阵 Z :
2.1.3 确定最优方案和最劣方案
最优方案 由 Z 中每列元素的最大值构成:
最劣方案 Z^{-} 由 Z 中每列元素的最小值构成:
2.1.4 计算各评价对象与最优方案、最劣方案的接近程度
其中 为第 j 个属性的权重(重要程度),指标权重建议根据实际确定或使用专家评估方法。在本文第 4 部分也提供了两种常用的确定权重的方法及简要分析。
2.1.5 计算各评价对象与最优方案的贴近程度
表明评价对象越优。
此处也可以将分子设置为 表示与最劣方案的贴近程度, 此时表明评价对象越优
2.1.6 根据 大小进行排序,给出评价结果
2.2 确定指标权重的方法
2.2.1 基于信息论的熵值法(数据差异程度)
基于信息论的熵值法是根据各指标所含信息有序程度的差异性来确定指标权重的客观赋权方法,仅依赖于数据本身的离散程度。
熵用于度量不确定性,指标的离散程度越大(不确定性越大)则熵值越大,表明指标值提供的信息量越多,则该指标的权重也应越大。主要计算步骤如下:
- Step1. 对原始数据矩阵 (4) 按列进行归一化处理(注意,这里不能是同向化后的矩阵,会损失原始信息),归一化方法不唯一,以下提供最简单的比值归一化,实际上也可以使用上文中的向量归一化方法
- Step2 . 计算各指标的熵值:
其中 k 与样本数量有关,常取,此外,补充定义:若,则令 。
- Step3. 计算各指标的权系数:
熵权系数 越大,则该指标代表的信息量越大,表示其对综合评价的作用越大。
选择更合理的归一化方法去除指标的量纲,将会获得较为“合理”的指标权。例如变化范围较大的数据可以使用小数定标规范化、正态分 布的数据使用 z 分数变换、均匀分布的数据使用离差标准化。但要注意合理与否都是相对的,最后还是看效果好不好/符不符合实际。
2.2.2 (AHP)层次分析法定权重
层次分析法是一种定性与定量相结合的决策分析方法,通过判断各衡量指标的相对重要程度,进而得到决策方案中每个指标的权重,熵权法是基于数据的定权方法,而层次分析法是基于经验的定权方法。
注意:层次分析法所提到的特征向量、特征值并不是矩阵中的概念,是重新定义的。
- 构造指标成对比较矩阵
由于定性定权不免存在偏差,Santy 等人提出使用一致矩阵法,构造成对比较矩阵。设共有 个评价指标。
- 定义: 表示指标 i 和指标 j 的相对重要程度,如 表示指标 i 和指标 j 的相对重要程度为 1:3
(一般都是查阅文献,xx 比 xx 重要再人为设定相对重要程度,一般以 1、3、5、7 界定重要程度)
- 定义: 成对比较矩阵 A ,A 的每一个元素 且
- 计算矩阵的特征值和特征向量
- Step 1 : 先对成对比矩阵进行列归一化,即每个元素都除以当前列元素的和
- Step 2: 将归一化矩阵按行求和,得到每一行的”特征向量”
- Step 3: 将特征向量按列归一化,得到“指标权重”
- Step 4: 成对比矩阵的每一列乘以“指标权重”中对应位置的元素得到 矩阵
- Step 5: 将 矩阵按行求和,得到矩阵 :
- Step 6: 将 进行标准化、并对所有元素求和,得到特征值:
- 判断成对比较矩阵的一致性
- 定义: 一致性指标 定义为
说明一致性越好,即成对比矩阵构造合理。但多“小”依旧是人为选取,因此引入 “一致性比率” 来衡量。
- 定义: 一致性比率 ,其中 是一致性指标,是随机一致性指标(查表得到):
则说明矩阵 的不一致程度在容许范围内,可以用其特征向量作为权向量。
2.3 模型缺点
只能反映各个评价对象内部的相对接近度,并不能反映与理想的最优方案的相对接近程度。
3 模型应用
3.1 常见应用场景
TOPSIS法适合用来进行样本数据内部排序使用,是一种多目标决策方法,适用于处理多目标决策问题。例如医疗质量综合评价(平均住院日、三日确诊率、病死率等),环境质量综合评价(水样中各个监测指标)。
3.2 数学建模竞赛应用
18年美赛C题
4 软件/程序介绍
4.1 模拟介绍
指标属性同向化函数代码
TOPSIS法算法实现过程
topsis 函数需要输入:
- data:原始数据,pandas.DataFrame 类型
- weight:权系数, 默认使用熵权法定权。也可以传入指定权重列表。
4.2 MATLAB实现
Matlab实现TOPSIS法源程序
其中,正向化处理函数Positivization程序为: