☰
层次分析法(AHP)入门:从两两比较到权重计算与一致性检验
2026/10/24 3:06:41 网站建设 项目流程

聊到层次分析法(AHP),不少人的第一反应是“又遇到数学了”。其实我第一次用它是在一次供应商评审会上:七个人七套标准,有人盯着价格,有人盯着交付,有人盯着故障率,吵了一下午也没结果。后来我们把问题拆成层级,让每个人只回答“价格比故障率重要多少”这种两两比较问题,不到一小时就排出了让大多数人信服的顺序。这个经历让我意识到,AHP不是玄学,而是一种把主观偏好变成可复查的决策流程。

作为系列教程的第一讲,我不打算讲那些花哨的变体,只把经典AHP从拆解问题、构造矩阵到手工算出结果、完成一致性检验的完整路径讲透。哪怕你完全没接触过,只要跟着例子动手算一遍,就能在真实项目里用起来。这一讲的知识点几乎适用于所有领域:选设备、选软件、排项目优先级、评方案,甚至给自己家装修挑装修公司,本质都是一回事。

1. 先弄清楚:AHP到底在解决什么“拍脑袋”问题

1.1 多准则决策为什么难

如果决策只有一个标准,这个世界会很简单。买规格相同的螺丝,谁便宜买谁;运输时间完全相同,哪家快递近选哪家。但现实里的大多数决策,目标天然拧巴:价格要低、质量要好、交付要快、售后要周全,这几个维度互相打架,量纲还不一样。你不能说“质量比价格高多少分”,因为质量和价格压根不是同一把尺子。

很多人会想,那我给每个维度打个分,然后加权求和不就行了?道理没错,但问题出在“权重”从哪来。拍脑袋定权重是最常见的做法,比如性能0.4、价格0.3、拍照0.2、续航0.1,看着合理,可一旦有人质疑“为什么价格只有0.3”,你很难交代。更隐蔽的问题是打分本身也会被个人偏好绑架,评审会上每个人给自己关心的维度打高分,最后自然吵成一团。

层次分析法的价值,正在于把这两件事都变得可追溯。它不做绝对打分,而是通过两两比较,让决策者只回答“A比B重要多少”这种简单问题;再通过矩阵运算把比较结果转化为权重。这样出来的权重大小,背后有一整套判断记录,别人追问起来,你可以一步步解释为什么这个权重是0.5而不是0.3。

1.2 AHP的适用边界与不适用场景

AHP不是万能工具,它适合的场景有三个特征:目标足够明确、候选方案数量有限、评价准则可以列举出来。比如从三台设备中挑一台、从五个供应商里选一家、给四个项目排优先级,这些场景天生适合。它也很适合那些“数据不完整但经验丰富”的决策,因为AHP允许你靠专家经验给出相对判断,不需要每个指标都建立精确数学模型。

但有些场景不建议硬上。第一,候选方案非常多,比如要从一百零八个方案里筛出最优,AHP会让两两比较次数爆炸,根本不现实。第二,准则之间高度关联,比如既评价“质量”又评价“耐用性”,这两个概念本身就高度重叠,填矩阵时会越填越纠结。第三,当决策问题模糊到连准则都列不出来,说明问题还没定义清楚,先用头脑风暴把维度理清再回来。第四,如果你只是想要一个绝对客观的预测结论,AHP也不太合适,它产出的是相对排序,不是“值多少钱”的精确估计。

我记得有次项目推进会上,团队想用AHP直接给二十几个功能需求做优先级排序,我建议他们先用KANO模型或简单投票初筛到七八个,再用AHP精排。初筛的目的是减少两两比较的负担,而不是否定AHP。知道什么时候不用,往往比知道怎么用更重要。

2. 把问题拆成一棵树:层次结构模型怎么搭

2.1 目标、准则、方案三层各自该放什么

AHP的第一步不是算数,而是画结构模型。标准结构是三层:最上面的目标层放你要解决的核心问题;中间是准则层,放评价这件事的各维度;最底层是方案层,放待选对象。

目标层必须只有一个,这是很多新手容易忽略的。如果你把“选一个既便宜又高端”当目标,那其实包含了两个目标,后续准则会乱套。目标应该写成“选择最合适的手机”“选择最合适的供应商”,而不是“选择价格适中且质量上乘的手机”。

准则层是中间桥梁,也是整个模型的灵魂。以选手机为例,如果核心诉求是性能、价格、拍照、续航,那准则层就是这四项。准则之间最好互相独立,别让“性价比”和“价格”同时出现,因为“性价比”已经包含了价格,两两比较时你会根本不知道该拿什么跟它比。对于更复杂的决策,准则层还可以往下拆子准则,比如“性能”拆成“处理器性能”“屏幕素质”“存储读写速度”,但第一讲我建议先把结构控制在两层准则以内,否则对新手来说计算量会迅速失控。

方案层是最终被比较的对象,放的是几张具体的“答卷”。比如手机是目前在纠结的三款:手机A、手机B、手机C。方案数量不建议太多,五六个已经是极限。原因很现实:在一次准则下,三个方案只需要比较3次,五个方案要比较10次,七个方案就是21次。方案太多,填矩阵的人很容易精神疲劳,数据质量断崖式下降。

2.2 搭建模型时最容易犯的两个错

第一个错是把评价维度堆得太多,觉得列得全才专业。有次一个项目部门做软件选型,一上来列了十五个准则,光两两比较就要跑100多次,填到后面所有人都开始瞎填。我的建议是准则数量控制在5个左右,最多不超过7个,这个数字既有区分度,又能让填表的人保持耐心。如果维度实在太多,先归类再合并,或者拆成两个层级,让专家先对一级准则做比较,再对每个一级准则下的子准则做比较。

第二个错是没有明确每个准则的“发展方向”。比如准则写成“价格”,那到底是越便宜越好,还是越贵说明价值越高?在AHP里,每个准则下填矩阵时,问的是“在该准则下,方案A比方案B更好多少”。所以“价格”准则通常要转化为“价格满意度”或者直接叫“经济性”,这样大家比较时心里是同一个方向。如果不做这步约定,有人觉得便宜好,有人觉得贵有面子,填出来的判断矩阵就会矛盾,后面一致性检验很难通过。

模型搭完之后,还有个自我检查的土办法:把目标、准则、方案念给完全不懂这个项目的同事听,如果他能在不追问的情况下复述出来,说明结构足够清晰;如果他问“准则A和准则B是不是一个意思”,你就知道需要合并了。

3. 两两判断是核心:1-9标度的来源与判断矩阵构造

3.1 为什么是1~9而不是0~10

AHP最经典的操作是用1到9的标度做两两比较,几乎所有人第一次看到这个都会问:为什么不是0到10,也不是1到100?

原因来自心理学对绝对判断能力的研究。普通人在区分刺激强度时,能稳定分出的级别大约在7加减2个左右,也就是5到9个档位。1到9正好落在这个区间。如果标度只有“重要、不重要”两档,区分度不够;如果搞1到100,看起来精细,实际没人能稳定区分“63比61重要多少”,反而制造伪精确。所以1、3、5、7、9分别代表同等重要、稍微重要、明显重要、强烈重要、极端重要,2、4、6、8是中间档位,方便表达“介于两者之间”。

两两比较时还有一条铁律:如果A比B的重要性是a,那么B比A的重要性就是1/a。这就是“倒数对称”。比如性能比价格重要2倍,那价格比性能的重要性就是1/2。这样构成的矩阵叫正互反矩阵,它有个好处:对角线位置的元素永远是1,因为你不能跟自己和自己的重要性不一样。这也意味着实际填表时只需要填上三角,下三角直接取倒数。

这套标度还有一个好处:它逼着人做相对比较,而不是绝对打分。你不需要说“性能是85分”,你只需要说“性能比价格重要2倍”。相对比较是人类思维更容易稳定输出的一种方式,你回想一下,选房子的时候,你很难说“地段值多少分”,但很容易在“地段和面积哪个更重要”这个问题上给出直觉判断。

3.2 用手机选型案例构造4×4准则矩阵

回到手机选型的案例。目标层是“选择最适合我的手机”,准则层是性能、价格、拍照、续航,方案层是手机A、手机B、手机C。

我现在要给出自己真实的偏好。在我的使用习惯里,性能最重要,价格第二,拍照第三,续航第四,但它们的差距不是均匀的。通过两两比较,我填出如下判断矩阵:

性能价格拍照续航
性能1245
价格1/2123
拍照1/41/212
续航1/51/31/21

解释一下:性能比价格填2,表示我认为性能比价格稍微重要一点,但还没到“明显重要”的3。性能比拍照填4,表示性能和拍照之间差距比较大,介于明显和强烈之间。性能比续航填5,表示性能比续航明显重要。价格比续航填3,表示价格比续航明显重要。这些都是我主观意愿的数值化,别人完全可以填不同的数,最后结果也会不同,这正是AHP的特点——它把个人偏好变成了一条可被审查的逻辑链。

填完上三角之后,下三角自动就是对应倒数,用比例来说,看起来会自动满足对称关系。记住一个检查技巧:填完每行后,回头看一眼下三角,如果发现某两个位置同时大于1,比如性能对价格填2,价格对性能也填2,那一定是填错了。反过来,如果上三角某处填了1,表示两个准则同等重要,那下三角对应位置也只能是1。

4. 手工算权重:归一化、平均、一致性检验全流程

4.1 和积法计算准则权重

矩阵构造好了,下一步是从里面提取权重。最严谨的做法是求矩阵的最大特征值对应的特征向量,但在手算场景里,更常用的近似方法是“和积法”,也叫列归一化求平均。

它的逻辑很直观:如果判断矩阵完全一致,那么每一列经过归一化之后,表达的都是同一组权重,比如一个3×3矩阵如果完美一致,每列的元素比例是相同的,归一化后三个列向量完全一样。即使存在一点小矛盾,各列归一化后的向量也不会差太多,取平均值就能逼近真实权重。

具体分三步。第一步,把每一列的元素求和。我们上面这个矩阵的四列和分别是:

  • 性能列:1 + 1/2 + 1/4 + 1/5 = 1.95
  • 价格列:2 + 1 + 1/2 + 1/3 = 3.833
  • 拍照列:4 + 2 + 1 + 1/2 = 7.5
  • 续航列:5 + 3 + 2 + 1 = 11

第二步,用每个元素除以它所在列的和,得到归一化后的矩阵。以性能列为例,四个元素分别变为:

  • 0.513、0.256、0.128、0.103

价格列归一化后约为:

  • 0.522、0.261、0.130、0.087

拍照列归一化后约为:

  • 0.533、0.267、0.133、0.067

续航列归一化后约为:

  • 0.455、0.273、0.182、0.091

第三步,对每一行求平均。以“性能”这一行为例,第一行对应的归一化值是0.513、0.522、0.533、0.455,平均下来是0.506。用同样方式处理后,“价格”这一行平均是0.264,“拍照”这一行平均是0.143,“续航”这一行平均是0.087。于是准则层的权重向量就是:

  • 性能:0.506
  • 价格:0.264
  • 拍照:0.143
  • 续航:0.087

这四个数加起来等于1,代表100%的决策权重被分配到四个准则上。如果你手工算的时候因为四舍五入导致权重和不等于1,稍微调一下最后一位就行,这是正常现象。

4.2 一致性检验的完整计算

权重算出来了,但问题还没结束。我填矩阵时是人脑填的,很可能存在自相矛盾的地方,比如我觉得性能比价格重要2倍,价格比续航重要3倍,那性能比续航理论上应该重要6倍,结果我填了5,这算轻微矛盾;如果填了2,那就是严重矛盾。一致性检验就是为了量化这种矛盾程度。

计算路径是这样的。先拿原始判断矩阵乘以权重向量,得到一个新向量。根据前面得到的权重向量w=[0.506,0.264,0.143,0.087],我逐行计算:

  • 第一行:1×0.506 + 2×0.264 + 4×0.143 + 5×0.087 ≈ 2.0416
  • 第二行:0.5×0.506 + 1×0.264 + 2×0.143 + 3×0.087 ≈ 1.0642
  • 第三行:0.25×0.506 + 0.5×0.264 + 1×0.143 + 2×0.087 ≈ 0.5755
  • 第四行:0.2×0.506 + 0.333×0.264 + 0.5×0.143 + 1×0.087 ≈ 0.3477

然后用每行的结果除以对应的权重值,得到四个“比例”:

  • 第一行:2.0416 ÷ 0.506 ≈ 4.039
  • 第二行:1.0642 ÷ 0.264 ≈ 4.028
  • 第三行:0.5755 ÷ 0.143 ≈ 4.013
  • 第四行:0.3477 ÷ 0.087 ≈ 4.006

这四个数求平均,得到矩阵的最大特征值λmax ≈ 4.0215。对于完全一致的矩阵,λmax应该等于矩阵阶数n,也就是4。现在λmax比4大了0.0215,这个差就是不一致程度的原始信号。

计算一致性指标CI = (λmax - n) / (n - 1),带入刚才的数,CI = (4.0215 - 4) / 3 ≈ 0.0072。CI越接近0说明越一致。但因为随机因素也会造成误差,所以要除以一个随机一致性指标RI。RI的值取决于矩阵阶数,常用参考值如下:

矩阵阶数 nRI
10
20
30.58
40.90
51.12
61.24
71.32
81.41
91.45
101.49

对于4阶矩阵,RI取0.90,于是CR = CI / RI = 0.0072 / 0.90 ≈ 0.008。AHP的经验准则是CR小于0.1时一致性可以接受。现在0.008远远小于0.1,说明我填的判断矩阵逻辑上相当自洽,权重结果可以放心使用。

如果你自己算出来CR大于0.1,不要急着改数字,先回头看看哪个比较让你觉得别扭。一个实用技巧是看矩阵里是否存在明显的“传递性违约”:比如A比B重要3倍,B比C重要3倍,但A比C只填了2倍,这几乎一定会让CR超标。找出这种节点,重新组织语言讨论一下,再修正一个位置,往往比整体重填高效得多。

4.3 方案层权重怎么算(以拍照为例)

准则层权重搞定后,方案层要用同样的流程再来一遍。我们需要针对每一个准则,把三个手机两两比较,比较的维度就是“在这个准则下,谁更好”,而且方向必须一致。

以“拍照”为例。我同样用1-9标度填了一个3×3判断矩阵:

手机A手机B手机C
手机A11/21/4
手机B211/2
手机C421

解释一下:在拍照这个准则上,手机C比手机B好2倍,比手机A好4倍,手机B比手机A好2倍。这个矩阵更简单,三个数之间保持了严格的传递性,所以它是一致矩阵。对每列归一化后,每一列得到的权重比例都是1:2:4,再归一化就得到手机A、手机B、手机C在“拍照”准则下的局部权重分别为约0.143、0.286、0.571。

同理,我把性能、价格、续航三个准则下也都填了判断矩阵。为了不把这篇文章变成表格轰炸,我直接给出最终方案层权重,你只需要知道这些权重是用相同方法算出来的:

准则准则权重手机A手机B手机C
性能0.5060.5710.2860.143
价格0.2640.1430.2860.571
拍照0.1430.1430.2860.571
续航0.0870.5000.2500.250

性能准则下,手机A最强,因为它的处理器和屏幕配置最合我心意;价格准则下,手机C最便宜,所以它在“价格满意度”上得分更高;拍照准则下同样手机C最好;续航准则下手机A最抗用。每一列权重之和都等于1,这可以用作验算。

5. 合成最终结果:加权求和得到决策排序

5.1 从局部权重到总得分

到这一步,我们既有了“四个准则各自对总目标的重要程度”,也有了“每款手机在每个准则下的表现分数”,合成起来就很简单:把每个准则下的方案权重分别乘以该准则权重,再纵向求和。

具体算一遍:

手机A的总得分 = 0.506×0.571 + 0.264×0.143 + 0.143×0.143 + 0.087×0.5 = 0.406

手机B的总得分 = 0.506×0.286 + 0.264×0.286 + 0.143×0.286 + 0.087×0.25 = 0.278

手机C的总得分 = 0.506×0.143 + 0.264×0.571 + 0.143×0.571 + 0.087×0.25 = 0.316

最终排序就出来了:手机A第一,手机C第二,手机B第三。

打一眼这个结果,有人可能会困惑:手机C在价格和拍照两个准则下都是最高分,为什么总排名反而不如手机A?答案在于准则权重。我填的准则矩阵表明,性能在我心中的权重高达0.506,而价格和拍照加起来才0.407,续航只有0.087。手机A虽然在价格和拍照上不占优,但在权重最大的性能和续航两个准则上遥遥领先,所以综合下来笑到了最后。这就是加权合成的意义:局部表现再好,如果它发生在权重低的维度上,对总分的贡献还是有限。

5.2 这个案例的结论为什么合理

这个结果完美呼应了一个决策常识:当一个人最在意性能时,综合表现最均衡但单项不突出的B,往往会输给“优点很突出、缺点能接受”的候选对象。手机C的短板是性能太弱,在这个案例里性能权重又最高,所以即便价格和拍照的优势明显,也很难翻盘。如果你换一个喜欢拍照的人来填,准则矩阵就会完全不同,比如拍照对性能填3,对价格填2,对续航填5,最终很可能变成手机C胜出。

所以AHP从不是“算出一个客观正确答案”,而是“把你脑子里的偏好翻译成数字,再用这个数字去评价方案”。这个翻译过程最大的好处是可以反复查验:如果你觉得排名不合理,最先应该怀疑的不是算法,而是准则权重和各个判断矩阵是否符合你真实想法。我自己的习惯是先用这个流程算一遍,然后问一句“这个结果符合我的直觉吗”,如果不符合,就回去翻矩阵,通常能发现某个比较填得不够诚实。

实际交付时,别忘了做一次最简单的验算:三个方案的总得分加起来应该约等于1。在这个例子里是0.406 + 0.278 + 0.316 = 1.000,正好。因为方案层权重每列归一、准则权重总和为1,加权求和后总量必然为1,如果你算出明显不等于1,几乎可以肯定是某一步归一化出了问题。

6. 初用AHP最常见的坑与我的处理习惯

6.1 坑一:准则层互相打架

很多人第一次画层次结构图时,恨不得把所有能想到的因素全塞进准则层,结果导致两个准则高度重叠。举个例子,评价手机时既列“价格”又列“性价比”,后续两两比较时就会卡住:性价比已经包含了价格,你让填表的人怎么回答“价格比性价比重要多少”?这种矩阵填出来,一致性检验大概率过不了,即使过了,权重含义也不可解释。

我的处理办法是列完准则后先做一遍“互斥审查”:把每个准则的词条解释写出来,如果两个词条的解释里出现了同一个关键词,就考虑合并。比如“可靠性”和“故障率”,本质是一件事的两面;“品牌服务”和“售后网点覆盖”,也是高度相关的。保留一个表述更清楚的就行了。准则之间宁可少一点,也不要含含糊糊地重叠。

6.2 坑二:为了通过一致性检验而“泡”矩阵

这是我很想强调的一个坑。很多人算完CR发现大于0.1,第一反应不是去重新思考两两比较,而是直接改矩阵里几个数字,改到CR小于0.1为止。这在形式上是通过了,实际上毫无意义。一致性检验的目的是发现逻辑矛盾,不是生产一个合格证书。如果矩阵本来就能反映你的偏好,只是数字表达不够精确,调整是合理的;但如果你的真实偏好本身就很矛盾,比如既觉得性能远重要于价格,又觉得价格远重要于性能,那应该回到决策问题本身去理清偏好,而不是为了指标好看而编造数据。

判断一个调整是否合理的标准很简单:调完后,你能不能向团队解释清楚“我为什么从2改成3”?如果解释不了,那这一改动就是在自欺欺人。我自己给甲方的习惯是,先展示原始矩阵和原始CR,再说明哪些判断需要讨论,讨论清楚后修改,并保留修改记录。这样AHP才真正起到了“帮助决策”的作用,而不是一个黑箱计算器。

6.3 坑三:方案数量失控

方案太多是AHP在实战中被吐槽最多的点。5个方案、6个准则,每个准则下要比较10次,总共60次,很多人还能忍。但到了10个方案、8个准则,每个准则下要比较45次,总共360次,神仙也填不下去。更要命的是,人填到最后会疲劳,后续矩阵的质量会急剧下滑。

应对方案有两种。第一种是初筛:先用一票否决或者简单的打分表,把明显不行的方案砍掉,只留下5到7个进入AHP精排。第二种是把方案按类别分组,比如先比较“国产组”“海外组”,再在组内比较,但这会增加结构复杂度,新手不推荐。我见过一个比较成功的项目,先让评审委员用“不记名投票+一票否决”把二十几个方案砍到六个,再用AHP精排,最后结果大家都能接受。

6.4 我习惯的落地步骤

最后分享一下我现在做AHP决策时的标准动作,你可以直接照抄:

  1. 先写一句话定义目标,要求只能有一个目标动词,比如“选择”“排序”“评估”。
  2. 用头脑风暴列出所有关心的因素,然后合并、删重,保留3到7个互不包含的准则。
  3. 确定候选方案数量,如果超过7个,先做一轮初筛。
  4. 做两轮填表:先填准则层两两比较矩阵,再在每个准则下填方案层比较矩阵。
  5. 每填完一个矩阵,立刻检查对称倒数和传递性,有明显冲突当场讨论修正。
  6. 手工用和积法算权重,再用CR完成一致性检验。
  7. 合成总得分,看结果是否符合常理,不符合就回到矩阵里找原因。

这套流程看起来有点繁琐,但真正走一遍你会发现,大部分时间都花在“想清楚自己到底要什么”上,而不是花在数学计算上。这恰恰是AHP给我最大的收获:它逼着我在拍板之前,先把头脑里的混沌偏好捋成一条条清晰可查的比较关系。哪怕最后只得到“手机A”三个字,你也知道这个结论是怎么来的,别人也知道该怎么反驳你,这才是决策工具该有的样子。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询