一、问题引入
先分析一下层次分析法的不足。
① 平均随机一致性指标RI的表格中,n最大为15。那么n太大的话,无法进行一致性检验。
② 如果决策层中指标的数据是已知的,那么我们如何利用这些数据来使得评价的更加准确呢?
二、极大型指标构造计算评分
① 第一步:求最大最小值。
② 第二步:带入构造计算评分的公式 x − m i n m a x − m i n \frac{x - min}{max - min} max−minx−min。
③ 第三步:进行归一化。
代码演示:
function res = func(a)
mnmx = minmax(a);
res = (a - mnmx(1)) / (mnmx(2) - mnmx(1));
res = res / sum(res);
end
(注:上面的评分规则是不正确的,只是用来抛砖引玉,正确的评分规则见下文“三、标准化”)
但是有时候评分不是越大越好,而是越小越好,或者越接近某个值越好,越接近某个区间越好。那就要把这些指标转换成极大型。这个过程叫做正向化。
但是不同指标的量纲是不一样的,为了消除量纲带来的影响,我们需要进行标准化。
下面先介绍标准化,在介绍正向化。
三、标准化
例如对于m个要评价的对象,n个评价指标的正向化矩阵:
X
=
(
x
11
x
12
⋯
x
1
n
x
21
x
22
⋯
x
2
n
⋮
⋮
⋱
⋮
x
m
1
x
m
2
⋯
x
m
n
)
X = \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1n}\\ x_{21} & x_{22} & \cdots & x_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ x_{m1} & x_{m2} & \cdots & x_{mn} \end{pmatrix}
X=⎝⎜⎜⎜⎛x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1nx2n⋮xmn⎠⎟⎟⎟⎞
将标准化后的矩阵记作Z,则Z中的每一个元素满足:
z
i
j
=
x
i
j
∑
i
=
1
m
x
i
j
2
z_{ij} = \frac{x_{ij}}{\sqrt{\sum\limits^m_{i=1}x^2_{ij}}}
zij=i=1∑mxij2xij
用代码描述为:
function Z = func(X)
[m, ~] = size(X);
Z = X ./ repmat(sum(X .^ 2) .^ 0.5, m, 1);
end
接下来对标准化矩阵求解各指标得分:
Z
=
(
z
11
z
12
⋯
z
1
n
z
21
z
22
⋯
z
2
n
⋮
⋮
⋱
⋮
z
m
1
z
m
2
⋯
z
m
n
)
Z = \begin{pmatrix} z_{11} & z_{12} & \cdots & z_{1n}\\ z_{21} & z_{22} & \cdots & z_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ z_{m1} & z_{m2} & \cdots & z_{mn} \end{pmatrix}\\
Z=⎝⎜⎜⎜⎛z11z21⋮zm1z12z22⋮zm2⋯⋯⋱⋯z1nz2n⋮zmn⎠⎟⎟⎟⎞
令
Z
j
+
=
max
(
z
1
j
,
z
2
j
,
⋯
,
z
m
j
)
Z
j
−
=
min
(
z
1
j
,
z
2
j
,
⋯
.
z
m
j
)
令Z^+_j = \max(z_{1j}, z_{2j}, \cdots, z_{mj})\\ Z^-_j = \min(z_{1j}, z_{2j}, \cdots. z_{mj})\\
令Zj+=max(z1j,z2j,⋯,zmj)Zj−=min(z1j,z2j,⋯.zmj)
D
+
=
(
Z
1
+
,
Z
2
+
,
⋯
,
Z
j
+
)
D
−
=
(
Z
1
−
,
Z
2
−
,
⋯
,
Z
j
−
)
D^+ = (Z^+_1, Z^+_2, \cdots, Z^+_j)\\ D^- = (Z^-_1, Z^-_2, \cdots, Z^-_j)\\
D+=(Z1+,Z2+,⋯,Zj+)D−=(Z1−,Z2−,⋯,Zj−)
D
i
+
=
∑
j
=
1
n
(
Z
j
+
−
z
i
j
)
2
D^+_i = \sqrt{\sum\limits^n_{j = 1}(Z^+_j - z_{ij})^2}\\
Di+=j=1∑n(Zj+−zij)2
D
i
−
=
∑
j
=
1
n
(
Z
j
−
−
z
i
j
)
2
未
归
一
化
的
评
分
S
i
=
D
i
−
D
i
+
+
D
i
−
D^-_i = \sqrt{\sum\limits^n_{j = 1}(Z^-_j - z_{ij})^2}\\ 未归一化的评分S_i = \frac{D^-_i}{D^+_i + D^-_i}
Di−=j=1∑n(Zj−−zij)2未归一化的评分Si=Di++Di−Di−
代码描述为:
function S = func(Z)
ZP = sum((repmat(max(Z), size(Z, 1), 1) - Z) .^ 2, 2) .^ 0.5;
ZN = sum((repmat(min(Z), size(Z, 1), 1) - Z) .^ 2, 2) .^ 0.5;
S = ZN / (ZP + ZN);
S = S ./ sum(S);
end
长度还能再凹一下:
function S = func(Z)
S = 1 ./ (1 + sum((repmat(max(Z), size(Z, 1), 1) - Z) .^ 2, 2) .^ 0.5 ./ sum((repmat(min(Z), size(Z, 1), 1) - Z) .^ 2, 2) .^ 0.5);
S = S ./ sum(S);
end
四、正向化
① 极小型
非常简单: x i ~ = m a x { x } − x i \widetilde{x_i} = max\{x\} - x_i xi =max{x}−xi
function res = func(x)
res = max(x) - x;
end
② 中间型
设最佳取值为
x
b
e
s
t
x_{best}
xbest,则正向化公式如下:
M
=
m
a
x
{
∣
x
−
x
b
e
s
t
∣
}
M = max\{|x - x_{best}|\}\\
M=max{∣x−xbest∣}
x
i
~
=
1
−
∣
x
i
−
x
b
e
s
t
∣
M
\widetilde{x_i} = 1 - \frac{|x_i - x_{best}|}{M}
xi
=1−M∣xi−xbest∣
function res = func(x, x_best)
dis = abs(x - x_best);
res = 1 - dis / max(dis);
end
④ 区间型
设最佳区间为
[
a
,
b
]
[a, b]
[a,b],则正向化公式如下:
M
=
m
a
x
{
a
−
min
{
x
i
}
,
max
{
x
i
}
−
b
}
M = max\{a - \min\{x_i\}, \max\{x_i\} - b\}
M=max{a−min{xi},max{xi}−b}
x
i
~
=
{
1
−
a
−
x
i
M
,
x
i
<
a
1
,
a
≤
x
i
≤
b
1
−
x
i
−
b
M
,
x
i
>
b
\widetilde{x_i} = \left\{ \begin{aligned} 1 - \frac{a - x_i}{M}, x_i < a\\ 1, a ≤ x_i ≤ b\\ 1 - \frac{x_i - b}{M}, x_i > b \end{aligned} \right.
xi
=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1−Ma−xi,xi<a1,a≤xi≤b1−Mxi−b,xi>b
function res = func(x, ab)
l = x < ab(1);
other = ab(1) <= x & x <= ab(2);
g = ab(2) < x;
M = max([ab(1) - min(x), max(x) - ab(2)]);
res(l) = 1 - (ab(1) - x(l)) / M;
res(other) = 1;
res(g) = 1 - (x(g) - ab(2)) / M;
end