层次分析法,简称AHP,是一个运筹学方法
方法背景及应用概述
AHP方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
-
公司要选拔人才,会考核多个维度,选谁是主观选,还是有客观的方法论?
-
要送父母一个按摩椅,多个品牌怎么选?
-
要做一次国庆节的旅游,多个目标地点怎么选?
-
用JS手撕一下这个方法,并将其通用化😄
先从实际的例子来了解这个方法的步骤
-
景色要好,但费用不能太贵
-
费用便宜的话,住的和吃的会不会太差?
-
对多个属性,可能无法一次性端平
-
上图啥意思?
-
这是一个带有主观判断的表,例如
-
景色:费用,你认为是多少?我认为景色稍微重要 ,那就是 3:1,如果反过来 就是 1:3
-
于是 景色:费用 就是一个 数值😄
-
依次类推,每个决策维度两两比较,形成一个 「判断矩阵」
-
矩阵对角是互为倒数,这就说明我们只需要对比一遍就可以获得「判断矩阵」
-
只需要完成矩阵中的,上三角 或 下三角,其他自动完成
一致性判断
-
两两比较 的时候,可能会出现 A比B 好,B比C好,C比A好,这样的,前后不一致的比例判断,我们可以采用「层次单排序及一致性检验」
-
一致性指标:
-
是特征值
,n是特征个数 -
CI 接近 0 ,有满意的一致性
-
CI 越大, 越不一致
-
求出CI后,再用CR = CI / RI < 0 .1 来判断是否一致
-
如果不满足一致性,请重新两两对比😄
-
RI (随机一致性指标) 查表得出,要自己求RI,可以构造n个对比矩阵,然后求特征值的平均数
-
RI如下
-
n=1~12时,RI分别为 0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54
-
查表很简单,判断的维度不超过12,上例是5😄
-
上面的公式需要求出,矩阵的特征值,计算略微复杂,我们使用和积法来近似求「特征值」以及「特征向量」
上JS代码来求一个判断矩阵的CR和特征向量
-
增加注解详细说明代码
-
有了这个函数,我们就完成了此方法的核心🔥
每个判断维度对应目标的对比矩阵
-
简单的说,选定景色,这个维度,两两比较,苏杭、北戴河、桂林的对比矩阵,然后确保一致性。
-
这样一共会出现5个 对比矩阵,都是3*3的
-
加上维度的对比矩阵,一共有6个矩阵
-
具体矩阵如下
-
再一次观察,其实都是对角互为倒数的😄
-
下面的代码就SO EASY了,就这么短
结果如下
有了这个小工具,我们可以做人才选拔
-
当然AHP方法是带有主观性的,可以用多个人产生对比矩阵,形成决策树,这样评判更公平😄
-
我们可以将上面的过程,做成一个可视化的界面,例如这样:
-
我们在《需求反馈系统》中,实战就用到了AHP算法😄
总结
-
了解AHP,使用到实际业务场景
-
通过JS实现之,通用化后,可以解决任何需要多层决策的问题