聊一个特别常见的场景手里有三份工作机会薪资、发展、强度、地点各有千秋怎么选都像是要凭感觉拍脑袋。这种问题用“打分加权”总觉得主观用“数据建模”又没标签。这时候可以试试层次分析法——把复杂的多准则决策拆成目标、准则、方案三个层次再用两两比较把模糊的判断变成一组可计算的权重最后排出个明明白白的优先序。这篇是第一讲不讲冰山的细节只把主干和最常用的操作讲透怎么建层次结构怎么填判断矩阵怎么算权重、做一致性检验以及最终怎么把方案层汇总出总分。适合刚接触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)/25个是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。行11/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。然后计算一致性指标CICI (λmax - n) / (n - 1) (4.069 - 4) / 3 0.023再引入随机一致性指标RI。RI是大量随机矩阵的平均CI与阶数有关常用表如下n123456789RI000.580.901.121.241.321.411.45最后得到一致性比例CRCR 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, dtypefloat) n matrix.shape[0] # 归一化列 col_sum matrix.sum(axis0) norm matrix / col_sum # 权重 行平均 weight norm.mean(axis1) # 最大特征值 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算出来的方案权重约是A0.557B0.320C0.123。“发展空间”下面可能是B公司最强A和C差不多A B C A 1 1/3 1 B 3 1 3 C 1 1/3 1权重是A0.200B0.600C0.200。“工作强度”下面谁强度更低谁占优。如果C强度最低B次之A较高权重可能是A0.164B0.297C0.539。“通勤地点”下面如果A和B都方便C较远权重可以是A0.400B0.400C0.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、熵权法的组合应用。方法论这块学一套、练一套、用一套比囤十套不落地要实在得多。
阅读完成 · 觉得有帮助?