Kev的数学建模模型学习3:层次分析法

1. 模型概述

层次分析法 (AHP法)是一种解决多目标的复杂问题的定性与定量相结合决策分析方法。其定性分析体现在模型用决策者的经验判断各衡量目标能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数;定量体现在模型利用权数求出各方案的优劣次序以及在这一过程中使用的数学方法

1.0. 模型背景

层次分析法(AHP)是美国运筹学家几茨堡大学教授萨蒂(T.L.Saaty)于上世纪70年代初,为美国国防部研究 “根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

这种方法的特点是在对复杂的决策问题的本质、影响因素及其内在关系等讲行深入分析的其础上,利用较小的定量信息使决策的思维过程数学化。从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法,是对难于完全定量的复杂系统作出决策的模型和方法。

层次分析图示

1.1 应用场景

层次分析法常用于:

  • 最佳方案的选取(选择运动员、选择地址)
  • 评价类问题(评价水质状况、评价环境)
  • 指标体系的优选(兼顾科学和效率)

1.2. 模型基本原理

【官方定义(不看了叭)】层次分析法根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素问的相互关联影响以及隶属关系将因素按不同层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层(供决策的方案、措施等)相对于最高层(总目标)的相对重要权值的确定或相对优劣次序的排定。

【普通话】层次分析模型将决策过程分为3个层面:

  • 目标层:要解决的问题,决策的目的
  • 准则层:决策时考虑的因素,决策时遵循的准则
  • 方案层:可供选择的方案,决策的备选方案

举个栗子🌰: 我现在想要出去旅游但不知道去哪里。我可以去海南,苏州和井冈山;我想我去的地方要景色好,有文化气息,住宿条件要好,路费不能太贵…

在这个例子中,我要解决的问题(目标层)就是“我去哪里旅游”;我在做决策时要考虑的因素(准则层)有:景色,文化,住宿和路费;可供我选择的方案(方案层)有:海南、苏州和井冈山。

我们用一个图来更直观的理解决策过程的分层。


决策层次图.001.jpeg

黄色的最高层代表我们想要解决的问题,红色的中间层表示我们要考虑的因素,绿色的最底层表示我们有什么方案可以选择。因为整个决策过程是自顶向下(TopDown)的,所以每层之间的有严格的先后关系,必须先完成上层才可以进入下一层,不可以跳层。

2. 模型建立

假设我们现在有一个决策目标,在决策时要考虑n个因素:A_1, A_2, \cdots, A_n;有m个备选方案B_1, B_2, \cdots, B_m可供我们选择。

3. 模型目标层

模型最高层描述了我们使用层次分析需要解决的问题,在实际建模过程中是题目给定或直接由需求决定的。

4. 模型准则层

模型的中间层确定了影响因素和评鉴标准,以及不同影响因素之间的权重,也就是不同的影响因素谁更重要,谁不那么重要。

4.1. 构造判断矩阵A

首先我们要判断每个影响因素之间的重要程度,第一个想到的就是把所有因素拿出来比一比,然后按照直觉中的重要程度,把所有因素排个序,拟一个权重。但这种方法是极其不可靠的,就像选择困难症患者面对玲琅满目的商品一样,人们在面对多个因素的比较时,往往会顾此失彼,得到的判断往往是不准确、不全面的,是不能反映决策者全部意图的。

所以将因素两两之间进行比较就显得靠谱多了,一次只比较两个因素是非常容易得到一个一致性较好的判断的。

于是在将所有要考虑的n个因素两两比较之后,我们得到一个n\times n的判断矩阵Aa_{ij}代表第i个因素相对于第j个因素的重要程度。
A = \left\{ \begin{aligned} &a_{11}, a_{12}, \cdots, a_{1n} \\ &a_{21}, a_{22}, \cdots, a_{2n} \\ &\quad \quad \ \ \ \cdots \\ &a_{n1}, a_{n2}, \cdots, a_{nn} \\ \end{aligned} \right\}
但此时矩阵A中的元素,并不是一个个可以运算的数字,而是诸如“不太重要”、“重要的多”、“稍微重要”的这类描述重要程度的判断。为了使矩阵A可以参与运算,我们引入Saaty的1-9标度来量化这些判断:

标度 含义
1 同样重要
3 稍微重要
5 明显重要
7 强烈重要
9 极端重要
2, 4, 6, 8 介于二者之间

此时我们就有一个真正数学意义上的判断矩阵A了,以3 \times 3的矩阵为例,不难发现它的一些特性:
A = \left\{ \begin{aligned} &1, \frac{1}{3}, \frac{5}{4} \\ &3, \ 1, \ 5 \\ &\frac{4}{5}, \frac{1}{5}, 1 \\ \end{aligned} \right\}

  • 对角线上都为1:因为每个因素于自己比较一定是同样重要的。
  • 对角线两侧对称位置的数互为倒数:因为有A_1因素比A_2因素明显重要就一定有A_2因素比A_1因素明显不重要。

我们把具有这两个特性的矩阵称为正互反阵

4.2. 一致性检验

再次观察判断矩阵A,稍加计算,我们会发现一些问题:
A = \left\{ \begin{aligned} &\ 1, \frac{1}{3}, \frac{1}{5} \\ &\ 3, \ 1, \frac{1}{2} \\ &\ 5, \ 2, \ 1 \\ \end{aligned} \right\}
设判断矩阵A表示的是因素A_1, A_2, A_3之间的重要程度,于是我们有:
\begin{aligned} a_1 &: a_2 = 3 \\ a_2 &: a_3 = 2 \\ \end{aligned}
两式相乘容易求得:
\begin{aligned} a_1 &: a_3 = 6 = w_{predicted} \\ \end{aligned}
但在原矩阵中二者的比值为:
a_1 : a_3 = 5 = w_{actual}
不难发现,通过计算得出二者的相对重要程度与实际判断时的相对重要程度不相等,即w_{predicted} \neq w_{actual},计算结果与实际判断不一致。这种不一致看起来像个“错误”,但仔细想一想又发现,不一致现象很容易出现:因为我们在构造判断矩阵A时,采用两两比较的方法,所以在横向对比时,只会考虑当前两个因素,不会考虑其他影响因素,自然就不保证一定有a_{ij} \times a_{jk} = a_{ik}。判断矩阵对条件\forall a_{ij}, a_{jk}, a_{ik} \Rightarrow a_{ij} \times a_{jk} = a_{ik}满足程度的好坏称为矩阵的一致性

【Q】那是所有的不一致都是不可接受的吗?或者换句话说,什么样的不一致是可以接受的,什么样的不一致是不可接受的呢?

还是对于上面的矩阵A,我们将a_1 : a_3 = 5换成a_1 : a_3 = \frac{1}{5},看看会有什么变化:
A' = \left\{ \begin{aligned} &\ 1, \frac{1}{3}, \ 5\\ &\ 3, \ 1, \frac{1}{2} \\ &\frac{1}{5}, \ 2, \ 1 \\ \end{aligned} \right\}
首先a_1 : a_2 = 3说明因素A_1相对于因素A_2稍微重要,a_2 : a_3 = 2说明因素A_2相对于因素A_3重要,所以可以推出因素A_1相对于因素A_3是重要的,尽管我们并不知道重要程度如何。但是在判断矩阵中a_1 : a_3 = \frac{1}{5}说明因素A_1相对于因素A_3明显不重要,这与计算结果直接矛盾了;而反观原矩阵,虽然w_{predicted} \neq w_{actual}但是w_{predicted}, w_{actual} > 1说明二者都承认因素A_1相对于因素A_3是重要的。

同样都是判断结果与计算结果不一致,但是显然原矩阵的结果是可接受的,因为二者是相互支持的;而更改后的矩阵是不可接受的,因为我不能认为因素A_1A_3重要也不重要。

导致判断矩阵出现不一致现象的根本原因是判断矩阵完全是依照主观意愿构造的,矩阵中的数字代表的是重要程度分级而并不一定是满足基本运算规律的数字。例如A_1A_2稍微重要,A_2又比A_3稍微重要,所以就有A_1 : A_2 = 3, A_2 : A_3 = 3,按照数学计算的话,是一定有A_1 : A_3 = 9的,但我们能说A_1A_3一定极端重要吗?这是不一定的,相反,大概率A_1A_3也是只是稍微重要。

综上:【A】并不是所有的不一致都是不可接受,也并非所有的不一致都是可接受的,也就是说,我们对这种矩阵的不一致是有一个接受程度的。要判断矩阵的不一致性是否可接受,我们要对矩阵进行一致性检验。首先引入一致性指标CI来表征对判断矩阵的不一致性。CI定义式如下:
CI = \frac{\lambda - n}{n - 1}
其中\lambda是判断矩阵A的最大特征根,n是影响因素的个数。要解释这个公式的意义,我们首先要了解一致矩阵(即满足\forall a_{ij}, a_{jk}, a_{ik} \Rightarrow a_{ij} \times a_{jk} = a_{ik}的矩阵)和正互反阵的一些性质:

  • 性质1: n阶一致阵的唯一非零特征根为n
  • 性质2: n阶正互反阵A的最大特征根\lambda \geq n,当且仅当A为一致阵时\lambda = n
  • 性质3: n阶正互反阵A的最大特征根\lambdan大的越多,矩阵的一致性就越差。

公式分析:因为性质3,\lambda - n可以表示矩阵的不一致性,在除以数据规模n可以消除数据规模对数值大小的影响;且当矩阵为一致阵时,不一致性为零,\lambda = n,满足性质1。至于为什么定义式中分母上是n-1不是n,可以把它理解为统计学上的自由度

但只有一致性指标CI还不够,因为现在就算我们计算出CI的数值,也只知道如果CI = 0矩阵为一致阵;接近0则一致性较好。但至于这个矩阵的一致性究竟怎么样,可不可以接受,我们是完全没法判断的。所以还需要一个可以衡量CI大小的指标,该指标要具有统计学意义,这样我们就能够通过比较CI和它的大小关系来确定矩阵的一致性究竟怎么样了。

为了衡量一致性指标CI,我们引入随机一致性指标RIRI的统计学意义是:构造500个与原矩阵阶数相同的随机矩阵A_1, A_2, A_3, \cdots, A_{500},计算得到每个随机矩阵的一致性指标CI_1, CI_2, CI_3, \cdots, CI_{500},随机一致性指标RI为所有随机矩阵CI的平均值:
RI = \frac{CI_1 + CI_2 + CI_3 + \cdots + CI_{500}}{500}
得到对于不同的阶数nRI的取值如下表:

n 1 2 3 4 5 6 7 8 9 10
RI 0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49

定义一致性比率CR
CR = \frac{CI}{RI}
一般的,当一致性比率CR < 0.1时,我们认为矩阵的一致性较好,可以接受,通过一致性检验。否则需要重新调整判断矩阵A中的数值,直到通过一致性检验。

我第一次学到这里的时候,想了好久都不能理解为什么是CR < 0.1时通过一致性检验而不是CR < 1。后来明白了,随机一致性指标RI是一个非常平凡的指标,它描述的是任意一个当前阶数的矩阵,大概都有这么高的一致性指标CI,而任意阵是基本没有一致性的。所以如果只要求判断矩阵ACI略小于RI,即\frac{CI}{RI} < 1,那判断矩阵就像任意阵一样,基本没有一致性,所以需要提高标准。假定矩阵的CI是呈线性分布的,那么CR = \frac{CI}{RI} < 0.1,就说明当前矩阵的一致性好于90\%的同阶任意阵,此时我们认为矩阵一致性已经达标,选择接受当前矩阵。

4.3. 计算权向量

我们之所以想让我们的判断矩阵A尽可能接近一致阵,是因为一致阵有很多非常好的特性:

  • 一致阵的秩为1,唯一非零特征根为n
  • 非零特征根n对应的特征向量归一化后可作为权向量\mathbf{w}

Saaty建议对于不一致(但在允许范围内的)成对比较阵A,可以用对应于最大特征根\lambda的特征向量作为权向量\mathbf{w},即A\mathbf{w} = \lambda\mathbf{w}

因为在上一步,我们的判断矩阵A已经通过了一致性检验,所以此时我们只要先求出矩阵的最大特征值\lambda,再将\lambda带回A\mathbf{w} = \lambda\mathbf{w}即可求的权向量\mathbf{w}。其中:
\mathbf{w} = \left[ \begin{aligned} &w_1 \\ &w_2 \\ &w_3 \\ &\ \ \vdots \\ &w_n \\ \end{aligned} \right]
w_1, w_2, w_3, \cdots, w_n分别代表影响因素A_1, A_2, A_3, \cdots, A_n未归一化的权重。将\mathbf{w}归一化后有:
\mathbf{w} ^T= \left[ \frac{w_1}{\sum_\limits{i = 1}^{n}w_i}, \frac{w_2}{\sum_\limits{i = 1}^{n}w_i}, \frac{w_3}{\sum_\limits{i = 1}^{n}w_i}, \cdots, \frac{w_n}{\sum_\limits{i = 1}^{n}w_i} \right]
归一化后各因素之间的权重为:
a_1 : a_2 : a_3 : \cdots : a_n = \frac{w_1}{\sum_\limits{i = 1}^{n}w_i} : \frac{w_2}{\sum_\limits{i = 1}^{n}w_i} : \frac{w_3}{\sum_\limits{i = 1}^{n}w_i} : \cdots : \frac{w_n}{\sum_\limits{i = 1}^{n}w_i}

【简化计算】因为矩阵的特征根,特征向量的求解相对比较困难,可以采用对判断矩阵A求行和后再归一化的方式求\mathbf{w}来简化计算。
A = \left[ \begin{aligned} &a_{11}, a_{12}, \cdots, a_{1n} \\ &a_{21}, a_{22}, \cdots, a_{2n} \\ &\quad \quad \ \ \ \cdots \\ &a_{n1}, a_{n2}, \cdots, a_{nn} \\ \end{aligned} \right] \Longrightarrow \left[ \begin{aligned} &\sum_{i = 1}^n a_{1i} \\ &\sum_{i = 1}^n a_{2i} \\ &\ \ \ \ \cdots \\ &\sum_{i = 1}^n a_{ni} \\ \end{aligned} \right] \Longrightarrow \left[ \begin{aligned} &\frac{\sum_{i = 1}^n a_{1i}}{\sum_{j = 1}^m\sum_{i = 1}^n a_{ji}} \\ &\frac{\sum_{i = 1}^n a_{2i}}{\sum_{j = 1}^m\sum_{i = 1}^n a_{ji}} \\ &\ \ \ \ \cdots \\ &\frac{\sum_{i = 1}^n a_{ni}}{\sum_{j = 1}^m\sum_{i = 1}^n a_{ji}} \\ \end{aligned} \right] = \mathbf{w}

至于为什么选用特征向量作为权重向量,具体的数学证明很复杂,但我们通过特征向量本身的特性可以直观的感受到其内在的原因:每个矩阵都相当于是对空间的一次变换,大多部分向量在变换前后长短和方向都会改变,然而特征向量在变换前后只有长短的变化,其方向是不变的,所以可以说特征向量之所以可以被称为特征向量,是因为它表示了矩阵变换的特征,是矩阵变换中不变的,本质的东西。

在看我们的判断矩阵A,其中的每个元素都表示不同因素两两之间的重要程度。然而我们之所以能够得出这个矩阵,是因为我们潜意识中已经有了对各个因素的重要程度的判断,只是囿于有限的逻辑能力无法准确表达。这个潜在已经形成的对于重要程度的判断,是支配我们写出判断矩阵的不变的、最本质的东西,而求解特征向量的过程,就是揭示这个本质的过程。【以上均为个人理解,不代表权威观点,请理智采纳】

通过以上的计算,我们已经得到了各个影响因素之间的归一化权重关系\mathbf{w},值得注意的是,这个权重关系是不涉及任何可行方案的、单纯的对影响因素重要程度的判断,与方案层的各种不同的方案没有任何关系

5. 模型方案层

模型方案层主要解决每个方案对于同一因素的打分,最终把打分和因素加权在把不同因素的加权打分加和,得到最后的总评分。通过总评分决定出最优方案。

5.1 构造成对比较阵B_i

构造比较阵B的方式与之前构造判断矩阵A的方式基本相同,就是将每两个备选方案的同一个影响因素进行比较、打分,打分标准和上文相同。设第i个方案与第j个方案在第k个影响因素上的表现(打分)记作b_{ij},表现越好,打分越高。所有方案在第k个因素上的表现记为矩阵B_k,于是我们可以得到如下几个比较阵:

B_1 = \left[ \begin{aligned} &b_{11}, b_{12}, \cdots, b_{1m} \\ &b_{21}, b_{22}, \cdots, b_{2m} \\ &\quad \quad \ \ \ \cdots \\ &b_{m1}, b_{m2}, \cdots, b_{mm} \\ \end{aligned} \right], B_2 = \left[ \begin{aligned} &b_{11}, b_{12}, \cdots, b_{1m} \\ &b_{21}, b_{22}, \cdots, b_{2m} \\ &\quad \quad \ \ \ \cdots \\ &b_{m1}, b_{m2}, \cdots, b_{mm} \\ \end{aligned} \right], \cdots, B_n = \left[ \begin{aligned} &b_{11}, b_{12}, \cdots, b_{1m} \\ &b_{21}, b_{22}, \cdots, b_{2m} \\ &\quad \quad \ \ \ \cdots \\ &b_{m1}, b_{m2}, \cdots, b_{mm} \\ \end{aligned} \right]

5.2. 一致性检验

同样的方法计算得出每个矩阵的最大特征根\lambda_1, \lambda_2, \cdots, \lambda_n,和每个矩阵的一致性指标CI_1, CI_2, \cdots, CI_n,要想计算权向量,就要先进行一致性检验。
比较阵的总体的一致性指标CI的定义如下:
CI = \frac{\; CI_1 + CI_2 + \cdots + CI_n \;}{ \; RI_1 + RI_2 + \cdots + RI_n \;}
CI < 0.1则所有矩阵均通过一致性检验;若没有,调整CI_i偏大的矩阵中的数据,直到CI通过一致性检验。

5.3. 计算权向量

通过了一致性检验就可以继续计算各个矩阵权向量了,通过求解最大特征根\lambda,求得权向量\mathbf{w_1}, \mathbf{w_2}, \cdots, \mathbf{w_n}
\left\{ \begin{aligned} \ B_1\mathbf{w_1} &= \lambda_1\mathbf{w_1} \\ \ B_2\mathbf{w_2} &= \lambda_2\mathbf{w_2} \\ &\cdots \\ \ B_n\mathbf{w_n} &= \lambda_n\mathbf{w_n} \\ \end{aligned} \right.

将这些权向量归一化后,我们就知道了每个备选方案对于某个因素的得分高低。比如假设\mathbf{w_2}表示旅游的花费,\mathbf{w_2} = [0.3, 0.2, 0.5],所对应的三个城市为,苏州,海南和井冈山,则权重向量的实际意义就是:去井冈山的花费打分最高,花费最少;其次是苏州;去海南的花费最高。

5.4 计算最终打分&决定出最优方案

我们现在已经有了各个因素之间的重要程度\mathbf{w},也有了各个备选方案对于每个因素的得分\mathbf{w_1}, \mathbf{w_2}, \cdots, \mathbf{w_n},一个非常朴素的计算总评分的方法就是:将每一个备选方案的每个因素的得分乘以该因素的权重,再把这个方案各个因素的加权得分相加得到总评分。为了方便计算,我们将权向量\mathbf{w_1}, \mathbf{w_2}, \cdots, \mathbf{w_n}写入矩阵B:
B = \left[ \begin{aligned} &\mathbf{w_1}^T \\ &\mathbf{w_2}^T \\ &\; \; \ \vdots \\ &\mathbf{w_n}^T \\ \end{aligned} \right]
定义总评分向量\mathbf{s}s_i表示第i个方案的总评分:
\mathbf{s} = \mathbf{w}^T \cdot B
即:
s_i = a_1b_{1i} + a_2b_{2i} + \cdots + a_nb_{ni}
总评分最高的方案,就是我们要选择的最优方案。


JavaArtist
2022/8/20

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容