建模小白的自学分享之路
注:本文是对数学建模的学习笔记,来源于清风“数学建模算法讲解”
层次分析法笔记
一.层次分析法介绍
层次分析法,The analytic hierarchy process, 简称AHP。是评价类问题的解决方法之一。
二.层次分析法的方法实现
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.7x0.4+0.5x0.3+0.3x0.2+0.25x0.1=0.515。
2.复杂一般实现
在前面,我们所使用的具体权重完全可以由要求方或自己得出。但当你的因子比较多时,也就是矩阵比较复杂时,这种简单的判断就没有那么准确了。所以当矩阵比较复杂时我们采用的是判断矩阵的方法。以下用的都是老师上课用过的例子。具体可以去看老师上课的内容。
判断矩阵
我们说判断因子较多的时候,一次性考虑往往是不全面的,在重要性上往往不一致。因此我们采用两两比较的方式进行判断。我们使用这样一个示例表格。
指标权重 | 苏杭 | 北戴河 | 桂林 | |
---|---|---|---|---|
景色 | ||||
花费 | ||||
居住 | ||||
饮食 | ||||
交通 |
以及这样的评判标准表
标度 | 含义 |
---|---|
1 | 同等重要 |
3 | 稍微重要 |
5 | 明显重要 |
7 | 强烈重要 |
9 | 极端重要 |
2,4,6,8 | 上述判断的中值重要程度 |
倒数 | A和B相比标度是3,那么B和A相比就是1/3 |
按照我们之前的那种顺序关系,我们可以先求指标权重这一列。
我们可以用下面这个表格求权重指标。
景色 | 花费 | 居住 | 饮食 | 交通 | |
---|---|---|---|---|---|
景色 | |||||
花费 | |||||
居住 | |||||
饮食 | |||||
交通 |
我们先假设一些数据
景色 | 花费 | 居住 | 饮食 | 交通 | |
---|---|---|---|---|---|
景色 | 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 |
像是这样的矩阵,我们就把它叫做是判断矩阵。它是用来判断权重的矩阵。(搬运)判断矩阵的线性代数性质:
(1)𝑎ij表示的意义是,与指标𝑗相比,𝑖的重要程度。
(2)当i=j时,两个指标相同,因此同等重要记为1,这就解释了主对角线元素为1。
(3)aij>0且aij x aji = 1(我们称满足这一条件的矩阵为正互反矩阵)
一致矩阵和一致性检验
我们先来介绍一致矩阵。我们上面说了判断矩阵,其中的第三条性质,aij>0且aij x aji = 1。如果它还满足aij x ajk = aik,那么它就是一个一致矩阵。(aij,指i对j的重要程度)。一致矩阵的两个重要性质,各行各列之间成倍数;只有一个特征值为n。(线性代数小知识补充理解:各行各列之间成倍数,秩为1,它的特征值和特征向量也只有一个。)【后面说的一致矩阵自然也是判断矩阵】
但还是前面提到过的因子过多导致的问题,我们得到的判断矩阵就没有问题了吗?那也不见得。我们可以进行一致性检验。(老师讲的原视频里有比较典型的例子,就不赘述了)
首先说一个结论,判断矩阵越不一致时,最大特征值与n相差就越大(都是>=n的)。只有一致时才取n。
接下来是一致性检验的步骤:
第一步:计算一致性指标CI:
CI = (最大特征值-n)/(n-1)
第二步:查找对应的平均随机一致性指标RI
第三步:计算一致性比例CR
CR = CI/RI
如果CR < 0.1, 则可认为判断矩阵的一致性可以接受;否则需要对
判断矩阵进行修正。
权重的求解方法
假设我们已经得到了可以接受的一致矩阵。我们求解权重的方法有三,
一,算术平均法:
以下面这个表格为例。附:
景色 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|
苏杭 | 1 | 2 | 5 |
北戴河 | 1/2 | 1 | 2 |
桂林 | 1/5 | 1/2 | 1 |
仅使用第一列的数据,计算出来的权重:
苏杭 = 1 /(1+0.5+0.2)= 0.5882
北戴河 = 0.5 /(1+0.5+0.2)= 0.2941
桂林 = 0.2 /(1+0.5+0.2)= 0.1177
使用第二列的数据,计算出来的权重:
苏杭 = 2 /(2+1+0.5)= 0.5714
北戴河 = 1 /(2+1+0.5)= 0.2857
桂林 = 0.5 /(2+1+0.5)= 0.1429
使用第三列的数据,计算出来的权重:
苏杭 = 5 /(5+2+1)= 0.625
北戴河 = 2 /(5+2+1)= 0.25
桂林 = 1 /(5+2+1)= 0.125
综合上述三列,我们求平均权重:
苏杭 = (0.5882+0.5714+0.625)/3=0.5949
北戴河 = (0.2941+0.2857+0.25)/3=0.2766
桂林 = (0.1177+0.1429+0.125)/3=0.1285
注:如果是完全一致矩阵,就不必这样了,用哪一列都是一样的。
过程总结如下:
第一步:将判断矩阵按照列归一化
第二步:将归一化的各列相加(按行求和)
第三步:将相加后得到的向量中每个元素除以n即可得到权重向量
二,几何平均法:
几何平均法求权重也有三步:
第一步:将A的元素按照行相乘得到一个新的列向量
第二步:将新的向量的每个分量开n次方
第三步:对该列向量进行归一化即可得到权重向量
对于几何平均法,我们可以仿照算术平均法进行。
三,特征值法:
前面我们提到过说一致矩阵的两个重要性质各行各列成倍数,以及特征值只有一个,就是n。那么特征向量也是只有一个的。对于一个完全的一致矩阵的话,它可以用任意一列做代表,我们可以用第一列做特征向量,然后采取归一化求解的方式。那对于经过检验调整后可接受的判断矩阵来说,我们也可以采取类似的方式,只不过这个特征向量是我们通过算法求得的。所以我们的步骤就是:一,求出矩阵A的最大特征值以及其对应的特征向量;二,对求出的特征向量进行归一化即可得到我们的权重。
如果说把一致性检验加入的话,我们可以这样规划步骤。
三,层次分析法方法总结:
一,评价类问题的解决方案(具体可看老师视频):
1.确立评价目标
2.确立评价方案
3.确立评价指标
二,方法步骤:
1.分析系统中各因素之间的关系,建立系统的递阶层次结构.【分析指标】
2. 对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。【建立判断矩阵】
3. 由判断矩阵计算被比较元素对于该准则的相对权重,
并进行一致性检验(检验通过权重才能用).【一般情况;一致性检验,求权重】【修正小方法:往一致矩阵倍数关系调整】
4.计算各层元素对系统目标的合成权重,并进行排序。【计算得分权重】
三,局限性:
1.评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异
可能会很大。
2.决策层中指标的数据不能是已知的。【决策层,可以理解为决策数据】