层次分析法,简称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实现之,通用化后,可以解决任何需要多层决策的问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。