层次分析法(AHP)

层次分析法(Analytic Hierarchy Process,AHP)

1. 简介

层次分析法, 即Analytic Hierarchy Process(AHP) , 是美国运筹学家 Saaty20 世纪 70 年代初期提出的一种主观赋值评价方法。 层次分析法将与决策有关的元素分解成目标准则方案等多个层次, 并在此基础上进行定性和定量分析, 是一种系统、简便、灵活有效的决策方法。

AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避决策者主观判断的缺点。

这个算法是一个多指标综合评价算法,由于这个算法简单、实用,因此在经管类或者实际生活中应用的非常多,其一般有两个用途

  • 指标定权

给指标制定权重,打个比方,例如选择旅游地这个决策,可能一般我们由以下5个因素组成,但是每个人(主观)对因素的重视程度不一,ahp可以实现在无需搜集数据的情况下,给这些指标制定权重。
在这里插入图片描述

  • 量化方案选择

同样是选择旅游地这个决策,可能我们有一些方案,例如哈尔滨、沈阳、长春这三个方案,层次分析法可以综合以上5个因素,给这些方案计算得出一个量化得分,例如哈尔滨0.3分、沈阳0.35分、长春0.45分,这样根据分值大小,我们就可以选择得到内心或者经验上最心怡的方案了。

在这里插入图片描述

通过上面讲解层次分析法的作用,在生活、工作中其实我们可以应用这个模型的渠道是非常广的,特别是那些需要主观决策的、或者需要用经验判断的决策方案,例如:

  • 买房子(主观决策)
  • 选择旅游地(主观决策)
  • 给员工进行绩效评估(经验判断)
  • 选择开店地址(经验判断)

2. 原理

层次分析法的原理,是在分析一个现象或问题之前,首先将现象或问题根据它们的性质分解为有关因素,并根据它们之间的关系分类而形成一个多层次的结构模型。然后通过经验或专家,来判断衡量低层因素对高层因素的相对重要性,并根据重要性的程度得出权重排序,进而可以量化分析比较。层次分析法的核心是将影响因素层次化数据化,它把一个抽象的现象或问题由难到易地予以分解,易于对复杂问题进行直观地判断,并作出决策。层次分析法具有将复杂问题简单化且计算简单等优点,应用十分广泛,诸如在人员素质评估、 多方案比较、科技成果评比和工作成效评价等多领域多方面都有运用。

简单地说,层次分析法就是将一个决策事件分解为目标层(例如选择旅游地)准则层(影响决策的因素,例如景色、交通、费用等)以及方案层(指的是方案,例如去广州、长春等地旅游)

在这里插入图片描述

3.步骤

层次分析法应用过程中,大体步骤主要包括四个。第一步是层次结构模型的构建第二步构造判断矩阵第三步为层次单排序及其一致性检验,这步即为对指标定权,第四步为层次总排序及其一致性检验,这布如果没有决策层的话,通常可以省略。

PS:一致性检验的含义用于确定构建的判断矩阵是否存在逻辑问题,例如以A、B、C构建判断矩阵,若判定A相当于B为3(A比B稍微重要),A相当于C为1/3(C比A稍微重要),在判断B相当于C时,根据上述的逻辑,理应C比B重要,若我们在构建判断矩阵时,错误填写为B相当于C为3(B比C稍微重要),那么就犯了逻辑错误。

3.1 确定指标体系

顾名思义,在这个层次评价模型里面,我们需要确认整个决策事件的目标层准则层方案层

在这里插入图片描述

其中,

  • 目标层:最优旅游地选择
  • 准则层:景色、费用、居住、饮食、旅途
  • 方案层:西安、云南、西藏、青海

需要注意的时,准则层如果有多层,例如下图所示,依次类推就行了。
在这里插入图片描述

3.2 构造判断矩阵

构造判断矩阵就是通过各要素之间相互两两比较,并确定各准则层对目标层的权重。

简单地说,就是把准则层的指标进行两两判断,通常我们使用Santy1-9标度方法给出。

标度含义
1表示两个元素相比,具有同样的重要性
3表示两个元素相比,前者比后者稍重要
5表示两个元素相比,前者比后者明显重要
7表示两个元素相比,前者比后者极其重要
9表示两个元素相比,前者比后者强烈重要
2、4、6、8表示上述相邻判断的中间值
1~9的倒数表示相应两用者交换次序比较的重要性

对于准则层A,我们可以构建一个

A = ( a i j ) m × n = [ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . . . . . . . a 3 n a m 1 a m 2 . . . a m n ] A=(a_{ij})_{m\times n}=\begin{bmatrix}a_{11}&a_{12}&...&a_{1n}\\a_{21}&a_{22}&...&a_{2n}\\...&...&...&a_{3n}\\a_{m1}&a_{m2}&...&a_{mn}\end{bmatrix} A=(aij)m×n= a11a21...am1a12a22...am2............a1na2na3namn

其中A中的元素满足:

( 1 ) a i j > 0 ( 2 ) a i j = 1 a j i ( 3 ) a i i = 1 \begin{align*} & (1) \quad a_{ij} > 0 \\ & (2) \quad a_{ij} = \frac{1}{a_{ji}} \\ & (3) \quad a_{ii} = 1 \end{align*} (1)aij>0(2)aij=aji1(3)aii=1

带入矩阵后 a i j a_{ij} aij 的标度方法为:

标度含义
1ci与cj具有同样的重要性
3ci比cj稍重要
5ci比cj明显重要
7ci比cj极其重要
9ci比cj强烈重要
2、4、6、8表示上述相邻判断的中间值
1~9的倒数ci与cj交换次序比较的重要性

简单说,例如对于准则层:景色、费用、居住、饮食、旅途,我们可以构建这样一个5*5的判断矩阵:

指标景色费用居住饮食旅途
景色
费用
居住
饮食
旅途

其中对角线为各个指标自己的判断,例如对于【景色】与【景色】,其重要性为1,因为肯定是指标自身对比自身肯定是1:1对于第二行第一列的元素 aij,也就是【费用】与【景色】对比,可能我认为【费用】比【景色】明显重要,那么就可以标值为5

参考标度方法

标度含义
1ci与cj具有同样的重要性
3ci比cj稍重要
5ci比cj明显重要
7ci比cj极其重要
9ci比cj强烈重要
2、4、6、8表示上述相邻判断的中间值
1~9的倒数ci与cj交换次序比较的重要性

那么判断矩阵就会变为:

指标i\j景色费用居住饮食旅途
景色10.2
费用51
居住1
饮食1
旅途1

以此类推,直到构建完成一个完整的判断矩阵

指标景色费用居住饮食旅途
景色1550.33338
费用0.210.250.16672
居住0.2410.23
饮食36516
旅途0.1250.50.33330.16671

3.3 层次单排序和一致性检验

3.3.1 层次单排序-计算相对权重

简单地说,层次单排序就是根据我们构成的判断矩阵,求解各个指标的权重。

例如我们判断矩阵A如下:

指标景色费用居住饮食旅途
景色1550.33338
费用0.210.250.16672
居住0.2410.23
饮食36516
旅途0.1250.50.33330.16671

那么我们可以计算其权重(权重向量),有两种方式,一种是方根法,一种是和法

三种方法计算权重:

(1)算术平均法(2)几何平均法(3)特征值法

强烈建议大家在比赛时三种方法都使用:

以往的论文利用层次分析法解决实际问题时,都是采用其中某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。

注:(1)一致矩阵不需要进行一致性检验,只有非一致矩阵的判断矩阵才需要进行一致性检验;(2)在论文写作中,应该先进行一致性检验,通过检验后再计算权重。

其中方根法计算权重如下:

  1. 计算每行乘积的m次方,得到一个m维向量

w i ˉ = ∏ j = 1 m a i j m \bar{\boldsymbol{w}_i}=\sqrt[m]{\prod_{j=1}^ma_{ij}} wiˉ=mj=1maij

即:

景色: 1 ∗ 5 ∗ 5 ∗ 1 3 ∗ 8 5 = 2.3162 费用: 1 5 ∗ 1 ∗ 1 4 ∗ 1 6 ∗ 2 5 = 0.4409 居住: 1 5 ∗ 4 ∗ 1 ∗ 1 5 ∗ 3 5 = 0.8635 饮食: 3 ∗ 6 ∗ 5 ∗ 1 ∗ 6 5 = 3.5195 旅途: 1 8 ∗ 1 2 ∗ 1 3 ∗ 1 6 ∗ 1 5 = 0.3222 \begin{align*} \text{景色:}\sqrt[5]{1*5*5*\frac13*8}=2.3162\\ \text{费用:} \sqrt[5]{\frac15*1*\frac14*\frac16*2}=0.4409\\ \text{居住:}\sqrt[5]{\frac15*4*1*\frac15*3}=0.8635\\ \text{饮食:} \sqrt[5]{3*6*5*1*6}=3.5195\\ \text{旅途:}\sqrt[5]{\frac18*\frac12*\frac13*\frac16*1}=0.3222\\ \end{align*} 景色:5155318 =2.3162费用:551141612 =0.4409居住:55141513 =0.8635饮食:536516 =3.5195旅途:5812131611 =0.3222

(2)将将向量标准化即为权重向量,即得到权重

ω i = ω ‾ i ∑ j = 1 m ω ‾ j \omega _{i} = \frac{\overline{\omega}_{i}}{\sum\nolimits_{j=1}^{m}\overline{\omega}_{j}} ωi=j=1mωjωi

即:

景色: 2.3162 2.3162 + 0.4409 + 0.8635 + 3.5195 + 0.3222 = 0.3104 费用: 0.4409 2.3162 + 0.4409 + 0.8635 + 3.5195 + 0.3222 = 0.0591 居住: 0.8635 2.3162 + 0.4409 + 0.8635 + 3.5195 + 0.3222 = 0.1157 饮食: 3.5195 2.3162 + 0.4409 + 0.8635 + 3.5195 + 0.3222 = 0.4716 旅途: 0.3222 2.3162 + 0.4409 + 0.8635 + 3.5195 + 0.3222 = 0.0432 \begin{align*} \text{景色:}\frac{2.3162}{2.3162+0.4409+0.8635+3.5195+0.3222}=0.3104\\ \text{费用:}\frac{0.4409}{2.3162+0.4409+0.8635+3.5195+0.3222}=0.0591\\ \text{居住:}\frac{0.8635}{2.3162+0.4409+0.8635+3.5195+0.3222}=0.1157\\ \text{饮食:}\frac{3.5195}{2.3162+0.4409+0.8635+3.5195+0.3222}=0.4716\\ \text{旅途:}\frac{0.3222}{2.3162+0.4409+0.8635+3.5195+0.3222}=0.0432\\ \end{align*} 景色:2.3162+0.4409+0.8635+3.5195+0.32222.3162=0.3104费用:2.3162+0.4409+0.8635+3.5195+0.32220.4409=0.0591居住:2.3162+0.4409+0.8635+3.5195+0.32220.8635=0.1157饮食:2.3162+0.4409+0.8635+3.5195+0.32223.5195=0.4716旅途:2.3162+0.4409+0.8635+3.5195+0.32220.3222=0.0432

而和法计算权重如下:

  • step1:先将矩阵的每列进行标准化
  • step2:将标准化后的各元素按行求和
  • step3:将求和结果进行标准化

例如这张图所示:
在这里插入图片描述

3.3.2 计算一致性指标CI

以上,求得权重矩阵后,可以计算最大特征根,其公式为:

λ m a x = 1 n ∑ i = 1 n ( A W ) i W i \lambda _{max} = \frac{1}{n} \sum \limits_{i=1}^{{n}} \frac{(AW)_{i}}{W_{i}} λmax=n1i=1nWi(AW)i

其中 n n n为维度数,例如构建的判断矩阵为:景色、费用、居住、饮食、旅途时, n = 5 n=5 n=5

A W AW AW为:判断矩阵*标准化后的权重,然后按按的累加值。

即判断矩阵 A A A为:

指标景色费用居住饮食旅途
景色1550.33338
费用0.210.250.16672
居住0.2410.23
饮食36516
旅途0.1250.50.33330.16671

标准化后权重 W W W为:

  • 将通过了一致性检验的判断矩阵按列归一化
  • 每一行分别求和,求和的结果除以 n n n,得到的列向量就是权重向量
指标名称权重向量
景色0.3104
费用0.0591
居住0.1157
饮食0.4716
旅途0.0432

其中 A ∗ W A*W AW为:

指标景色费用居住饮食旅途
景色0.31040.29550.57850.157184280.3456
费用0.062080.05910.0289250.078615720.0864
居住0.062080.23640.11570.094320.1296
饮食0.93120.35460.57850.47160.2592
旅途0.03880.029550.038562810.078615720.0432

A W AW AW

在这里插入图片描述

λ m a x λ_{max} λmax

AW1/W1+AW2/W2+AW3/W3+···+AWn/Wn=x

最大特征值 λ m a x = x λmax=x λmax=x / 矩阵阶数=5.416

最大特征值 λ m a x λmax λmax求解出来后, C . I C.I C.I值就好算多了,

根据 C . I C.I C.I值公式, λ m a x = 5.416 λmax=5.416 λmax=5.416 n = 5 n=5 n=5,代入可得 C . I C.I C.I值=0.1042

C . I . = λ m a x − n n − 1 = 5.416 − 5 5 − 1 = 0.1042 C.I. = \frac{\lambda _{max} - n}{n - 1} = \frac{5.416 - 5}{5 - 1} =0.1042 C.I.=n1λmaxn=515.4165=0.1042

3.3.3 查找对应的平均随机一致性指标RI

R I RI RI值通过查表可以得知,这个是 S a t t y Satty Satty 模拟 1000 1000 1000 次得到的随机一致性指标 R . I . R.I. R.I.取值表(如下表所示):

矩阵n 阶12345678910111213
RI 值000.520.891.121.261.361.411.461.491.511.541.56

而我们的矩阵是5阶(准则层因子个数),矩阵阶数为5时对应的 R I RI RI值为1.12

3.3.4 计算一致性比例CR

一致性检验的含义用于确定构建的判断矩阵是否存在逻辑问题,例如以 A A A B B B C C C构建判断矩阵,若判定 A A A相当于 B B B3 A A A B B B稍微重要), A A A相当于 C C C 1 / 3 1/3 1/3 C C C A A A稍微重要),在判断 B B B相当于 C C C时,根据上述的逻辑,理应 C C C B B B重要,若我们在构建判断矩阵时,错误填写为 B B B相当于 C C C 3 3 3 B B B C C C稍微重要),那么就犯了逻辑错误;

代入公式:

C . R . = C . I . R . I . C.R. = \frac{C.I.}{R.I.} C.R.=R.I.C.I.

可以得到 C . R . C.R. C.R.值为 0.1042 / 1.12 = 0.093 0.1042/1.12=0.093 0.1042/1.12=0.093

所以 C . R . = 0.093 < 0.1 C.R.=0.093<0.1 C.R.=0.093<0.1 时,表明判断矩阵 A A A 的一致性程度被认为在容许的范围内,此时可 用 A A A 的特征向量开展权向量计算;若 C . R . ≥ 0.1 C.R.≥0.1 C.R.0.1, 说明我们在构建判断矩阵时出现了逻辑错误,

例如 B B B 矩阵,我们假设在两两对比第三行第二列时,填入了 1 / 5 1/5 1/5 ,这个时候就无法通过一致性检验,因为其犯了逻辑错误,我们根据第二行第一列,可以知道上海的地位比广州稍微重要,根据第三行第一列,可以知道北京的地位比广州强烈重要,所以根据逻辑:上海>广州,北京>广州,那么北京应该是>上海,但是我们填入了 1 / 5 1/5 1/5 ,也就是北京比上海相当不重要,所以就出现了逻辑错误,这个时候,我们需要对判断矩阵 A A A 进行修正,修正为北京>上海。

CR > 0.1 如何修正?

往一致矩阵上调整一致矩阵各行成倍数关系
在这里插入图片描述

至此,我们便完成了层次单排序与一致性检验,通过我们在使用层次分析法只使用到这里,用于对指标进行定权,假如我们有方案层,便需要做层次总排序与其一致性检验

3.4 层次总排序与一致性检验

这里列出一般在文献中的说明:

计算某一层次所有因素对于最高层(目标层)相对重要性的权值,称为层次总排 序。该过程是从最高层次向最低层次依次进行:

在这里插入图片描述

B B B 𝐵 1 , 𝐵 2 ⋯ , 𝐵 𝑛 𝐵_1 ,𝐵_2 ⋯ ,𝐵_𝑛 B1B2Bn对上层( A A A 层)中因素 𝐴 𝑗 ( 𝑗 = 1 , 2 , ⋯ , 𝑚 ) 𝐴_𝑗(𝑗 = 1,2, ⋯ ,𝑚) Ajj=1,2m的层次排序 一致性指标为 𝐶 𝐼 𝑗 𝐶𝐼𝑗 CIj,随机一致性指标为 𝑅 𝐼 𝑗 𝑅𝐼𝑗 RIj ,则层次总排序的一致性比率为:

C R = a 1 C I 1 + a 2 C I 2 + ⋯ + a m C I m a 1 R I 1 + a 2 R I 2 + ⋯ + a m R I m = ∑ a i C I i ∑ a i R I i = C I R I \begin{aligned}CR=\frac{a_1CI_1+a_2CI_2+\cdots+a_mCI_m}{a_1RI_1+a_2RI_2+\cdots+a_mRI_m}=\frac{\sum a_iCI_i}{\sum a_iRI_i}=\frac{CI}{RI} \end{aligned} CR=a1RI1+a2RI2++amRIma1CI1+a2CI2++amCIm=aiRIiaiCIi=RICI

𝐶 𝑅 < 0.1 𝐶𝑅 < 0.1 CR<0.1时,认为层次总排序通过一致性检验,否则就需要重新调整判断矩阵 的元素取值。到此,根据最下层(决策层)的层次总排序做出最后的决策。

下面我用人话说一下:

层次总排序,其实就是通过类型层次单排序的方法来给方案打分。

在这里插入图片描述

打个比方,我们根据2.3的层次单排序,现在确定 A 1 A1 A1 ~ A 5 A5 A5 的权重为

景色费用居住饮食旅途
0.31040.05910.11570.47160.0432

现在我想要计算方案 B 1 : B1: B1:哈尔滨的得分,但是我们并不知道哈尔滨的景色得分为多少,那该怎么办呢?

类似2.3的层次单排序,对于景色这个因素,我们可以构建一个3*3的矩阵,如下所示:

景色哈尔滨沈阳长春
哈尔滨1
沈阳1
长春1

通过层次单排序两两对比各个方案在景色的比较,我们可以得到哈尔滨、沈阳、长春的权重,那么这个权重就可以作为哈尔滨、沈阳、长春在景色上的得分。

依次类推,我们构造得到哈尔滨、沈阳、长春在景色上的得分矩阵 A 1 A1 A1,在费用上的得分矩阵 A 2 A2 A2,在居住上的得分矩阵 A 3 A3 A3,在饮食上的得分矩阵 A 4 A4 A4,在旅途上的得分矩阵 A 5 A5 A5

A 1 = [ 1 2 5 1 2 1 2 1 5 1 2 1 ] A 2 = [ 1 1 3 1 8 3 1 8 3 1 1 3 8 3 1 ] A 3 = [ 1 1 3 1 1 3 1 1 3 1 3 1 3 1 ] A 4 = [ 1 3 4 1 1 1 3 1 1 1 4 1 1 ] A 5 = [ 1 1 1 4 1 1 1 4 4 4 1 ] A_1=\begin{bmatrix}\\1&2&5\\\frac{1}{2}&1&2\\\frac{1}{5}&\frac{1}{2}&1\end{bmatrix}\quad A_2=\begin{bmatrix}1&\frac{1}{3}&\frac{1}{8}\\&3&\frac{1}{8}\\3&1&\frac{1}{3}\\8&3&1\\\end{bmatrix}\quad A_3=\begin{bmatrix}1&1&3\\1&1&3\\1&1&3\\\frac{1}{3}&\frac{1}{3}&1\\\end{bmatrix}\quad A_4=\begin{bmatrix}\\1&3&4\\1&1&1\\3&1&1\\\frac{1}{4}&1&1\\\end{bmatrix}\quad A_5=\begin{bmatrix}1&1&\frac{1}{4}\\\\1&1&\frac{1}{4}\\4&4&1\\\end{bmatrix} A1= 121512121521 A2= 138313138181311 A3= 11131111313331 A4= 1134131114111 A5= 11411441411

计算得到其得分为:

B 1 B 2 B 3 B_{1}B_{2}B_{3} B1B2B3 A 1 A_1 A1的权重为 [ 0.5954 , 0.2764 , 0.1283 ] [0.5954,0.2764,0.1283] [0.5954,0.2764,0.1283]

B 1 B 2 B 3 B_{1}B_{2}B_{3} B1B2B3 A 2 A_2 A2,的权重为 [ 0.0819 , 0.2363 , 0.6817 ] [0.0819,0.2363,0.6817] [0.0819,0.2363,0.6817]

B 1 B 2 B 3 B_{1}B_{2}B_{3} B1B2B3 A 3 A_{3} A3的权重为 [ 0.4286 , 0.4286 , 0.1429 ] [0.4286,0.4286,0.1429] [0.4286,0.4286,0.1429]

B 1 B 2 B 3 B_1B_2B_3 B1B2B3 A 4 A_{4} A4的权重为 [ 0.6337 , 0.1919 , 0.1744 ] [0.6337,0.1919,0.1744] [0.6337,0.1919,0.1744]

B 1 B 2 B 3 B_{1}B_{2}B_{3} B1B2B3 A 5 A_{5} A5的权重为 [ 0.1667 , 0.1667 , 0.6667 ] [0.1667,0.1667,0.6667] [0.1667,0.1667,0.6667]

PS:以上全部的判断矩阵都需要做一致性检验。

那么对于方案 B 1 B1 B1(哈尔滨),它的总得分为:

哈尔滨在景色上的得分 * 景色的权重+哈尔滨在费用上的得分 * 费用的权重+哈尔滨在居住上的得分 * 居住的权重+哈尔滨在饮食上的得分 * 饮食的权重+哈尔滨在旅途上的得分 * 旅途的权重=0.5954 * 0.3104+0.819 * 0.0591+0.4286 * 0.1157+0.6337 * 0.4716+0.1667  *0.0432 = .5889

以此类推,可以计算得到方案B2(沈阳)为

0.2764*0.3104+0.2363*0.0591+0.4286*0.1157+0.1919*0.4716+0.1667*0.0432=0.2471

方案B3(长春):

0.1283*0.3104+0.6817*0.0591+0.1429*0.1157+0.1744*0.4716+0.6667*0.0432=0.2077

因此哈尔滨得分最高,选择去哈尔滨。

3.5 根据权重矩阵计算得分

三种方法计算权重:

(1)算术平均法(2)几何平均法(3)特征值法

强烈建议大家在比赛时三种方法都使用:

以往的论文利用层次分析法解决实际问题时,都是采用其中某一种方法 求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的 稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得 到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了 采用单一方法所产生的偏差,得出的结论将更全面、更有效。

注:(1)一致矩阵不需要进行一致性检验,只有非一致矩阵的判断矩阵才需要进行一致性检验;(2)在论文写作中,应该先进行一致性检验,通过检验后再计算权重,视频中讲解的只是为了顺应计算过程。

景色哈尔滨沈阳长春
哈尔滨125
沈阳1/212
长春1/51/21
3.5.1 算术平均法求权重

仅使用第一列的数据,计算出来的权重:

  • 哈尔滨 = 1 /(1+0.5+0.2)= 0.5882
  • 沈阳 = 0.5 /(1+0.5+0.2)= 0.2941
  • 长春 = 0.2 /(1+0.5+0.2)= 0.1177

使用第二列的数据,计算出来的权重:

  • 哈尔滨 = 2 /(2+1+0.5)= 0.5714
  • 沈阳 = 1 /(2+1+0.5)= 0.2857
  • 长春 = 0.5 /(2+1+0.5)= 0.1429

使用第三列的数据,计算出来的权重:

  • 哈尔滨 = 5 /(5+2+1)= 0.625
  • 沈阳 = 2 /(5+2+1)= 0.25
  • 长春 = 1 /(5+2+1)= 0.125

综合上述三列,我们求平均权重:

  • 哈尔滨 = (0.5882+0.5714+0.625)/3=0.5949
  • 沈阳 = (0.2941+0.2857+0.25)/3=0.2766
  • 长春 = (0.1177+0.1429+0.125)/3=0.1285

整理得:

第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)

景色哈尔滨沈阳长春
哈尔滨0.58820.57140.625
沈阳0.29410.28570.25
长春0.11770.14290.125

第二步:将归一化的各列相加(按行求和)

未归一化的权重
哈尔滨0.5882+0.5714+0.625 = 1.7846
沈阳0.2941+0.2857+0.25=0.8298
长春0.1177+0.1429+0.125=0.3856

第三步:将相加后得到的向量中每个元素除以n即可得到权重向量

权重
哈尔滨1.7846 / 3 = 0.5949
沈阳0.8298 / 3 = 0.2766
长春0.3856 / 3 = 0.1285
3.5.2 几何平均法求权重

几何平均法求权重也有三步:

第一步:将A的元素按照行相乘得到一个新的列向量

第二步:将新的向量的每个分量开n次方

第三步:对该列向量进行归一化即可得到权重向量

假设判断矩阵

A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] A=\begin{bmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&\ddots&\vdots\\a_{n1}&a_{n2}&\cdots&a_{nn}\end{bmatrix} A= a11a21an1a12a22an2a1na2nann

那么几何平均法求得的权重向量

ω i = ( ∏ j = 1 n a i j ) 1 n ∑ k = 1 n ( ∏ j = 1 n a k j ) 1 n , ( i = 1 , 2 , ⋯   , n ) \omega_{i}=\frac{(\prod_{j=1}^{n}a_{ij})^{\frac{1}{n}}}{\sum_{k=1}^{n}(\prod_{j=1}^{n}a_{kj})^{\frac{1}{n}}},(i=1,2,\cdots,n) ωi=k=1n(j=1nakj)n1(j=1naij)n1,(i=1,2,,n)

算术平均法权重几何平均法权重
哈尔滨0.59490.5954
沈阳0.27660.2764
长春0.12850.1283

注: 权重和应为1,这里由于四舍五入所以会有可以忽略的差距。

3.5.3 特征值法求权重

一致矩阵有一个特征值为n,其余特征值均为0.

另外,我门很容易得到,特征值为n时,对应的特征向量网子为

k [ 1 a 11 , 1 a 12 , ⋯   , 1 a 1 n ] T ( k ≠ 0 ) k[\frac{1}{a_{11}},\frac{1}{a_{12}},\cdots,\frac{1}{a_{1n}}]^{T}(k\neq0) k[a111,a121,,a1n1]T(k=0)

这一特征向量刚好就是一致矩阵的第一列。

景色哈尔滨沈阳长春
哈尔滨124
沈阳1/212
长春1/41/21

注意,权重一定要进行归一化处理: 哈尔滨 = 1 /(1+0.5+0.25)沈阳 = 0.5 /(1+0.5+0.25) 长春 = 0.25 /(1+0.5+0.25)

假如我们的判断矩阵一致性可以接受,那么我们可以仿照一致矩阵权重的求法。

第一步:求出矩阵A的最大特征值以及其对应的特征向量

第二步:对求出的特征向量进行归一化即可得到我们的权重

最大特征值为3.0055 , 一致性比例 CR = 0.0053

对应的特征向量:[‐0.8902,‐0.4132,‐0.1918]

对其归一化:[0.5954,0.2764,0.1283]

算术平均法几何平均法特征值法
哈尔滨0.59490.59540.5954
沈阳0.27660.27640.2764
长春0.12850.12830.1283

4. 应用

4.1 文献中使用

这里列出一般在文献中的说明:

step1:层次单排序

层次单排序是指针对上一层某元素将本层中所有元素两两评比,并开展层次排序, 进行重要顺序的排列,具体计算可依据判断矩阵 A A A 进行,计算中确保其能够符合 A W = λ m a x 𝑊 AW=\lambda _{max}𝑊 AW=λmaxW特征根特征向量条件。在此, A A A 的最大特征根为 λ m a x \lambda _{max} λmax,对应 λ m a x λmax λmax的正规化的特征向量为 W W W 𝑤 𝑖 𝑤_𝑖 wi W W W 的分量,其指的是权值,与其相应元素单排序对应。 利用判断矩阵计算各因素 𝑎 𝑖 𝑗 𝑎_{𝑖𝑗} aij 对目标层的权重(权系数)。

权重向量 W W W)与最大特征 λ m a x \lambda _{max} λmax)的计算步骤(方根法或者和法)如下表所示:
在这里插入图片描述

step2:求解最大特征根与CI值

n n n 阶判断矩阵为 B B B,则可用以下方法求出其最大的特征根 λ m a x \lambda _{max} λmax:

BW=λW

其中, W W W B B B 的特征向量。 在层次分析法中, 我们用以下的一致性指标 C I CI CI 来检验判断的一致性指标 (Consistency Index):

C . I . = λ m a x − n n − 1 C.I. = \frac{\lambda _{max} - n}{n - 1} C.I.=n1λmaxn

其中 n n n 为指标数(即判断矩阵行数) C . I . = 0 C.I.=0 C.I.=0 表示判断矩阵完全一致, C . I . C.I. C.I. 越大,判断矩阵的不一致性程度越严重。

step3:根据CI、RI值求解CR值,判断其一致性是否通过

Satty 模拟 1000 1000 1000 次得到的随机一致性指标 R . I . R.I. R.I.取值表(如下表 所示):

矩阵n 阶12345678910111213
RI 值000.520.891.121.261.361.411.461.491.511.541.56

C . R . = C . I . R . I . C.R. = \frac{C.I.}{R.I.} C.R.=R.I.C.I.

C . R . < 0.1 C.R.<0.1 C.R.<0.1 时,表明判断矩阵 A A A 的一致性程度被认为在容许的范围内,此时可用 A A A 的特征向量开展权向量计算;若 C . R . ≥ 0.1 C.R.≥0.1 C.R.0.1, 则应考虑对判断矩阵 A A A 进行修正。

4.2 论文中使用

对于判断矩阵 A A A

A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] A= \begin{bmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{bmatrix} A= a11a21an1a12a22an2a1na2nann
先将其归一化,再将归一化的矩阵按列相加,并将每个元素除以 n n n 得到权重向量,即

ω i = 1 n ∑ j = 1 n a i j ∑ k = 1 n a k j ( i = 1 , 2 , ⋅ ⋅ ⋅ , n ) . \omega _{i} = \frac{1}{n} \sum \limits_{j=1}^{{n}} \frac{a_{ij}}{\sum \limits_{k=1}^{{n}} a_{kj}}(i = 1,2,···,n). ωi=n1j=1nk=1nakjaiji=1,2,⋅⋅⋅,n).

如图

(1)
在这里插入图片描述

(2)问题:应先一致性检验,再计算权重分
在这里插入图片描述

(3)优秀的例子,求解过程符合例子,先构造判断矩阵,再对矩阵一致性检验

在这里插入图片描述

5.总结

在实际比赛和科研中,用特征值法求权重更常用也更方便,在非一致性不大的情况下,二者算出的权重相差也并不大,可实际生活中的数据一致性并非那么强,因此建议用特征值法。当然为了凑字数的话也可以两种方法都用,然后取其平均值。

用层次分析法的套路

  • Step1:解决评价类问题
  • Step2:画出层级结构图(目标层、准则层、方案层)(出现在论文里
  • Step3:构造判断矩阵(确定评价指标孰重孰轻)
  • Step4:依照评价指标对各个方案进行打分
  • Step5:求出权重,填表,求得最后得分
  • Step6:层次总排序一致性检验

关于step4一些小妙招

实际生活和题目中,需要我们自行查询相关的数据支持,一般采取网上搜集的材料或调查问卷作为佐证,有时对于显而易见的常识问题也可不做说明。

常用的中文数据库:知网、万方、百度学术

英文数据库:Web of Science、SpringerLink、谷歌学术

绘图工具:ProcessOn、亿图

5.1 优点

系统性:将对象视作系统,按照分解、比较、判断、综合的思维方式进行决策。成为继机理分析、统计分析之后发展起来的系统分析的重要工具;

实用性:一定性与定量相结合,能处理许多用传统的最优化技术无法着手的实际问题,应用范围很广,同时,这种方法使得决策者与决策分析者能够相互沟通,决策者甚至可以直接应用它,这就增加了决策的有效性;

简洁性:计算简便,结果明确,具有中等文化程度的人即可以了解层次分析法的基本原理并掌握该法的基本步骤,容易被决策者了解和掌握。便于决策者直接了解和掌握。

5.2 缺点

囿旧:只能从原有的方案中优选一个出来,没有办法得出更好的新方案;

粗略:该法中的比较、判断以及结果的计算过程都是粗糙的,不适用于精度较高的问题;

主观:从建立层次结构模型到给出判断矩阵,人主观因素对整个过程的影响很大,这就使得结果难以让所有的决策者接受。当然采取专家群体判断的办法是克服这个缺点的一种途径。每一层因素的权重是主观给出,在某些场合会影响泛化性。

5.3 注意事项

如果所选的要素不合理,其含义混淆不清,或要素间的关系不正确,都会降低AHP法的结果质量,甚至导致AHP法决策失败。

为保证递阶层次结构的合理性,需把握以下原则:

(1)分解简化问题时把握主要因素,不漏不多;

(2)注意相比较元素之间的强度关系,相差太悬殊的要素不能在同一层次比较。

参考

  1. https://blog.csdn.net/qq_41686130/article/details/122081827 前几个部分借鉴很多
  2. b站很多学习视频
### 使用 Python 调用新浪财经 API 接口 为了使用 Python 调用新浪财经 API 并获取数据,通常会采用 `requests` 库来发送 HTTP 请求并处理返回的数据。下面是一个具体的例子,展示如何从新浪财经获取期货五日线数据。 #### 安装依赖库 首先安装必要的 Python 包: ```bash pip install requests pandas ``` #### 编写代码示例 接下来编写一段简单的 Python 代码用于请求和解析来自新浪财经的数据: ```python import requests import json import pandas as pd def get_sina_finance_data(symbol='CON_OP_10002180'): url = f"https://stock.finance.sina.com.cn/futures/api/openapi.php/StockOptionDaylineService.getFiveDayLine?symbol={symbol}" response = requests.get(url) data_json = response.json() if 'result' in data_json and 'data' in data_json['result']: df = pd.DataFrame(data_json['result']['data']) # 数据清洗与转换 df.rename(columns={'day': 'Date', 'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close'}, inplace=True) df.set_index('Date', inplace=True) return df if __name__ == "__main__": symbol_code = "CON_OP_10002180" result_df = get_sina_finance_data(symbol=symbol_code) print(result_df.head()) ``` 这段代码定义了一个函数 `get_sina_finance_data()` 来接收一个参数 `symbol` 表示要查询的具体证券代号,默认值为 `'CON_OP_10002180'` 。该函数构建了完整的 URL 地址并向其发起 GET 请求;如果响应成功,则将 JSON 格式的字符串转化为字典对象,并进一步提取其中的关键字段形成 Pandas DataFrame 结构以便于后续操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值