层次分析法入门:从判断矩阵到权重计算全流程

发布时间:2026/10/24 9:19:08
层次分析法入门:从判断矩阵到权重计算全流程

聊一个特别常见的场景:手里有三份工作机会,薪资、发展、强度、地点各有千秋,怎么选都像是要凭感觉拍脑袋。这种问题,用“打分+加权”总觉得主观,用“数据建模”又没标签。这时候可以试试层次分析法——把复杂的多准则决策拆成目标、准则、方案三个层次,再用两两比较把模糊的判断变成一组可计算的权重,最后排出个明明白白的优先序。

这篇是第一讲,不讲冰山的细节,只把主干和最常用的操作讲透:怎么建层次结构,怎么填判断矩阵,怎么算权重、做一致性检验,以及最终怎么把方案层汇总出总分。适合刚接触AHP、上课听过但没真正算过的人,也适合想快速把它用到实际方案评审里的朋友。

1. 层次分析法到底是什么,为什么决策绕不开它

1.1 先从一个人人都会遇到的决策说起

假设要选一个项目方案,评价维度有成本、效率、风险、影响力。你会发现一个麻烦:成本低但效率未必高,效率高可能风险也高,风险低影响力又不突出。这时候常规做法是“给每个维度设权重,然后打分”。问题是,权重是怎么来的?拍脑袋定两个数字,说服力不够。

层次分析法换了一条路:不直接问你“成本权重多少、效率权重多少”,而是把评价维度两两拎出来,问“成本比效率重要多少”。人对绝对数字不敏感,但做相对比较很在行。1比3、3比5这种比较,普通人也能给出靠谱判断。AHP把这种判断填进矩阵,再通过数学方法提炼出权重,整个过程逻辑闭环,而且结果能复现、能解释。

1.2 AHP解决的是哪类问题

AHP处理的是“多准则决策(MCDM)”问题。凡是“多个方案、多个评价维度、没有统一计量单位”的选优问题,都可以套进去。

典型包括:

  • 选址:多个候选地点,评价维度有租金、客流、租金成本、竞争密度。
  • 采购与供应商评比:价格、质量、交期、售后。
  • 工作机会选择:薪资、成长性、通勤、团队氛围。
  • 课题立项评审:创新性、可行性、预期成果。
  • 个人消费决策:买房、换车、旅游安排。

它不要求数据是精确的,反而擅长把定性的经验、偏好转化为定量数值。这也是它在管理、工程、教育评价里一直有生命力的原因。

1.3 AHP为什么能说服别人

很多方法算出了结果,但决策者不买账,因为“不知道你这个数字怎么来的”。AHP的好处是过程完全透明:每一个权重都是来自某个判断矩阵,每一个矩阵都能拿出来看是不是符合逻辑(一致性检验)。哪怕是拍脑袋,也是在结构化的规则下“拍”,事后能溯源,能修正,能形成讨论文档。

这套思路很像做菜:别人给你一道菜,你能说出配方,还能解释为什么这个配方比另一个配方靠谱。实践中,做方案评审、立项答辩,用AHP给结论撑腰,比干巴巴说“综合考虑,建议选B”要有力得多。

2. 建模第一步:把决策问题搭成三层树

2.1 目标层、准则层、方案层,缺一不可

AHP的标准结构是三层:

  • 目标层:要解决的总问题,一句话说清。
  • 准则层:评价好坏的维度,可以是多个,也可以再细分。
  • 方案层:待选的若干选项。

拿选工作举例:

  • 目标层:选择最满意的工作机会。
  • 准则层:薪资待遇、发展空间、工作强度、通勤地点。
  • 方案层:公司A、公司B、公司C。

我在实际项目里见过不少人上来就填矩阵,结果矩阵填完了,层次结构还是乱的。AHP最值得花时间的其实不是后面的计算,而是前面这棵树的搭建。树搭歪了,后面算得再精确,方向也是错的。

2.2 准则层不要贪多,控制在5到7个

认知心理学里有个“7正负2”的说法:人同时能稳定处理的组块数量有限。准则太多,两两比较的次数会爆炸。n个准则,要比较的次数是n(n-1)/2,5个是10次,7个是21次,9个是36次。填到后面,人会被自己的矛盾判断搞晕,一致性检验自然过不了。

我倾向于把准则控制在7个以内,如果遇到指标特别多的复杂问题,先把准则分类,比如“综合效益”下面再拆“经济效益”“社会效益”,形成多级层次结构,再逐级比较。

2.3 可选的细分层:当准则层太粗时

有些问题一个准则内部差异很大,比如“公司发展空间”里既包含行业前景、也包含个人晋升路径。这时候可以把“发展空间”拆成“行业增长”“岗位晋升”“培训体系”,作为准则层下面的子准则。

子准则的权重需要再建一个判断矩阵来计算。所以原则很简单:你能把准则解释清楚,就不拆;解释不清楚,或者一个准则内部明显混着多个概念,就拆。

2.4 搭建时最容易踩的三个坑

第一个坑叫“目标层和方案层混在一起”。比如目标写成“选择性价比高的手机”,方案却写“苹果、华为、小米”,问题不大;如果目标写成“买什么手机”,方案里还有个“不买,继续用旧手机”,这就乱了,因为“不买”没有评价维度。

第二个坑叫“准则层方向不统一”。有的指标越大越好,比如薪资、发展;有的越小越好,比如工作强度。方向不统一会在填矩阵时把自己绕晕,后面总排序时更是容易翻车。统一的做法是,把每个准则都描述成“越什么越好”的方向,比如“通勤方便程度”而不是“通勤时间”。

第三个坑叫“方案之间差异过大”。方案A和方案B如果是同类型的候选方案,比较起来才有意义。A和B根本不是解决同一目标的思路,硬拉一起比较,后面的判断矩阵你都不知道怎么填。

3. 判断矩阵怎么填:1-9标度与两两比较

3.1 标度表就是一张对照表

判断矩阵里每一项代表“行准则相对列准则的重要程度”,用1到9的标度来表示。标度含义如下:

标度含义
1两个因素同样重要
3一个比另一个稍微重要
5一个比另一个明显重要
7一个比另一个强烈重要
9一个比另一个极端重要
2、4、6、8介于上述相邻判断之间
倒数后者相对于前者的重要程度

举个例子,我认为“薪资”比“发展空间”明显重要,就在矩阵第一行第二列填5,那么对称位置(第二行第一列)自动填1/5。为什么是倒数?因为“发展空间”比“薪资”就应该是1/5重要,逻辑上是同一个判断的对称表达。

3.2 填矩阵的顺序感很重要

我的习惯是:先把矩阵里的“上三角”填完,然后直接写下面的倒数,不跳着填。跳着填容易漏,也容易把相等关系搞乱。

再看一遍矩阵的样子,四阶示例:

薪资 发展 强度 地点 薪资 1 3 5 7 发展 1/3 1 3 5 强度 1/5 1/3 1 2 地点 1/7 1/5 1/2 1

这个矩阵的意思是:薪资比发展稍微重要(3),比强度明显重要(5),比地点强烈重要(7);发展比强度稍微重要(3),比地点明显重要(5);强度比地点稍微重要(2)。

3.3 为什么矩阵经常填出前后矛盾

很多人第一次填判断矩阵都会遇到一个尴尬:填的时候觉得薪资远远大于地点,但发展又大于地点,算出来发现一致性很差。原因很简单,你给的是相对判断,但它们内部是联动的。A比B重要3倍,B比C重要5倍,那么A相对C就该是15倍左右。可标度表上限只有9,填不下,只能填7或9,这就带来了误差。

AHP并不要求绝对一致,只要求“大致一致”。一致性检验就是干这个的:看看偏差是不是在可容忍范围里。

3.4 准则方向反转,矩阵就翻车

“工作强度”这类准则,如果直接用原始数值填,容易填出反逻辑。规则是:比较矩阵永远按“谁更符合目标”来填,而不是按“谁数值更大”。

比如我们评价强度,目标是“强度低更好”,那么“公司A的工作强度比公司B更符合目标”时,就在对应位置填大于1。实际操作中,我总在矩阵上方先写一行备注:该准则按“工作强度越低越优”进行判断。避免填的时候脑子一热,填成“强度越大的公司分数越高”。

4. 权重计算与一致性检验:手算一遍才踏实

4.1 和积法:把判断矩阵变成权重

计算权重有特征根法、方根法、和积法等多种,结果差异很小。这里我演示最直观的和积法,也适合用Excel实现。

第一步,把每一列加起来。

以刚才的四阶矩阵为例:

  • 列1之和:1 + 1/3 + 1/5 + 1/7 ≈ 1.6762
  • 列2之和:3 + 1 + 1/3 + 1/5 ≈ 4.5333
  • 列3之和:5 + 3 + 1 + 1/2 ≈ 9.5
  • 列4之和:7 + 5 + 2 + 1 = 15

第二步,用每个元素除以它所在列的和,得到“归一化矩阵”,然后把每一行加起来再除以阶数n。

行1:1/1.6762 + 3/4.5334 + 5/9.5 + 7/15 ≈ 0.5966 + 0.6618 + 0.5263 + 0.4667;除以4,得到0.5629。

同样的方法,行2、行3、行4算出0.2672、0.1078、0.0622。这四个数就是薪资、发展、强度、地点的权重,合计约1。

到这里就可以初步得出结论:在这个人眼里,薪资权重约56%,发展约27%,强度和地点相对次要。这个权重分布其实很符合大多数求职者的直觉。

4.2 一致性检验:别让判断逻辑打架

权重算出来了,但矩阵是否合理,还要检验。

首先计算最大特征根λmax。做法是:用判断矩阵乘以权重向量,得到Aw,再看每个元素和权重的比值,求平均。

本例中,约算下来λmax ≈ 4.069。

然后计算一致性指标CI:

CI = (λmax - n) / (n - 1) = (4.069 - 4) / 3 = 0.023

再引入随机一致性指标RI。RI是大量随机矩阵的平均CI,与阶数有关,常用表如下:

n123456789
RI000.580.901.121.241.321.411.45

最后得到一致性比例CR:

CR = CI / RI = 0.023 / 0.90 ≈ 0.026

判断标准:CR小于0.1,认为判断矩阵的一致性可接受;大于0.1,说明填矩阵的时候逻辑有明显矛盾,需要回查和调整。

n为1或2时,矩阵本身一定完全一致,不需要检验。

4.3 一致性不合格怎么调整

很多新手用软件算完发现CR超标,就机械地改几个数碰运气。我的调整办法是分三步走。

第一步,找到最离谱的判断。一般看“a> b > c”却出现“a相对c小于1”这种明显矛盾,先把这类改掉。

第二步,不要大幅度来回改同一个格子。你改一个位置,影响的是整个特征值。每次都小步调整,重新计算。

第三步,如果调了两轮还在0.15以上,建议放弃细节调整,重新审视判断矩阵是否合理。这种情况经常不是因为手误,而是你对准则之间的重要程度根本没想清楚。回到层次结构,重新考虑是否有些准则可以合并,或者你对某个方案的差异认知过于牵强。

4.4 遇事不决,写个小函数

手算只能搞定小矩阵,准则多、还要多个矩阵时,我习惯用Python跑。这里给一个可以直接用的版本:

import numpy as np def ahp(matrix): matrix = np.array(matrix, dtype=float) n = matrix.shape[0] # 归一化列 col_sum = matrix.sum(axis=0) norm = matrix / col_sum # 权重 = 行平均 weight = norm.mean(axis=1) # 最大特征值 aw = matrix.dot(weight) lambda_max = (aw / weight).mean() # 一致性 ci = (lambda_max - n) / (n - 1) ri_table = {1:0, 2:0, 3:0.58, 4:0.90, 5:1.12, 6:1.24, 7:1.32, 8:1.41, 9:1.45} ri = ri_table.get(n, 1.49) cr = ci / ri if ri else 0 print("权重:", weight) print("λmax:", lambda_max) print("CR:", cr) criteria = [ [1, 3, 5, 7], [1/3, 1, 3, 5], [1/5, 1/3, 1, 2], [1/7, 1/5, 1/2, 1] ] ahp(criteria)

输出结果基本和手算一致:权重约[0.563, 0.267, 0.108, 0.062],CR小于0.1。实际项目里,我还会顺手加一个输出“每个矩阵的Aw”的功能,方便回查。

5. 方案层打分与层次总排序:走完最后一公里

5.1 方案层也要建判断矩阵

准则层权重算完之后,每个准则下面都要对方案做两两比较。假设方案是公司A、公司B、公司C,在“薪资”准则下,公司A比公司B薪水高不少,B比C高一些,那么矩阵可以是这样:

A B C A 1 2 4 B 1/2 1 3 C 1/4 1/3 1

算出来的方案权重约是:A=0.557,B=0.320,C=0.123。

“发展空间”下面可能是B公司最强,A和C差不多:

A B C A 1 1/3 1 B 3 1 3 C 1 1/3 1

权重是A=0.200,B=0.600,C=0.200。

“工作强度”下面,谁强度更低谁占优。如果C强度最低,B次之,A较高,权重可能是A=0.164,B=0.297,C=0.539。

“通勤地点”下面,如果A和B都方便,C较远,权重可以是A=0.400,B=0.400,C=0.200。

注意,每个方案层的矩阵都要单独做一致性检验,不是只检查准则层就够了。只是方案层矩阵阶数通常较小,CR一般比较好看。

5.2 层次总排序:把准则权重和方案权重合成

每个方案的总得分 = Σ(准则权重 × 该方案在该准则下的得分)。

汇总一下:

准则准则权重公司A公司B公司C
薪资0.5630.5570.3200.123
发展0.2670.2000.6000.200
强度0.1080.1640.2970.539
地点0.0620.4000.4000.200

公司A总得分 = 0.563×0.557 + 0.267×0.200 + 0.108×0.164 + 0.062×0.400 ≈ 0.410。

公司B总得分 = 0.563×0.320 + 0.267×0.600 + 0.108×0.297 + 0.062×0.400 ≈ 0.397。

公司C总得分 = 0.563×0.123 + 0.267×0.200 + 0.108×0.539 + 0.062×0.200 ≈ 0.193。

排序结果:公司A > 公司B > 公司C。

看到结果的那一瞬间,别急着下结论。总排序权重最好再做一次总一致性检验,公式是:CR总 = Σ准则权重×对应方案矩阵的CI / Σ准则权重×对应方案矩阵的RI。本项目方案矩阵一致性都很好,总CR远小于0.1,结果可信。

5.3 分数不是真理,是帮你结构化讨论的参考

总排序完成后,我始终提醒自己一件事,也是讲课时常说的:AHP的输出不是“唯一正确答案”,而是“在当前判断下的自洽答案”。

它最大的价值其实是把决策过程显性化了。如果某个评审委员说“我不同意最终结果”,你可以把他有异议的准则翻出来:是权重定高了,还是某个比较矩阵填得不符合他的想法?这样讨论就从“我觉得就是B好”变成了“你觉得发展空间比薪资重要多少倍合适”,讨论的质量完全不同,方向也更清晰。

6. 常见问题排查与个人实战心得

6.1 常见问题速查表

现象可能原因解决办法
CR一直大于0.1判断矩阵内部矛盾大,或是准则方向混乱先检查是否有的准则按“越好”填、有的按“越差”填;再逐对调整明显矛盾处
权重和不是1手算四舍五入误差用高精度小数计算,最后阶段再四舍五入
方案层缺失只算了准则权重,忘了方案层矩阵检查每个准则下面是否都有一组方案比较矩阵
总排序结果与直觉差很多准则权重不一定符合潜台词回到判断矩阵,逐项重新审视,往往是自己最初没想清
两两比较次数太多填不下去准则超量合并相关准则,或拆成多级层次
所有方案得分很接近方案本身类似,或被填成了“都差不多”增加区分度更大的准则,或重新审视评价维度

6.2 建议在矩阵旁边留一张“填写备注”

我在做实际评审项目时,习惯在每个判断矩阵旁边附两句备注,比如“薪资指的是入职后三年内总包期望”“强度包括加班频率和通勤压力”。因为同一个维度,不同人理解可能差很远。

比如“发展空间”,有人理解成职位晋升,有人理解成能力成长。如果填矩阵的人和写备注的人理解不一致,后面再漂亮的计算也毫无意义。备注要写具体,写到别人看了也不会误解的程度。

6.3 和别的方法搭配使用效果更好

AHP不适合作“鸡肋填空题”。我真见过有人把100个指标塞进去,算出来的结果说服力很差。更务实的用法有几种。

第一种,AHP给权重,下面再配TOPSIS或加权得分,AHP负责把主观偏好量化,量化数据负责把差距拉大。

第二种,AHP用于计算主观权重,和客观权重(比如熵权法)做组合,这样可以避免完全依赖主观判断的批评,也能中和纯客观方法“数值高但不合常理”的缺点。

第三种,多个人参与时,用群组AHP的思路,每人填矩阵后取几何平均,而不是开会口头讨论出一个矩阵。几何平均能减少某个强势声音的主导。

6.4 我的一点体会

分享一个我踩过反复的坑:给一个方案排序类项目做咨询时,我第一轮只算了准则层权重就停了,直接拿各方案在数据表上的原始成绩评分加权。结果客户问“这个分数和你们的判断矩阵有什么关系,为什么方案C明明各项数据都看着不错,得分却垫底”。我回头检查才发现,问题出在方案层矩阵没有按数据逻辑填写,而是凭印象填,算出来的权重当然和实际数据矛盾。

一句话,AHP的精髓不是公式,而是“把决策逻辑说清楚”。真正花时间去推敲层次结构、判断方向、比较口径的人,最后计算都是几分钟的事;反而是那些一上来就急着套公式的人,最容易在结果解释上栽跟头。

第一讲先把这条主线跑通:建模、判断矩阵、权重计算、一致性检验、总排序。后面如果想继续深入,可以聊不一致矩阵的修复算法、指数标度、群组AHP,或者是和TOPSIS、熵权法的组合应用。方法论这块,学一套、练一套、用一套,比囤十套不落地要实在得多。