声明:以下笔记中的图片均来自“数学建模学习交流”清风老师的课程ppt,仅用作学习交流使用
文章目录
TOPSIS
全称 Technique for Order Preference by Similarity to Ideal Solution 逼近理想解排序法
topsis能充分利用原始数据的信息,精确地反映各评价方案之间的差距
可以解决层次分析法中决策层数据已知的情况,使评价结果更准确
步骤
第一步 原始矩阵正向化
常见的四种指标:极大型(效益型)指标、极小型(成本型)指标、中间型指标、区间型指标
一般将其他三种指标化为极大型指标,这个过程被称之为指标正向化
极小型指标–>极大型指标
x
=
>
m
a
x
−
x
x =>max-x
x=>max−x
当所有指标均为正数时,也可以
x
=
>
1
x
x=>\frac{1}{x}
x=>x1
中间型指标–>极大型指标
x
b
e
s
t
x_{best}
xbest为最佳指标
M
=
m
a
x
{
∣
x
i
−
x
b
e
s
t
∣
}
M=max{ \{|x_i-x_{best}|\} }
M=max{∣xi−xbest∣}
x
i
~
=
1
−
∣
x
i
−
x
b
e
s
t
∣
M
\tilde{x_i}=1-\frac{|x_i-x_{best}|}{M}
xi~=1−M∣xi−xbest∣
例如
区间型指标–>极大型指标
[
a
,
b
]
[a,b]
[a,b]为最佳区间
M
=
m
a
x
{
a
−
m
i
n
x
i
,
m
a
x
x
i
−
b
}
M=max\{a-min{x_i},max{x_i}-b\}
M=max{a−minxi,maxxi−b}
x i ~ = { 1 − a − x i M , x i < a 1 , a ≤ x i < b 1 − x i − b M , x i > b \tilde{x_i}=\left\{ \begin{array}{rcl} 1-\frac{a-x_i}{M} ,& & {x_i<a}\\ 1 ,& & {a \leq x_i < b}\\ 1-\frac{x_i-b}{M} ,& & {x_i>b}\\ \end{array} \right. xi~=⎩ ⎨ ⎧1−Ma−xi,1,1−Mxi−b,xi<aa≤xi<bxi>b
例如
第二步 正向化矩阵标准化
标准化以消除指标量纲不同的影响
此时标准化矩阵可能会存在负数,但是并不影响正常topsis的计算过程,但是当运用到熵权法时,则要求标准化矩阵都是正数,故需要将正向化矩阵进行另一种标准化方法,具体操作见后文。
第三步 计算得分并归一化
补充:如果各项指标带权重的话,只需要在每个欧氏距离前乘上对应权重即可
最后按照得分排序即可
带权重的TOPSIS
层次分析法
有n个评价对象,m个指标,可以根据层次分析法对这m个指标赋权重,缺点是层次分析法主观性太强
基于熵权法对于TOPSIS模型的修正
- 熵权法依据的原理: 指标的变异程度越小,所反映的信息量也越少,其对应的权值也应该越低。(客观 = 数据本身就可以告诉我们权重)
(一种极端的例子:对于所有的样本而言,这个指标都是相同的数值,那么我们可认为这个指标的权值为0,即这个指标对于我们的评价起不到任何帮助) - 事情发生的概率越大,所包含的信息量越小;反之同理。
假设 x x x表示事件 X X X可能发生的某种情况, p ( x ) p(x) p(x)表示这种情况发生的概率,我们可以定义: I ( x ) = − l n ( p ( x ) ) I(x)=-ln(p(x)) I(x)=−ln(p(x))
且由于
0
≤
p
(
x
)
≤
1
0 \leq p(x) \leq 1
0≤p(x)≤1 故
I
(
x
)
≥
0
I(x)\geq0
I(x)≥0
那么事件
X
X
X的信息熵为:
H
(
X
)
=
∑
i
=
1
n
[
p
(
x
i
)
I
(
x
i
)
]
=
−
∑
i
=
1
n
[
p
(
x
i
)
l
n
(
p
(
x
i
)
)
]
H(X)=\sum_{i=1}^{n}{[p(x_i)I(x_i)]}=-\sum_{i=1}^{n}{[p(x_i)ln(p(x_i))]}
H(X)=i=1∑n[p(xi)I(xi)]=−i=1∑n[p(xi)ln(p(xi))]
可以证明当
p
(
x
1
)
=
p
(
x
2
)
=
p
(
x
3
)
=
.
.
.
=
p
(
x
n
)
=
1
n
p(x_1)=p(x_2)=p(x_3)=...=p(x_n)=\frac{1}{n}
p(x1)=p(x2)=p(x3)=...=p(xn)=n1时,
H
(
X
)
m
a
x
=
ln
n
H(X)_{max}=\ln n
H(X)max=lnn
随机变量的信息熵越大,则它的值能够给当前信息所补充的信息量越大,而已有的信息量越小。熵权法所关注的是已有的信息量,所以信息熵越大,信息越小。
步骤
第一步 正向化矩阵标准化
若
X
X
X中本身存在不负数,则执行TOPSIS第二步,即
z
i
j
=
x
i
j
∑
i
=
1
n
x
i
j
2
z_{ij}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^{2}}}}
zij=∑i=1nxij2xij ,从而得到标准化矩阵
Z
Z
Z。
若
X
X
X中本身存在负数,则需要对其执行另一种标准化方法,即
z
i
j
~
=
x
i
j
−
m
i
n
{
x
1
j
,
x
2
j
,
.
.
.
,
x
n
j
}
m
a
x
{
x
1
j
,
x
2
j
,
.
.
.
,
x
n
j
}
−
m
i
n
{
x
1
j
,
x
2
j
,
.
.
.
,
x
n
j
}
\tilde{z_{ij}}=\frac{x_{ij}-min\{x_{1j},x_{2j},...,x_{nj}\}}{max\{x_{1j},x_{2j},...,x_{nj}\}-min\{x_{1j},x_{2j},...,x_{nj}\}}
zij~=max{x1j,x2j,...,xnj}−min{x1j,x2j,...,xnj}xij−min{x1j,x2j,...,xnj}
第二步 计算概率矩阵
p
i
j
=
z
i
j
~
∑
i
=
1
n
z
i
j
~
p_{ij}=\frac{\tilde{z_{ij}}}{\sum^{n}_{i=1}{\tilde{z_{ij}}}}
pij=∑i=1nzij~zij~
即每个数除以所在列和
容易验证 ∑ i = 1 n p i j = 1 \sum_{i=1}^{n}p_{ij}=1 ∑i=1npij=1 即保证各列和为1,即每个指标的概率和为1
第三步 计算每个指标的熵权
- 计算信息熵:
e
j
=
−
1
ln
n
∑
i
=
1
n
p
i
j
ln
(
p
i
j
)
,
(
j
=
1
,
2
,
.
.
.
,
m
)
e_j=-\frac{1}{\ln n} \sum_{i=1}^{n}{p_{ij}\ln (p_{ij})} , (j=1,2,...,m)
ej=−lnn1i=1∑npijln(pij),(j=1,2,...,m)
与前面的 H ( X ) H(X) H(X)相比多除以了一个常数,是为了使信息熵和信息效用值落在 [ 0 , 1 ] [0,1] [0,1] - 计算信息效用值:
d
j
=
1
−
e
j
d_j=1-e_j
dj=1−ej
可以理解为是将信息熵正向化,这样信息效用值就和信息量以及权重成正比了 - 计算熵权:
W
j
=
d
j
∑
j
=
1
m
d
j
W_j=\frac{d_{j}}{\sum_{j=1}^{m}d_j}
Wj=∑j=1mdjdj
即实现信息效用值归一化
最后利用熵权计算得分即可