ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

层次分析法全流程:判断矩阵、权重计算、一致性检验与MATLAB实战

层次分析法全流程:判断矩阵、权重计算、一致性检验与MATLAB实战 层次分析法这个词很多人在论文里写过、在报告里用过可真要聊到判断矩阵怎么构造、一致性比率为什么是0.1、方根法和特征值法差在哪能完整讲清楚的人并不多。我自己第一次接触层次分析法是在做一个供应商评价课题的时候当时照着别人的模板把矩阵填了、把权重算出来了、CR算出来小于0.1就交差了后来被问了一句你这个0.1是哪来的当场卡壳。从那以后我把这套方法的来龙去脉重新啃了一遍也用MATLAB把每一步都自己写过一遍。这篇就按一个真正用过它的人的角度把层次分析法从建模思路到代码落地完整捋一遍适合正在写论文、做评价体系、做方案选型的朋友也适合那些会用但说不清的人回头补课。1. 为什么有人用了三年层次分析法还是没入门1.1 一句话说清楚层次分析法到底在解决什么问题层次分析法的本质是把一个说不清道不明的综合判断拆成一层层可以说清楚的两两比较。你让一个人直接给选哪个供应商打分他很难给出稳定的数字但你让他回答价格和质量哪个更重要、重要多少他脑子里是有感觉的。层次分析法就是把这个感觉结构化、数值化最后汇总成一个可以排序的权重向量。它处理的是多准则决策问题有若干个备选方案有若干个评价准则准则之间量纲不同、重要程度不同怎么综合出一个排名。比如选供应商要看价格、质量、交期、售后选城市要看房价、通勤、教育、医疗选技术方案要看性能、成本、维护难度、团队熟悉度。这些问题的共同点是没有一个统一的尺子各因素之间也没法直接相加。这里必须先纠正一个特别常见的误解**层次分析法不是用来算出一个客观真理的它是把决策者的主观判断显性化、结构化。**权重反映的是你认为什么重要而不是客观上什么重要。想清楚这一点后面很多困惑——比如为什么我算出来的权重和别人不一样——就自然消解了。不同的专家、不同的判断矩阵算出来的权重本来就该不一样这不是方法出错这是方法在如实反映输入。1.2 什么时候该用层次分析法什么时候别碰它我见过太多硬套的场景明明有客观数据可用非要拉几个专家拍脑袋填矩阵最后算出来的东西还不如直接加权求和靠谱。所以先划清楚适用范围。适合用的场景有这几类一是准则本身难以量化比如企业文化契合度战略协同性这种你没法用数字直接测二是样本量小、无法做统计回归比如只有三五个备选方案统计方法根本跑不动三是需要把专家经验固化下来形成一套可复用、可解释的评价体系四是需要向别人解释决策过程层次分析法的中间结果是可视化的权重、一致性比率都摆在那里比黑箱模型好解释得多。不适合用的场景同样明确有大量客观数据且数据质量不错的时候直接上熵权法、CRITIC法、主成分分析这些客观赋权方法更合适需要做预测而不是评价的时候层次分析法帮不上忙备选方案特别多的时候比如上百个两两比较的判断矩阵会膨胀到无法维护此时更适合先做筛选再评价。我个人的经验是**层次分析法最适合做准则层的赋权而不是做方案层的打分。**准则权重用专家经验定方案得分尽量用客观数据算两者结合是实际项目里最稳的玩法。纯主观的方案层打分一旦专家之间分歧大结果会非常飘。1.3 三张表看懂层次分析法的完整流程很多人学层次分析法是零散地记公式记完就忘。我建议按结构—矩阵—检验三段式来记每一段对应一个明确的产出物。阶段核心动作产出物常见卡点结构建模拆目标、定准则、列方案层次结构图准则之间不独立、层级过深判断矩阵两两比较、按1-9标度赋值n阶正互反矩阵标度含义理解偏差、逻辑矛盾权重计算特征值法/方根法/和积法权重向量w方法选错、不归一化一致性检验算CI、查RI、求CRCR值不通过就硬改、乱改综合排序逐层合成权重方案总得分忘记逐层归一化这五步里真正决定结果质量的是前两步后面三步都是标准动作。判断矩阵填错了后面算得再精确也没意义。我见过有人把一致性检验当成走过场CR大于0.1也照样往下算这种结果拿去做决策是很危险的。还有一点值得强调层次结构图不是画得越深越好。准则层分三层、每层再分三四个子准则看起来内容丰富实际上判断矩阵数量会指数级增长专家填到后面全是疲劳作答数据质量反而下降。准则层控制在3到7个是整个层次的黄金区间这个数字不是随便说的它和后面一致性指标RI的适用阶数直接相关。2. 结构建模把脑子里的判断变成可计算的骨架2.1 目标层、准则层、方案层到底怎么定标准的层次结构是三层最上面是目标层只有一个元素就是你要解决的决策问题比如选择最优供应商。中间是准则层放评价维度。最下面是方案层放备选对象。看起来简单坑在细节里。目标层的表述必须单一、可判定。如果你的目标是提升企业竞争力这不是一个可评价的目标因为它没有明确的比较对象。正确的写法是从三家候选供应商中选择一家作为未来两年的主供应商有明确的行动、明确的对象、明确的时间范围。准则层的每个准则都要满足独立可测。什么叫独立就是准则之间不能互相包含。比如你已经有了技术水平就不要再单列研发能力因为后者基本被前者覆盖了。准则重叠会让权重失真——重叠的部分被计算了两次实际重要性被放大。方案层的处理有个小技巧如果备选方案多于7个先做一轮粗筛。可以用简单的打分卡剔除明显不合格的剩下的再进层次分析法。我做过一个项目最初有12家供应商入池直接建矩阵的话准则层矩阵是12阶专家填一份要半小时还错误百出。后来先用资质、财务、产能三个硬指标筛掉7家剩5家再做效率和准确度都上来了。2.2 指标筛选的三种实用手法准则怎么选这是建模阶段最费脑子的地方。我常用的有三种手法按项目情况选用。第一种是文献频次法。去检索同主题的已有研究把出现频率高的指标统计出来取前若干个。这个方法的好处是有据可依写论文的时候好交代来源坏处是容易趋同大家都是那几个指标缺乏针对性。我一般用它来打底形成候选池。第二种是专家访谈法。找三到五位真正懂这个领域的人每个人独立列一份自己认为重要的准则然后取交集和并集。交集是共识指标并集里出现两次以上的作为补充指标。访谈的时候有个关键技巧不要问你觉得什么重要要问如果只能保留三个指标你会保留哪三个前者的答案往往是全面的废话后者的答案才有区分度。第三种是相关性过滤法。把候选准则两两做相关性分析相关系数超过0.8的保留其中一个。这一步需要数据支撑样本少的时候做不了但只要有数据就应该做能有效避免指标冗余。实际操作里我是这样组合的先用文献法凑出10到15个候选再用访谈法筛到6到8个最后。如果样本够就用相关性过滤压到5个以内。最终准则层定5个左右是比较舒服的规模判断矩阵15次比较专家二十分钟能认真填完。2.3 判断矩阵的1-9标度到底在表达什么这是层次分析法最核心也最容易被误解的部分。1-9标度不是让你给重要性打个分而是让你回答两个元素之间相对重要多少。标度含义通俗解释1同等重要两者差不多谁高谁低看不出3稍微重要略占优势但不明显5明显重要优势比较清楚7强烈重要优势非常明显9极端重要一个几乎可以单独决定结果2,4,6,8上述判断的中间值拿不准时用倒数反向比较a对b是3b对a就是1/3判断矩阵有三个必须满足的性质写代码的时候都要检查正互反性a_ij 0且 a_ij 1 / a_ji对角线全为1。这一条保证了矩阵的结构完整。传递性理想状态a_ij × a_jk a_ik。实际中几乎不可能完全满足所以才有一致性检验。有界性取值落在1/9到9之间。这个范围的设定是有讲究的心理学研究表明人同时辨别差异的极限大概是7±2个等级1-9刚好覆盖这个区间。提示填矩阵的时候千万不要逐格去填。正确做法是先填上三角下三角用倒数自动生成。这样既省时间又天然保证了互反性不会出现a_ij3但a_ji1/4这种低级错误。手写的时候我都先画一个上三角填完再对称取倒数。关于标度的选择还有一个经常被忽略的点**1-9标度适合差异较大的比较如果两个准则差异很小用1或者2就够了不要动不动就上7和9。**很多判断矩阵一致性差就是因为把所有比较都拉开成大分数人为制造了矛盾。我的经验是一个5阶矩阵里出现9的次数最好不要超过一次出现7的次数控制在两次以内整体标度分布偏小反而更稳定。3. 权重计算特征值法、方根法、和积法逐个拆解3.1 特征值法数学意义上的标准解法层次分析法的理论基础来自正互反矩阵的一个性质**完全一致的判断矩阵其最大特征值恰好等于矩阵阶数n对应的特征向量归一化后就是权重向量。**现实中矩阵不可能完全一致最大特征值会略大于n但对应的特征向量仍然可以作为权重的良好近似。这就是特征值法的由来。具体步骤是求矩阵A的全部特征值和特征向量找到模最大的那个特征值λ_max取它对应的特征向量做归一化处理得到的向量就是权重。这里有个细节需要注意λ_max对应的特征向量各分量未必同号实际计算中可能出现负数分量。出现负值说明数值求解有误差处理办法是取绝对值再归一化。MATLAB里用eig()函数求出来的是复特征值需要取实部再处理。这些细节在教科书里往往一句带过但真正写代码的时候不注意就会算出莫名其妙的权重。特征值法的优点是数学上最严谨是层次分析法原始文献采用的方法论文里写出来最有说服力。缺点也很实在计算量大手算基本不可能必须依靠工具而且当矩阵接近奇异、或者存在多个接近最大特征值的特征值时结果的稳定性会下降。我在做正式报告的时候用特征值法做快速试算或者教学演示的时候用近似法。3.2 方根法与和积法手算和代码里的实用派方根法也叫几何平均法的思路非常朴素把判断矩阵每一行的元素连乘开n次方然后归一化。公式写出来是这样第一步逐行连乘M_i ∏(j1到n) a_ij第二步开n次方W_i M_i^(1/n)第三步归一化W_i W_i / Σ W_i和积法也叫算术平均法则是另一条路先按列归一化再按行求和最后再归一化一次。第一步列归一化b_ij a_ij / Σ(i1到n) a_ij第二步行求和S_i Σ(j1到n) b_ij第三步归一化W_i S_i / Σ S_i两种方法的手算量都不大5阶矩阵十几分钟能算完。更关键的是这两种方法算出来的权重和特征值法的结果非常接近文献里做过大量对比误差通常在千分之几的量级。所以在精度要求不是极端苛刻的场景下用方根法完全够用。我个人的建议是**论文里主方法写特征值法同时用方根法做验证两者结果对得上说明计算无误对不上就说明哪里算错了。**这是一个非常实用的自查手段比反复检查公式有效得多。3.3 三种方法的误差对比与选择建议为了让大家直观感受到差异我拿一个实际用过的5×5判断矩阵做了对比测试结果如下。方法计算复杂度与特征值法最大偏差适用场景特征值法高基准论文、正式报告、精度要求高方根法低约0.3%~0.8%手算、快速试算、代码实现和积法最低约0.5%~1.2%教学演示、粗略估计这个表格里的偏差数字在100次随机测试中的统计结果不是单次值。可以看到方根法的表现确实优于和积法这也是为什么我在代码里默认用方根法做快速计算。还有一点值得提**当判断矩阵的一致性很好CR小于0.05时三种方法的结果几乎完全一致一致性越差方法之间的差异越大。**这其实给了我们一个额外的信号——如果你用两种方法算出来的权重差异很明显那多半不是方法的问题而是你的判断矩阵本身矛盾太多应该回头去改矩阵而不是纠结用哪种算法。注意不管用哪种方法最后一步归一化都不能省。我见过有人算出权重向量(2.15, 1.14, 0.41)就往下用了忘记除以总和结果方案综合得分加起来不等于1排序虽然没错但数值完全没法解释也没法和别人的结果对比。4. 一致性检验最容易被糊弄过去的一步4.1 CI、RI、CR三个指标的来龙去脉一致性检验要回答的问题是你在判断矩阵里填的那些数字逻辑上自洽吗举个例子如果你认为A比B重要3倍B比C重要2倍那么按照传递性A应该比C重要6倍。如果你在矩阵里填的A比C是2倍那就出现了逻辑矛盾。这种矛盾在人的主观判断里很常见程度轻一点不影响结果程度重了就会让权重失去意义。衡量这个矛盾程度的指标叫一致性指标CI公式是CI (λ_max - n) / (n - 1)λ_max是最大特征值n是矩阵阶数。完全一致时λ_max nCI 0。偏差越大CI越大。但CI的大小和矩阵阶数有关同样是0.1的CI3阶矩阵里已经算偏差很大了10阶矩阵里可能还算可接受。为了消除阶数影响需要引入一个参照标准这就是随机一致性指标RI。RI的获取方式是这样的随机生成大量同阶的正互反矩阵元素从1/9到9随机取各自算出CI取平均值。这个过程重复足够多次得到的平均CI就是这个阶数的RI。所以RI本质上是一个随机填矩阵时的典型矛盾水平。最后一致性比率CR CI / RI。当CR小于0.1时认为一致性可以接受大于等于0.1时需要重新调整判断矩阵。4.2 随机一致性指标RI表与阶数对应关系这张表必须记住或者至少知道去哪里查。我用的是Saaty原始文献给出的标准值阶数n12345678RI000.580.901.121.241.321.41阶数n9101112131415—RI1.451.491.511.541.561.581.59—有两个地方需要特别注意。第一n1和n2时RI为0这意味着这两种情况下一阶矩阵和二阶正互反矩阵天然完全一致CI必然为0检验环节可以直接跳过不要在代码里除零。第二n超过15以后RI值趋于稳定在1.59附近但我不建议用超过10阶的矩阵因为专家在填写15阶矩阵时需要做105次两两比较数据质量根本没法保证。提示不同教材给出的RI值在小数点后第二位会有细微差异这是随机模拟次数不同导致的。写论文时注明你采用的来源即可不要因为差0.01就怀疑自己算错了。我一般在代码里把这张表硬编码进去避免每次都要翻书。4.3 CR不达标时应该怎么改改法有优先级这是实际操作中最折磨人的一步。CR算出来0.15怎么办很多人第一反应是随便找几个数字改一下这样改出来的矩阵虽然通过了检验但已经失去了原本的判断含义等于自己骗自己。我总结了一套有优先级的调整方法从最该改的到最不该改的依次是**第一优先级检查有没有明显的填写错误。**比如上三角填了3下三角填的是1/3以外的值或者对角线不等于1。这类错误修正后往往CR立刻就下来了。**第二优先级找出矛盾最集中的元素。**计算每一行的偏差贡献也就是把矩阵的每一列与权重向量做比值看哪一行的波动最大。波动最大的那一行对应的准则往往是专家判断最没把握的重新和他确认一遍。**第三优先级调整最大的标度。**把你填的9改成77改成5整体把所有标度往1的方向压缩。因为一致性差很多时候就是因为标度拉得太开压缩后矛盾自然减少。**第四优先级反向检查传递性链条。**找出所有的三元组(a, b, c)检查a_ab × a_bc与a_ac是否偏离太远优先修正偏离最大的那个元素。**最后才考虑整体重填。**如果以上都试过还是不行说明专家对这个问题的判断本身就不稳定这时候要做的不是硬凑矩阵而是把问题拆得更细或者增加专家数量做群决策。实测下来按这个优先级处理90%以上的不一致问题都能在前三步解决。真正需要重填的情况其实很少多数人一上来就重填纯粹是因为不知道怎么定位问题。5. MATLAB实操从输入矩阵到输出权重排名5.1 完整的主程序代码下面这套代码是我自己用了很多轮的版本包含了权重计算、一致性检验、结果输出三个部分可以直接跑。function [w, CR, lambda_max, CI] ahp_weights(A) % AHP_WEIGHTS 计算判断矩阵的权重向量与一致性比率 % 输入: A - n×n 正互反判断矩阵 % 输出: w - 归一化权重列向量 % CR - 一致性比率 % lambda_max - 最大特征值 % CI - 一致性指标 n size(A, 1); if size(A, 2) ~ n error(判断矩阵必须是方阵); end % ---------- 一致性检验 ---------- [V, D] eig(A); lambda_max max(real(diag(D))); CI (lambda_max - n) / (n - 1); RI_table [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, ... 1.41, 1.45, 1.49, 1.51, 1.54, 1.56, 1.58, 1.59]; if n 15 RI RI_table(n); else RI 1.59; end if RI 0 CR 0; else CR CI / RI; end % ---------- 权重计算特征向量法---------- [~, idx] max(real(diag(D))); w abs(real(V(:, idx))); w w / sum(w); end再给一个方根法的版本方便做交叉验证function [w, lambda_max, CI, CR] ahp_geomean(A) % 几何平均法方根法计算权重 n size(A, 1); M prod(A, 2); % 每行连乘 Wp M .^ (1/n); % 开n次方 w Wp / sum(Wp); % 归一化 % 用权重反推最大特征值 Aw A * w; lambda_max mean(Aw ./ w); CI (lambda_max - n) / (n - 1); RI_table [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, ... 1.41, 1.45, 1.49, 1.51, 1.54, 1.56, 1.58, 1.59]; RI RI_table(min(n, 15)); if RI 0 CR 0; else CR CI / RI; end end5.2 代码逐段拆解与参数说明先说特征值法那段。eig(A)返回的是特征向量矩阵V和特征值对角矩阵D。判断矩阵是实对称吗不一定正互反矩阵只在完全一致时才对称一般情况下不对称所以特征值可能是复数。用real(diag(D))取实部是必须的否则max会按复数模比较得到的结果可能不符合预期。lambda_max max(real(diag(D)))这里还有个隐含假设最大特征值是实数。对于正互反矩阵Perron-Frobenius定理保证了存在唯一的正实特征值且它是模最大的。所以这个取法是对的不用太担心。权重向量取abs(real(V(:, idx)))先取实部再取绝对值最后归一化。为什么取绝对值因为数值误差可能让本该是正数的分量变成-1e-15这种直接用它算会出问题。取绝对值后权重向量保持非负符合权重定义。方根法那段prod(A, 2)是沿第二维求积也就是每行元素的乘积。注意如果矩阵里有0就完蛋了不过判断矩阵元素都是正数不会有这个问题。mean(Aw ./ w)是标准的最大特征值近似公式理论依据是当w是精确特征向量时Aw λw所以Aw./w的每个分量都等于λ。这里有个数值细节如果某个w分量非常小Aw./w可能不稳定。实际使用中判断矩阵的权重不会出现极端小的值除非矩阵质量很差所以一般不用特殊处理。如果你想稳妥一点可以用加权平均代替算术平均但效果差别不大。注意MATLAB里**不是乘方运算符要用.^。我看到过初学者在这个地方卡了很久报错信息又不够直白。另外prod和^的维度要对应好M .^ (1/n)里的点号不能漏漏了就变成矩阵的n次方根结果完全不对。5.3 一个完整的选供应商案例跑通全过程理论说再多不如跑一个完整例子。假设你要从三家供应商中选一家准则层定了四个价格、质量、交付、服务。**第一步构造准则层判断矩阵。**经过和采购、质量、生产三个部门的人沟通得到如下矩阵行和列的顺序依次是价格、质量、交付、服务A [1, 1/2, 3, 2; 2, 1, 4, 3; 1/3, 1/4, 1, 1/2; 1/2, 1/3, 2, 1];含义是质量比价格重要2:1价格明显比交付重要3:1质量比服务重要3:1交付比服务稍差1:2。这些判断来自访谈中的共识不是我随手编的。第二步算权重和一致性。[w, CR, lambda_max, CI] ahp_weights(A); disp(w); disp(CR);方根法手算的结果是先把每行相乘价格行1×0.5×3×23开四次方得1.3161质量行2×1×4×324开四次方得2.2134交付行0.3333×0.25×1×0.50.04167开四次方得0.4518服务行0.5×0.3333×2×10.3333开四次方得0.7598。四者之和是4.7411归一化后得到权重价格0.2776质量0.4669交付0.0953服务0.1603一致性检验矩阵乘权重向量得到(1.1176, 1.8842, 0.3847, 0.6453)逐项除以对应权重得到四个比值4.0258、4.0356、4.0368、4.0258平均后λ_max约为4.0310。CI (4.0310 - 4) / 3 0.010334阶矩阵RI 0.90CR 0.0115。远小于0.1一致性非常好这个矩阵可以用。**第三步构造方案层判断矩阵。**每个准则下对三家供应商做两两比较。以价格准则为例供应商A价格最低、B中等、C最高得到P_price [1, 2, 5; 1/2, 1, 3; 1/5, 1/3, 1];同理构造质量、交付、服务三个矩阵P_qual [1, 1/3, 1/2; 3, 1, 2; 2, 1/2, 1]; P_deliv [1, 3, 4; 1/3, 1, 2; 1/4, 1/2, 1]; P_serv [1, 1/2, 2; 2, 1, 3; 1/2, 1/3, 1];分别算出四个矩阵的权重向量准则供应商A供应商B供应商C价格0.58150.30900.1095质量0.16340.53960.2969交付0.62500.23850.1365服务0.29700.53960.1634**第四步逐层合成。**用准则权重乘以各方案在该准则下的权重再求和。供应商A的总得分0.2776×0.5815 0.4669×0.1634 0.0953×0.6250 0.1603×0.2970 0.1614 0.0763 0.0596 0.0476 0.3449供应商B的总得分0.2776×0.3090 0.4669×0.5396 0.0953×0.2385 0.1603×0.5396 0.0858 0.2519 0.0227 0.0865 0.4469供应商C的总得分0.2776×0.1095 0.4669×0.2969 0.0953×0.1365 0.1603×0.1634 0.0304 0.1386 0.0130 0.0262 0.2082三个得分相加等于1.0000验证了归一化没有问题。最终排序是B优于A优于C。有意思的是A在价格和交付上都排第一但因为质量准则的权重最高0.4669而A恰恰在质量上最弱最终被B反超。这个结果拿给采购部门看的时候讨论的焦点就集中在质量权重给到0.47是不是偏高上这比单纯争论选谁有效得多。6. 常见问题与排查技巧实录6.1 一张速查表覆盖八成报错场景我在帮别人看代码和审论文的过程中整理了一批高频问题做成速查表。现象可能原因解决方向CR大于0.1标度拉得过开、存在逻辑矛盾压缩大标度、定位矛盾三元组权重全是0或NaN矩阵含0或负数、忘记归一化检查正互反性、补归一化步骤权重和有明显偏差浮点误差或手工计算错误用两种方法交叉验证λ_max小于n计算错误理论上不可能检查eig结果实部取值方案排名和直觉差很远准则权重或方案打分有问题逐一检查方案层矩阵不同专家结果差异大判断标准不统一做群决策几何平均聚合某个准则权重极低该准则和其他准则高度相关考虑剔除或合并准则这张表里最值得说的是λ_max小于n这条。理论上正互反矩阵的最大特征值必然大于等于n等号只在完全一致时成立。如果你的代码算出来λ_max小于n百分百是计算过程出了问题最常见的坑是特征值取了复数模而不是实部或者矩阵本身填错了比如把0.5填成了2.5这种手误。6.2 群决策多个专家意见不一致怎么办实际项目里很少是一个人填矩阵通常是三到五个专家各自填一份。这时候怎么聚合常见的有三种做法各有适用场景。第一种是聚合判断矩阵把各位专家填的矩阵对应元素做几何平均得到一个综合矩阵再算权重。几何平均的公式是a_ij (∏ a_ij^(k))^(1/m)m是专家数量。注意是几何平均不是算术平均因为判断矩阵的元素是比值关系只有几何平均才能保持互反性。如果对a_ij做算术平均对a_ji也做算术平均两者乘积不一定等于1矩阵就破坏了。第二种是聚合权重每位专家各自算权重再对权重做算术平均。这种方法的好处是能保留每位专家的完整判断也能算权重标准差来反映分歧程度。第三种是先讨论后统一把分歧大的元素拿出来组织专家面对面讨论达成一致后再填一份统一的矩阵。我一般推荐第二种加第一种结合先各自算权重看看分歧大不大。如果标准差很小比如各权重标准差不超过0.05直接用第二种的平均权重如果标准差很大说明专家意见确实分裂这时候用第一种聚合矩阵的结果更稳妥同时把分歧情况在报告里说明。提示专家数量建议不少于5人且最好来自不同岗位。全是同一个部门的人判断会高度趋同群决策的意义就不大了。另外每个专家填之前要给他们同一套准则定义和标度说明定义不统一是群决策结果离散的最大原因。6.3 权重差别很小的排序陷阱有一种情况特别容易误导人算出来两个方案的得分是0.3452和0.3418差了0.0034你就宣布前者更优。这个结论其实站不住脚因为输入数据本身的判断误差可能就有0.01的量级了。处理这个问题有两个办法。一是做敏感性分析把准则权重上下浮动10%看排序会不会翻转。如果浮动5%排序就变了那说明两个方案本质上难分伯仲报告里应该如实说明。二是设定区分阈值比如约定得分差小于0.02视为无明显差异需要结合其他因素决定。我自己做项目时只要前两名差距小于0.03就会在结论里加一句两者综合表现接近建议结合实地考察或试用结果确定。这句话看起来是废话其实体现的是对方法的尊重——层次分析法的精度是有限的不能把它算出来的小数点后四位当成硬结论。6.4 几个只有踩过才知道的实操心得**心得一判断矩阵填之前先让专家做一次排序。**只让专家把准则按重要性排个序不填具体数字。等填矩阵的时候如果出现排第2的准则标度比排第1的还大这种矛盾立刻就能发现。这个方法特别管用能提前拦住大部分一致性事故。**心得二RI表按阶数查不要按准则数量查。**这里容易混淆——如果你的层次结构有两层判断矩阵一个是4阶准则层一个是3阶方案层那就要分别查RI。我见过有人用4阶的RI去检验3阶矩阵算出来的CR偏小误以为通过。**心得三代码里加一个输入校验函数。**检查矩阵是否为正互反的标准是所有元素大于0对角线等于1且|a_ij × a_ji - 1| 1e-8。加这一步能避免大量手工录入错误特别是从Excel导入数据的时候。**心得四结果一定要做一次合理性回看。**把算出来的权重念一遍问自己这个排序符合我原本的判断吗。如果权重最高的准则和你直觉上认为最重要的不一致先别急着改去看看判断矩阵里是不是有填反的地方。我碰到过一次算出来售后权重最高回头一查是填矩阵的人把行和列搞反了。**心得五判断矩阵的来源要存档。**每一份判断矩阵对应哪位专家、什么时候填的、当时的口径是什么都要记录。这类项目往往要经历好几次评审评审人一问这个数是怎么来的你能立刻翻出来可信度完全不一样。7. 如果你还想往下走这几个方向值得看看层次分析法本身到上面基本讲完了但真正把它用好还需要知道它和其他方法的组合方式。这里简单说说我接触过的几个方向有兴趣的可以按需深入。模糊层次分析法解决的是专家说不清程度的问题。传统方法要求专家在1到9之间给一个确定值但很多时候专家的判断是大概在3到5之间。模糊层次分析法用三角模糊数或者区间数来表示这种不确定性最后做去模糊化处理。它的计算量比经典方法大不少适合不确定性要求高的场景。层次分析法加熵权法组合赋权这是我个人最推荐的组合。层次分析法负责主观权重熵权法负责客观权重两者按一个系数加权得到综合权重。这样既保留了专家经验又让数据说话。系数怎么定是个学问常见做法是用距离函数或者博弈论组合简单点就直接五五开。用这个组合能规避纯主观拍脑袋和纯客观没解释力两个极端。层次分析法加TOPSIS解决的是方案层打分的问题。准则权重用层次分析法算方案得分用TOPSIS算两者结合形成权重—得分两步走。比纯层次分析法的优势是方案层不需要专家填矩阵直接输入原始数据减少了主观成分。这套组合在工程评价类论文里非常流行代码量也不大。最后分享一个我自己用下来最舒服的做法**准则权重用层次分析法方案数据用客观指标最后用加权标准化矩阵做综合排序。**这套流程既满足了方法有理论依据的评审要求又避免了方案层主观打分带来的争议。判断矩阵那部分永远是最容易被人质疑的所以我在报告里会把每个判断的来源写清楚——哪位专家、什么依据、为什么给这个标度越是能追溯到源头的判断越经得起推敲。这些年在不同项目里反复用层次分析法最深的一个体会是**这个方法的难点从来不在数学上方根法三行公式谁都能背下来难的是怎么把一个模糊的决策问题拆解得既完整又不冗余怎么让专家的判断真实且一致地表达出来。**矩阵和权重只是最后那个出口前面的结构设计和数据采集才是决定成败的地方。
返回列表