问题提出
生活中我们长长要进行评价,由于层次分析法决策层不能太多,而且构造判断矩阵相对主观,因此引入Topsis法
例:A想找个对象,但是喜欢他的人太多,不知道怎么选择,经过层层考察,留下三个候选人。
候选人 | 颜值 | 脾气(争吵次数) |
A | 9 | 10 |
B | 8 | 7 |
C | 6 | 3 |
在理想状态下:
- 最好的对象应该是颜值9,脾气3
- 最差的对象应该是颜值6,脾气10
- 把(9,3),(6,10)作为二维平面上的一个点
- 距离最优点最近或者距离最差点最远的就是综合条件最好的
基本概念
TOPSIS法是一种常用的总和评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
TOPSIS法引入两个基本概念:
理想解:设想的最优解(方案),它的各个属性值都达到各备选方案中的最好的值。
负理想解:设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。
方案排序的规则是把各备选方案与理想解和负理想解作比较,若其中有一个方案最接近理想解,而同时又远离负理想解,则该方案是备选方案中最好的方案。TOPSIS通过最接近理想解且最远离负理想解来确定最优选择
模型原理
TOPSIS法是一种理想目标相似性的顺序选优技术,在多目标决策分析中是一种非常有效的方法。它通过归一化后的数据规范化矩阵,找出多个目标中最优目标和最劣目标,分别计算各评价目标与理想解和反理想解的距离,获得各目标与理想解的贴近度,按理想解贴近度的大小排序,以此作为评价目标优劣的依据。贴近度取值在0~1之间,该值越接近1,表示相应的评价目标越接近最优水平;反之,该值越接近0,表示评价目标越接近最劣水平。
基本步骤
- 将原始矩阵正向化,就是要将所有的指标类型统一转化为极大性指标。
- 正向矩阵标准化,标准化的方法有很多,其主要目的就是去除量纲的影响,保证不同评价指标在同一数量级,且数据大小排序不变。
- 计算得分并归一化
\(S_{i}=\frac{D_{i}^{-}}{D_{i}^{+}+D_{i}^{-}}\)
其中\(S_{i}\)为得分,\(D_{i}^{+}\)为评价对象与最大值的距离,\(D_{i}^{-}\)为评价对象与最小值的距离
继续完善例题
A考虑到觉得光靠颜值和脾气可能考虑的不够全面,就又加上了身高和体重两个指标,而且他认为身高165是最好,体重在90-100斤是最好。
候选人 | 颜值 | 脾气(争吵次数) | 身高 | 体重 |
A | 9 | 10 | 175 | 120 |
B | 8 | 7 | 164 | 80 |
C | 6 | 3 | 157 | 90 |
在增加了多项指标后,我们发现不同指标的最优趋向并不相同,如果简单的将其画图,并不能得到最优点,因此我们需要将原始矩阵正向化。
原始矩阵正向化
指标名称 | 指标特点 | 例子 |
极大性(效益型)指标 | 越大(多)越好 | 颜值、成绩、GDP |
极小型(成本型)指标 | 越小(少)越好 | 脾气、费用、坏品率 |
中间型指标 | 越接近某个值越好 | 身高、水质PH值 |
区间型指标 | 落在某个区间最好 | 体重、体温 |
将原始矩阵正向化,就是要将所有的指标类型统一转化为极大性指标。
指标名称 | 公式 |
极大型(效益型)指标 | / |
极小型(成本型)指标 | \(\tilde{x}=max-x\),\(\tilde{x}\)为转化后指标,max为指标最大值,x为指标值 |
中间型指标 | \(\left\{ x_{i}\right\}\)是一组中间型序列,最优值是\(x_{best}\),\(M=max\left\{\left | x_{i}-x_{best}\right |\right\}\),\(\tilde{x}_{i}=1-\frac{\left | x_{i}-x_{best}\right | }{M}\) |
区间型指标 | \(\left\{ x_{i}\right\}\)是一组区间型序列,最佳区间为[a,b],正向化公式如下,\(M=max\left\{a-min\left\{x_{i}\right\},max\left\{x_{i}\right\}-b\right\}\),\(\tilde{x}_{i}=\begin{cases} 1-\frac{a-x_{i}}{M},x_{i}<a\\ 1,a\le x_{i}\le b\\1-\frac{x_{i}-b}{M},x_{i}>b\end{cases}\) |
极小型指标正向化:
候选人 | 脾气(争吵次数) |
A | 10 |
B | 7 |
C | 3 |
根据公式可得转化为极大性指标的数据:
A=10-10=0,B=10-7=3,C=10-3=7
中间型指标正向化
候选人 | 身高 |
A | 175 |
B | 164 |
C | 157 |
\(\left\{ x_{i}\right\}\)={175,164,175},最优值\(x_{best}\)为165,\(M_{A}=10,M_{B}=1,M_{C}=8\),其中最大值为10,因此M=10,\(\tilde{x}_{ia}=1,\tilde{x}_{ib}=\frac{1}{10},\tilde{x}_{ic}=\frac{8}{10}\)
区间型指标正向化
候选人 | 体重 |
A | 120 |
B | 80 |
C | 90 |
其中最佳区间为[90,100],根据公式可得M=max{90-80,120-100}=20
候选人B=80<90区间适用公式B=\(1-\frac{a-x_{i}}{M}\)=\(\frac{1}{2}\)
候选人C=90在区间内适用公式C=1
候选人A大于区间适用公式A=\(1-\frac{x_{i}-b}{M}\)=0
经过矩阵正向化后将所有指标转化为极大型指标
候选人 | 颜值 | 脾气 | 身高 | 体重 |
A | 9 | 0 | 0 | 0 |
B | 8 | 3 | 0.9 | 0.5 |
C | 6 | 7 | 0.2 | 1 |
正向化矩阵标准化
标准化的目的是消除不同指标量纲的影响,与归一化类似。
对于标准化矩阵记为Z,Z中的每一个元素:
\(Z_{ij}=\frac{x_{ij} }{\sqrt{ {\textstyle \sum_{i=1}^{n}}a_{ij}^{2}}}\)
(每一个元素除以根号下其所在列的元素的平方和)
标准化后,还需给不同指标加上权重,采用的权重确定方法有层次分析法、熵权法、Delphi法、对数最小二乘法等。在本例里认为各个指标的权重相同。
经过正向化标准化后的矩阵如下:
候选人 | 颜值 | 脾气 | 身高 | 体重 |
A | 0.669 | 0 | 0 | 0 |
B | 0.595 | 0.394 | 0.976 | 0.447 |
C | 0.446 | 0.919 | 0.217 | 0.894 |
其中以A颜值为例,计算标准化矩阵:
\(A=\frac{9}{\sqrt{9^2+8^2+6^2 }}\)
计算得分并归一化
经过上一步得到标准化矩阵Z
定义最大值为\(Z^+\)=矩阵每列最大值既\((Z_1^+,Z_2^+,…,Z_n^+)\)
定义最小值为\(Z^-\)=矩阵每列最小值既\((Z_1^-,Z_2^-,…,Z_n^-)\)
定义第i个评价指标与最大值的距离\(D_{i}^{+} =\sqrt{ {\textstyle \sum_{j=1}^{m}\left ( Z_{j}^{+}-Z_{ij} \right )^2 } }\)
定义第i个评价指标与最小值的距离\(D_{i}^{-} =\sqrt{ {\textstyle \sum_{j=1}^{m}\left ( Z_{j}^{-}-Z_{ij} \right )^2 } }\)
那么我们可以计算出所有i个评价对象未归一化的得分:\(S_{i}=\frac{D_{i}^{-}}{D_{i}^{+}+D_{i}^{-}}\)
例:
矩阵A\(\begin{bmatrix} \ 1&2&4\\2&3&5\\3&4&6\end{bmatrix}\)
每列最大值为{3,4,6},每列最小值为{1,2,4}
第一个指标\(D_1^+=\sqrt{(3-1)^2+(4-2)^2+(6-4)^2}\)
第二个指标\(D_2^+=\sqrt{(3-2)^2+(4-3)^2+(6-5)^2}\)
第三个指标\(D_3^+=\sqrt{(3-3)^2+(4-4)^2+(6-6)^2}\)
最小值距离同理。
将上述表格计算得分
候选人 | 得分 |
A | 0.122 |
B | 0.624 |
C | 0.622 |
归一化并转换为百分制
候选人 | 得分 |
A | 8.9 |
B | 45.7 |
C | 45.5 |