AHP (Analytic Hierarchy Process)层次分析法是一种实用的多方案或多目标的决策方法。
-
层次分析法是一种主客观结合的多指标综合评价方法;即定性分析与定量分析有机结合,实现定量化决策。
-
有两次定权过程,即准则层定权和方案层定权。
思路
层次分析法的思路是:
将所要分析的问题层次化,根据问题的性质和要达到的总目标,将问题分解成不同的组成因素,按照因素间的相互关系及隶属关系,将因素按不同层次聚集组合,形成一个多层分析结构模型,最终归结为最低层(方案、措施、指标等)相对于最高层(总目标)相对重要程度的权值或相对优劣次序的问题。
决策者用理论和实践经验去分别判断准则层、目标层内各个指标的相对重要程度,并合理地给出每个决策方案中每个指标的标准化权数,利用权数求出各方案的优劣次序,从而选择最优目标。
步骤
用AHP分析问题大体要经过以下五个步骤:
(1) 建立层次结构模型;
(2)构造判断矩阵;
(3)层次单排序;
(4)一致性检验;
(5)层次总排序。
其中后三个步骤在整个过程中需要逐层地进行。
例如:
(1) 建立层次结构模型
假如现在一位同学在找工作时,同时收到三份offer,三家公司都非常不错,此时他很犹豫,不知道怎么选择。
他想到了层次分析法,他现在的目标是选择最优的工作,考虑的因素有:待遇、晋升制度、进修机会、地理位置、社会声誉。因此,建立如下层次结构模型:
层次分析法的核心在于,如何合理解决各个指标的定权问题
有两次定权过程,即准则层定权和方案层定权。
(2)构造判断矩阵
什么是判断矩阵?判断矩阵是建立指标之间两两比较的影响程度的矩阵。例如上述准则层的五个指标所构成的判断矩阵A:
如何依据决策者的理论和经验来构建判断矩阵呢?在实际评价中,如何对多个指标进行赋权,较为困难。但对两两指标之间的比较影响程度,决策者进行主观正确判断较为容易。
在判断矩阵中,指标之间的比较影响程度赋值需要借助“标度”,标度如下所示:
对于要比较的因子而言,你认为一样重要就是1:1,强烈重要就是9:1,也可以取中间数值6:1等,两两比较,把数值填入,并排列成判断矩阵(判断矩阵是对角线积是1的正反矩阵即可)。
(3)检验判断矩阵的合理性
判断矩阵构造完毕后,需要检验判断矩阵是否满足一致性。什么是矩阵一致性?矩阵一致性的定义为: a i j × a j k = a i k a_{ij}\times a_{jk}=a_{ik} aij×ajk=aik。例如待遇:晋升制度=3:1,晋升制度:进修机会=5:1,在一致性定义下,待遇:进修机会=15:1。显然,在判断矩阵的标度中,并没有设置大于9以上的标度。在检验判断矩阵合理性上,我们不是要矩阵严格满足一致性,而是满足A>B,B>C,那么A必然大于C,这样检验方式称为一致性检验。
一致性检验是通过计算一致性比例CR得来:
C
R
=
C
I
R
I
CR=\frac{CI}{RI}
CR=RICI
其中CI表示一致性指标,其公式为
C
I
=
λ
max
−
1
n
−
1
CI=\frac{\lambda _{\max}-1}{n-1}
CI=n−1λmax−1
n表示判断矩阵中指标的个数, λ max \lambda _{\max} λmax表示判断矩阵的最大特征值,
RI表示随机一致性指标,可查表获得,如下表所示
当CR<0.1时,则表示一致性检验通过,判断矩阵构造合理,CI 越大,判断矩阵的不一致性程度越严重。
因此,目前唯一未知数是判断矩阵的最大特征值。特征值的计算公式为:
A
W
=
λ
W
AW=\lambda W
AW=λW
其中W是最大特征值 λ max \lambda _{\max} λmax对应的特征向量。
求解可以通过软件,比如Excel,R语言,python,MATLAB等等
(4)定权
前述已知,AHP定权过程分为两个阶段,第一阶段是关于准则层的定权,第二阶段是关于方案层的定权。
在定权方法上,有最小平方权法、特征值法、方根法、和积法等,常用定权方法为特征值法。
-
对于准则层指标的定权,应用最大特征值所对应的特征向量,即
W = ( w 1 , w 2 , w 3 , w 4 , w 5 ) T W=\left( w_1,w_2,w_3,w_4,w_5 \right) ^T W=(w1,w2,w3,w4,w5)T
进行赋权,权重进行归一化处理,使得权和等于1。 -
对于方案层指标的定权,需要构建每个准则层与三种方案的判断矩阵,检验判断矩阵的合理性,并计算其最大特征值所对应的特征向量。即:
可以看出,方案层所构造的判断矩阵有多个,对于方案层判断矩阵的一致性检验,采用总排序一致性比例,其公式为:
C R = ∑ k W k C I k ∑ k W k R I k CR=\frac{\sum_k^{}{W_k}CI_k}{\sum_k^{}{W_kRI_k}} CR=∑kWkRIk∑kWkCIk
其中k表示准则层的相应指标。
通过对上述五个判断矩阵的计算,可以得到每个方案在每个准则层因素下的权重,即
W
1
=
(
w
11
,
w
12
,
w
13
)
T
,
W
2
=
(
w
21
,
w
22
,
w
23
)
T
W_1=\left( w_{11},w_{12},w_{13} \right) ^T,W_2=\left( w_{21},w_{22},w_{23} \right) ^T
W1=(w11,w12,w13)T,W2=(w21,w22,w23)T
W
3
=
(
w
31
,
w
32
,
w
33
)
T
,
W
4
=
(
w
41
,
w
42
,
w
3
)
T
W_3=\left( w_{31},w_{32},w_{33} \right) ^T,W_4=\left( w_{41},w_{42},w_3 \right) ^T
W3=(w31,w32,w33)T,W4=(w41,w42,w3)T
W
5
=
(
w
51
,
w
52
,
w
53
)
T
,
W_5=\left( w_{51},w_{52},w_{53} \right) ^T,
W5=(w51,w52,w53)T,
(5)排序
经过上述计算,已经得到准则层、方案层中各个指标和方案的权重,如下表所示。
通过比较方案总排序权重的高低,即可对三份工作作出选择。
Python实现代码
这里请参见下面博客中代码,讲的很详细
AHP(层次分析法)学习笔记及多层权重Python实践