层次分析法
Analytic Hierarchy Process, AHP
小明到底选华科还是武大呢?
小米最关心大学里的这四个方面:
- 学习氛围(占比0.4)
- 就业前景(占比0.3)
- 男女比例(占比0.2)
- 校园景色(占比0.1)
括号内数值表示小明认为的重要性程度(权重),和为1
通过分析资料,小明分别给两所学校打了分:
并列好了权重表
| 指标权重 | 武大 | 华科 | |
|---|---|---|---|
| 学习氛围 | 0.4 | 0.7 | 0.3 |
| 就业前景 | 0.3 | 0.5 | 0.5 |
| 男女比例 | 0.2 | 0.3 | 0.7 |
| 校园景色 | 0.1 | 0.25 | 0.75 |
华科最终得分:0.515;
武大最终得分:0.485;
小明最后选择了华科;
去旅游
填好志愿后,小明决定去旅游。查阅网上数据后,他初步选择了苏杭、北戴河、桂林三地作为目标景点。
请确定评价指标、形成评价体系来为小明选择最佳方案
准备工作
评价类问题,首先想到:
- 评价目标(选择目标景点)
- 为了达到目标有哪几种可选法案(苏杭、北戴河、桂林)
- 评价准则或者指标(根据什么评价东西好坏)
优先在别人的论文中寻找指标,这样显得==专业==,另外别人的研究方法也可以借鉴
卖课的推荐的一个腻害的网站
虫部落-快搜:https://search.chongbuluo.com/
↓ 优先级 ↓
- 谷歌搜索(进不去就百度呗)
- 微信搜索
- 知乎搜索
如本题可搜索关键字:旅游选择因素、根据什么选择旅游景点、旅游景点评价指标…
⏩到小明选择好了一下5个指标:
- 旅游景色
- 花费
- 居住环境
- 饮食情况
- 交通便利程度
在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难是这些比重常常不易定量化。此外,当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度的影响时,常常会因考虑不周全、顾此失彼而使决策者提出与他实际认为的重要性程度不相一致的数据,甚至有可能提出一组隐含矛盾的数据。——选自司守奎[kui]老师的《数学建模算法与应用教材》
叫小明来填权重,可能他自己今天填的和明天填的不一样。
一次性考虑多个指标的关系往往考虑不周,所以应该分而治之,两个两个指标相比较,最终根据两两比较推算出权重
重要程度表
| 标度 | 含义 |
|---|---|
| 1 | 同样重要 |
| 3 | 稍微重要 |
| 5 | 明显重要 |
| 7 | 强烈重要 |
| 9 | 极端重要 |
| 2,4,6,8 | 相邻判断中间值 |
| 倒数 | A比B为3,B比A就是1/3 |
重要性改成满意度可能更方便理解
| 景色 | 花费 | 居住 | 饮食 | 交通 | |
|---|---|---|---|---|---|
| 景色 | 1 | ||||
| 花费 | 1 | ||||
| 居住 | 1 | ||||
| 饮食 | 1 | ||||
| 交通 | 1 |
实际情况中这张表得交由专家来填
不过先填了算了
| 景色 | 花费 | 居住 | 饮食 | 交通 | |
|---|---|---|---|---|---|
| 景色 | 1 | 1/2 | 4 | 3 | 3 |
| 花费 | 2 | 1 | 7 | 5 | 5 |
| 居住 | 1/4 | 1/7 | 1 | 1/2 | 1/3 |
| 饮食 | 1/3 | 1/5 | 2 | 1 | 1 |
| 交通 | 1/3 | 1/5 | 3 | 1 | 1 |
表中矩阵特点(==判断矩阵==):
- a[i] [j]表示与指标j相比i的重要程度
- a[i] [i]=1;
- a[i] [j] * a[j] [i] = 1;
我们称之为正互反矩阵
| 景色 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 2 | 5 |
| 北戴河 | 1/2 | 1 | 2 |
| 桂林 | 1/5 | 1/2 | 1 |
| 花费 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 1/3 | 1/8 |
| 北戴河 | 3 | 1 | 1/3 |
| 桂林 | 8 | 3 | 1 |
| 居住 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 1 | 3 |
| 北戴河 | 1 | 1 | 3 |
| 桂林 | 1/3 | 1/3 | 1 |
| 饮食 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 3 | 4 |
| 北戴河 | 1/3 | 1 | 1 |
| 桂林 | 1/4 | 1 | 1 |
| 交通 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 1 | 1/4 |
| 北戴河 | 1 | 1 | 1/4 |
| 桂林 | 4 | 4 | 1 |
但是也有可能会出现矛盾之处(不一致)
| 景色 | 苏杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 苏杭 | 1 | 2 | 1 |
| 北戴河 | 1/2 | 1 | 2 |
| 桂林 | 1 | 1/2 | 1 |
于是我们发明了==一致矩阵==,一种特殊的正互反矩阵。
a[i] [k] = a[i] [j] * a[j] [k];
特性/性质:各行各列成倍数、
注意:在使用判断矩阵求权重前,需要对其进行****
你的判断矩阵不可能是决定一致的,在误差不超过的情况下可以使用。
引理1:
-
A为n阶方阵,r(A)=1;则A有一个特征值tr(A),其余特征值都是0;
-
因为各行成比例,所以一致矩阵的秩一定为1;
当特征值为 n 时,对应特征向量刚好为 k[, , …, ]
引理2:
-
n阶正互反矩阵A为一致矩阵时当且仅当最大特征值 λ=n
-
当正互反矩阵非一致时,一定满足 λ>n
判断矩阵越不一致,最大特征值与n相差就越大(代码文件名:PPT_1.m)
一致性检验步骤
1:计算一致性指标CI:
2:查找对应
| n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RI | 0 | 0 | 0.52 | 0.89 | 1.12 | 1.26 | 1.36 | 1.41 | 1.46 | 1.49 | 1.52 | 1.54 | 1.56 | 1,58 | 1.59 |
注:实际应用中,n很少超过10,如超过10,则需考虑二级指标体系
3:计算
若CR < 0.1, 则可认为判断矩阵的一致性可接受;否则需要对其进行修正
RI来自随机的500个样本矩阵,求最大特征根的平均值 ,并定义
, 这是作者通过蒙特卡罗模拟得到的最佳方案
计算权重
权重归一化处理:
3种方法:
1.算数平均值(每个元素除以所在列的和 )
求得的权重向量为:
2.几何平均值
求得的权重向量为:
3.特征值法求权重
first. 求出A最大特征值以及其特征向量
second. 对求出特征向量归一化即可得到我们的权重
ps:获奖论文一般只留下了特征法的权重
⏩ing
| 权重 | 苏杭 | 北戴河 | 桂林 | |
|---|---|---|---|---|
| 景色 | 0.2636 | 0.5954 | 0.2764 | 0.1283 |
| 花费 | 0.4758 | 0.0819 | 0.2363 | 0.6817 |
| 居住 | 0.0538 | 0.4286 | 0.4686 | 0.1429 |
| 饮食 | 0.0981 | 0.6337 | 0.1919 | 0.1744 |
| 交通 | 0.1087 | 0.1667 | 0.1667 | 0.6667 |
| 计算结果 | 0.2993 | 0.24530 | 0.45544 |
局限性
- 评价的决策层不能太多,最多为15
- 如果决策层中指标已知,那么我们得用到TOPSIS方法
TOPSIS方法
Technique for Order Preference by Similarity of Ideal Solution
逼近理想解排序法,简称优劣解距离法。
其能充分利用原始数据的信息,其结果能精确地反映评价方案之间的差距
小例子:
| 姓名 | 成绩 |
|---|---|
| 张三 | 89 |
| 李四 | 60 |
| 王五 | 74 |
| 赵六 | 99 |
| 姓名 | 成绩 | 排名 | 修正排名 | 评分 |
|---|---|---|---|---|
| 张三 | 89 | 2 | 3 | 3/10=0.3 |
| 李四 | 60 | 4 | 1 | 1/10=0.1 |
| 王五 | 74 | 3 | 2 | 2/10=0.2 |
| 赵六 | 99 | 1 | 4 | 4/10=0.4 |
但是假如李四考了3分,赵六考了90分,评分还是不变。
可以进行如下处理:
最高成绩max:99
最低成绩:60
构造评分公式:
| 姓名 | 成绩 | 未归一评分 | 归一后评分 |
|---|---|---|---|
| 张三 | 89 | 0.74 | 0.35 |
| 李四 | 60 | 0 | 0 |
| 王五 | 74 | 0.36 | 0.17 |
| 赵六 | 99 | 1 | 0.48 |
或者用卷面极值处理:
评分公式:
| 姓名 | 成绩 | Beat评分 | 评分 |
|---|---|---|---|
| 张三 | 89 | 0.89 | 0.28 |
| 李四 | 60 | 0.60 | 0.19 |
| 王五 | 74 | 0.74 | 0.23 |
| 赵六 | 99 | 0.99 | 0.30 |
但是此方法其存在一下缺陷:
- 很多指标不存在理论上的最大最小值,例如衡量经济增长指标:GDP增速
- 比较对象一般远大于2个
- 比较指标往往不只是一个方面的,例如成绩、工时数、课外竞赛得分…
从
综合下来还是前者更优
增加指标
| 姓名 | 成绩 | 迟到次数 |
|---|---|---|
| 张三 | 89 | 2 |
| 李四 | 60 | 0 |
| 王五 | 74 | 1 |
| 赵六 | 99 | 3 |
成绩越大越好,这样的指标称之为极大型指标(效益性指标)
迟到次数越少越好,这样的指标称之为极小型指标(成本型指标)
将原始矩阵正向化
在建模过程中我们得将极小型指标转换为极大型指标,
称为指标正向化,公式为
| 姓名 | 成绩 | 正向化后迟到次数 |
|---|---|---|
| 张三 | 89 | 1 |
| 李四 | 60 | 3 |
| 王五 | 74 | 2 |
| 赵六 | 99 | 0 |
常见的4种指标:
| 指标名称 | 指标特点 | 粒子 |
|---|---|---|
| 极大型 | 越大越好 | GDP增速、成绩 |
| 极小型 | 越少越好 | 费用、污染程度 |
| 中间型 | 越趋近于某个值越好 | 水PH |
| 区间型 | 落在某个区间最好 | 稳态、 |
所谓将原始矩阵正向化,就是将指标类型统一为极大型指标
转换方法:
-
极小型
-
中间型
-
区间型
将正向矩阵标准化
为了消去不同量纲的影响,需要对其进行标准化处理:
假设有个要评价对象,个评价指标构成的正向化矩阵长这样:
X = \left[ \matrix{ x_{11} & x_{12} & \cdots & x_{1m} \\ x_{21} & x_{22} & \cdots & x_{2m}\\ \dots \\ x_{n1} & x_{n2} & \cdots & x_{nm}} \right]那么,对其标准化的矩阵记为, 中每个元素
\left[ \matrix{89 & 1 \\ 60 & 3 \\ 74 & 2 \\ 99 & 0} \right] 经过标准化就变成了: \left[ \matrix{0.5438 & 0.2673 \\ 0.3665 & 0.8018 \\ 0.4520 & 0.5345 \\ 0.6408 & 0} \right]
只有一个指标时,评分公式: 相当于 即
当有个评价对象时,个标准指标的标准化矩阵:
Z = \left[ \matrix{ z_{11} & z_{12} & \cdots & z_{1m} \\ z_{21} & z_{22} & \cdots & z_{2m}\\ \dots \\ z_{n1} & z_{n2} & \cdots & z_{nm}} \right]计算得分并归一化
定义最大值:
定义最小值:
定义第 个评价对象与最大值距离
定义第 个评价对象与最小值距离
那么我们可以计算出第 个评价对象未归一化得分:
很明显 且 越大 越小,即越接近最大值
| name | 归一化后得分 | 排名 | ||
|---|---|---|---|---|
| 张三 | 0.5380 | 0.3206 | 0.1857 | 3 |
| 李四 | 0.2382 | 0.8018 | 0.3834 | 1 |
| 王五 | 0.3078 | 0.5413 | 0.3170 | 2 |
| 赵六 | 0.8018 | 0.2382 | 0.1139 | 4 |
赵六明明考了第一, 为什么评分是倒数呢?
因为分数和迟到次数权重相同,so,我们应该给不同指标分配不同的权重,其满足
重新定义第 个评价对象与最大值距离
重新定义第 个评价对象与最小值距离
练习题
