层次分析法

本笔记是学习清风数学建模发布的数学建模教学课程时进行的笔记整理,清风老师讲得真的非常好,非常适合想要参加数学建模竞赛的大学低年级学生!!

层次分析法是解决评价类问题的一种经典方法 - 什么是评价类问题? 评价类问题的主要要求一般是确定评价指标、形成评价体系 - 怎样解决评价类问题? 对于评价类问题,我们的一般思路是: 1. 我们评价的目标是什么? 2. 我们为了达到这个目标有哪些可选方案? 3. 评价这些方案的好坏有哪些指标?

建模分析

对于层次分析法的适用场景,给出例题如下:

填好志愿后,小明同学想出去旅游。在查阅了网上的攻略后,他初步选择了苏杭、北戴河和桂林三地之一作为目标景点。 请你确定评价指标、形成评价体系来为小明同学选择最合适的方案。

下面我们来用一般思路思考这个问题: ① 我们评价的目标是什么?

答:为小明同学选择最佳的旅游景点。

② 我们为了达到这个目标有哪几种可选的方案?

答: 1. 苏杭 2. 北戴河 3. 桂林

③ 评价的准则或者说指标是什么?(我们根据什么东西来评价好坏)

答: 1. 景点景色 2. 旅游花费 3. 居住环境 4. 饮食情况 5. 交通便利程度

苏杭桂林北戴河.png|500

如上图,我们希望给每项指标、各城市该指标的满意程度给出各自的比例;而对于这些指标,一次性给出权重往往是不现实的,很容易顾此失彼。 因此,提出的解决方案是:两两比较,最终汇总推算出权重。

一、引入:以各项指标的权重分析为例

1-9重要程度表.png|500 我们只需要对照上标进行指标的两两比较即可。 注意:在层次分析法的设想中,两两比较的过程应该交由专家分析产生,然而现实中大多数时候我们都是自己给出的比例。

最终我们填出了两两对比的表格如下: 指标重要性表格.png|300 表格中a( i , j )表示第i行相对于第j列的重要性比值

  • a( i , j )>0且满足a( i , j ) * a( j , i ) = 1,满足这个条件的矩阵称为正互反矩阵
  • 这个矩阵就是层次分析法中的 判断矩阵

二、一致性检验

得到判断矩阵后我们就可以计算具体权重了,然而:判断矩阵仍然可能存在问题出现问题的判断矩阵.png|500*500 所以,在计算权重之前判断矩阵需要通过一致性检验

真正逻辑自洽的矩阵在每相邻两列、两行之间的比例是完全一致的,称为一致矩阵 一致性检验本质上就是检验我们构造的判断矩阵和真正的一致矩阵的差异是否可以忽略不计

一致性检验的步骤如下

一致性检验的步骤.png|500 其中,\(\lambda_{max}\)表示矩阵的最大特征值,n即方阵的阶数

无法通过一致性检验:往一致性检验上修改 一致矩阵的最大特点是相邻行列之间比值一致,所以找到比值相差较大的地方并进行修改,使矩阵向一致矩阵靠拢即可 #### 三、一致性检验的证明(留坑,线代还没学)

四、计算权重

方法一:算术平均法求权重

参考给出的引例: 方法1:算术平均法求权重.png|500 归一化:使表格中的各列权重和等于1

提取后可以总结为下图: 方法1:算数平均法提取.png|500

方法二:几何平均法求权重

具体方法如下图所示: 方法2:几何平均法求权重.png|500 注意 \(\prod\) 代表连乘 每行上的所有数据相乘开n次方

方法三:特征值法求权重

方法3:特征值法求权重.png|500 最大特征值,即上文提到的 \(\lambda_{max}\) ,在matlab中可以直接求出 对应的特征向量也可以通过eig()函数求解

*具体用法参考 [[matlab基础语法#8. 矩阵求特征值和特征向量]]

五、汇总计算

计算最终得分并排序: 最终得分=\(\sum\) 指标权重 * 得分权重 #### 六、模型总结 最终的呈现中,层次分析法应以清晰的层次展现: 分层展示图.png|500

层次分析法的局限性:
  1. 评价的决策层不能太多
    • 决策层太多会导致n很大,平均随机一致性指标RI的表格中最大n只有15
    • 决策层太多可能会导致判断矩阵和一致矩阵差异很大
  2. 决策层评价指标的数据已知时,指标的权重如果仍然采用自己填写的方式会导致主观性过强