层次分析法AHP及Python实现

AHP (Analytic Hierarchy Process)层次分析法是一种实用的多方案或多目标的决策方法。

  1. 层次分析法是一种主客观结合的多指标综合评价方法;即定性分析与定量分析有机结合,实现定量化决策。

  2. 有两次定权过程,即准则层定权和方案层定权。

思路

层次分析法的思路是:
将所要分析的问题层次化,根据问题的性质和要达到的总目标,将问题分解成不同的组成因素,按照因素间的相互关系及隶属关系,将因素按不同层次聚集组合,形成一个多层分析结构模型,最终归结为最低层(方案、措施、指标等)相对于最高层(总目标)相对重要程度的权值或相对优劣次序的问题。

决策者用理论和实践经验去分别判断准则层、目标层内各个指标的相对重要程度,并合理地给出每个决策方案中每个指标的标准化权数,利用权数求出各方案的优劣次序,从而选择最优目标。

步骤

用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=n1λmax1

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=kWkRIkkWkCIk
    其中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实践

  • 11
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值