層析分析法(AHP)
建模比賽中最基礎的建模之一,其主要運用與解決評價類問題(例如選擇哪種方案最好、運用那位員工表現最優秀等等)
1.模型介紹
指標選擇 實體演示
高考報考時小明糾結于是選擇華中科技大學還是武漢大學,
這個時候可以根據問題進行一些指標的比較,
這里小明最關心的是以下幾點:
| 專案 | 權重 |
|---|---|
| 學習氛圍 | 0.4 |
| 就業前景 | 0.3 |
| 男女比例 | 0.2 |
| 校園景色 | 0.1 |
權重里面的數值表示小明認為的重要程度(權重),其和為1,
接下來小明通過上網查資料,了解以上的內容,并根據內容進行了自己的打分,得到權重表格:
| 專案 | 權重 | 華中科技大學得分 | 武漢大學得分 |
|---|---|---|---|
| 學習氛圍 | 0.4 | 0.7 | 0.3 |
| 就業前景 | 0.5 | 0.5 | 0.5 |
| 男女比例 | 0.2 | 0.7 | 0.3 |
| 校園景色 | 0.1 | 0.25 | 0.75 |
由這個權重表格得到了華科和武大的比分
華中科技大學最終得分:
0.4×0.7+0.5×0.5+0.2×0.7+0.1×0.25=0.515
武漢大學最終得分:
0.4×0.3+0.5×0.5+0.2×0.7+0.25×0.75=0.485
因為華科的比分比較高,所以小明最終選擇去了華中科技大學,
示例總結
根據這個例子,使用打分解決評價問題,只需要我們補充完成下面這張表格即可:
| 指標權重 | 方案1 | 方案2 | … | |
|---|---|---|---|---|
| 指標1 | a | b | b | b |
| 指標2 | a | c | c | c |
| 指標3 | a | d | d | d |
| … | a | e | e | e |
其中相同字母的單元格的和為1,它們表示針對某一因素所占的權重,
下面我們開始引入層次分析法,
填好志愿以后,小明想出去旅游,在查閱了網上的攻略之后,他初步選擇了蘇杭、北戴河、和桂林三地之一做為目標景點,請你確定評價指標、形成評價體系來為小明選擇最佳的方案,
做為評價類問題,首先要想三個問題:
① 我們的評價目標是什么?
② 我們為了達到這個目標有哪幾種方案可以選擇?
③評價的標準是什么或者說指標是什么?
針對小明旅游問題我們開始回答這三個問題:
| 問題 | 回答 |
|---|---|
| 評價目標 | 為小明同學選擇最佳的旅游景點 |
| 可選方案 | 蘇杭、北戴河、桂林 |
| 問題指標 | 這個題目上沒有相關資料支撐,需要調查相關資料 |
假如我們調查了相關的資料,得到了以下的五個指標:
①景點景色
②旅游花費
③居住環境
④飲食情況
⑤交通便利程度
接下來就是給這五個指標定權重,但是如果直接定指標的話需要同時考慮五個指標的占比程度的權重,這個權重難以確定,往往考慮不周,而且主觀上可能還會有變化,
判斷矩陣
所以這里引入層次分析法的思想:兩個兩個指標進行比較,最終根據兩兩比較的結果來推算出權重,比較的方法如下:
| 標度 | 含義 |
|---|---|
| 1 | 表示兩個因素相比,具有同樣重要性 |
| 3 | 表示兩個因素相比,一個因素比另一個因素稍微重要 |
| 5 | 表示兩個因素相比,一個因素比另一個因素明顯重要 |
| 7 | 表示兩個因素相比,一個因素比另一個因素強烈重要 |
| 9 | 表示兩個因素相比,一個因素比另一個因素極端重要 |
| 2、4、6、8 | 上述兩相鄰判斷的中值 |
| 倒數 | A和B相比如果標度為3,那么B和A相比就是3/1 |
接下來進入提問環節:
Q1:請你比較景色和花費的重要程度
A1:我認為花費比景色略微重要(介于同等重要1和稍微重要3之間吧)
Q1:請你比較景色和居住的重要程度
A1:我認為景色比居住要重要一點(介于略微重要3和明顯重要5之間吧)
以此類推,提問小明十次【組和數C(5,2)】,根據他的回答,我們的到了這張表:
| 景色 | 花費 | 居住 | 飲食 | 交通 | |
|---|---|---|---|---|---|
| 景色 | 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 | 5/1 | 3 | 1 | 1 |
上面是一個5×5的方陣,我們記為A,對應元素為aij,這個方陣有如下特點:
①aij表示的意義是,與指標j相比,i的重要程度,
②當i與j,兩個指標相同,因此同等重要記為1,這就解釋了主對角線元素為1,
③ aij>0,且滿足aij×aji=1 (我們稱滿足這一條件的矩陣為正互反矩陣)
實際上,上面這個矩陣就是層次分析法中的判斷矩陣,
不一致現象
接下來開始判斷蘇杭、北戴河、桂林各個指標的權重,下面以景色為例:
| 景色 | 蘇杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 蘇杭 | 1 | 2 | 4 |
| 北戴河 | 2/1 | 1 | 2 |
| 桂林 | 1/4 | 1/2 | 1 |
但是這里可能會出現一種情況(不一致現象)如果出現了以下的情況:
蘇杭比北戴河景色好一點,蘇杭>北戴河
蘇杭和桂林景色一樣好,蘇杭=桂林
北戴河比桂林景色好一點,北戴河>桂林
| 景色 | 蘇杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 蘇杭 | 1 | 2 | 1 |
| 北戴河 | 2/1 | 1 | 2 |
| 桂林 | 1 | 1/2 | 1 |
就會出現矛盾之處,被稱為不一致現象,
一致矩陣
| 景色 | 蘇杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 蘇杭 | 1 | 2 | 4 |
| 北戴河 | 2/1 | 1 | 2 |
| 桂林 | 1/4 | 1/2 | 1 |
上面就是一個一致矩陣,其中的元素有:
a
i
j
=
i
的
重
要
程
度
j
的
重
要
程
度
a_{ij}= \frac{i的重要程度}{j的重要程度}
aij?=j的重要程度i的重要程度?
a
j
i
=
j
的
重
要
程
度
i
的
重
要
程
度
a_{ji}= \frac{j的重要程度}{i的重要程度}
aji?=i的重要程度j的重要程度?
a
j
k
=
j
的
重
要
程
度
k
的
重
要
程
度
a_{jk}= \frac{j的重要程度}{k的重要程度}
ajk?=k的重要程度j的重要程度?
所以一致矩陣的特點就是:各行和格列之間是成倍數關系的,
在使用判斷矩陣求權重之前,必須對其進行一致性檢驗,
一致性檢驗
原理:檢驗我們構造的判斷矩陣和一致矩陣是否有太大的區別,
因為一致矩陣(A)為n階方陣,且r(A)=1,則A有一個特征值為tr(A)=n,其余特征值均為0,并且可以很容易得到,特征值為n時,對應的特征向量剛好為
k
(
1
a
11
,
1
a
12
,
.
.
.
.
.
.
,
1
a
1
n
)
T
k(\frac{1}{a_{11},}\frac{1}{a_{12}},......,\frac{1}{a_{1n}})^T
k(a11?,1?a12?1?,......,a1n?1?)T
引理:n介正互反矩陣A為一致矩陣時當且僅當最大特征值λmax=n, 且當正互反矩陣A非一致時,一定滿足λmax>n,
接下來開始進行一致性檢驗,分為三步:
第一步:計算一致性指標CI
C
I
=
λ
m
a
x
?
n
n
?
1
CI=\frac{\lambda_{max}-n}{n-1}
CI=n?1λmax??n?
第二步:查找對應的平均隨機一致性指標RI
| 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,則可以考慮建立二級指標體系,
第三步:計算一致性比例CR
C
R
=
C
I
R
I
CR=\frac{CI}{RI}
CR=RICI?
如果CR<0.1,則可以認為判斷矩陣的一致性可以接受;否則需要對判斷矩陣進行修正,
一致矩陣計算權重
先從簡單的一致矩陣入手,先來看一致矩陣:
| 景色 | 蘇杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 蘇杭 | 1 | 2 | 4 |
| 北戴河 | 2/1 | 1 | 2 |
| 桂林 | 1/4 | 1/2 | 1 |
開始計算權重,因為一致矩陣各行格列成比例,所以我們隨便選取其中一列下面選取的時第一列,
蘇杭=1/(1+0.5+0.25)
北戴河=0.5/(1+0.5+0.25)
桂林=0.25/(1+0.5+0.25)
注:權重要進行歸一化處理
非一致矩陣計算權重
非一致矩陣權重的計算有三種方法,分別為:算數平均法,幾何平均法,特征值法,
1.算數平均法
下面來看算數平均法如何計算非一致矩陣權重:
| 景色 | 蘇杭 | 北戴河 | 桂林 |
|---|---|---|---|
| 蘇杭 | 1 | 2 | 5 |
| 北戴河 | 2/1 | 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即可得到權重,權重即為:
ω
=
1
n
∑
j
=
1
n
a
i
j
∑
k
=
1
n
a
k
j
,
(
i
=
1
,
2
,
.
.
.
,
n
)
\omega=\frac{1}{n}\sum_{j=1}^n\frac{a_{ij}}{\sum_{k=1}^{n}a_{kj}},(i=1,2,...,n)
ω=n1?j=1∑n?∑k=1n?akj?aij??,(i=1,2,...,n)
2.幾何平均法
對于非一致矩陣,還有一種使用幾何平均法求權重的方法,和算數平均法類似,下面就直接給出計算方法了,
第一步:將A的元素按照行相乘得到一個新的列向量
第二步:將新的向量每個分量開n次方
第三步:對該列向量進行歸一化即可得到權重向量,那么用幾何平均法得到的權重向量為:
ω
=
(
∏
j
=
1
n
a
i
j
)
1
n
∑
k
=
1
n
(
∏
j
=
1
n
a
k
j
)
1
n
(
i
=
1
,
2
,
.
.
.
,
n
)
\omega=\frac{(\prod_{j=1}^na_{ij})^\frac{1}{n}}{\sum_{k=1}^n(\prod_{j=1}^na_{kj})^{\frac{1}{n}}}(i=1,2,...,n)
ω=∑k=1n?(∏j=1n?akj?)n1?(∏j=1n?aij?)n1??(i=1,2,...,n)
下面我們進行通過兩種方法得出權重比較:
| 算數平均法權重 | 幾何平均法權重 | |
|---|---|---|
| 蘇杭 | 0.5949 | 0.5954 |
| 北戴河 | 0.2766 | 0.2764 |
| 桂林 | 0.1285 | 0.1283 |
3.特征值法
在一致矩陣當中有一個特征值為n,其余特征值均為0,另外,我們可以很容易地得到,特征值為n時,對應的特征向量剛好為:
k
(
1
a
11
,
1
a
12
,
.
.
.
.
.
.
,
1
a
1
n
)
T
k(\frac{1}{a_{11},}\frac{1}{a_{12}},......,\frac{1}{a_{1n}})^T
k(a11?,1?a12?1?,......,a1n?1?)T
這一特征向量剛好為一致矩陣的第一列.
假如我們的判斷矩陣一致性可以接受,那么我們可以仿照一致矩陣權重的求法,
第一步:求出矩陣A的最大特征值以及其對應的特征向量
第二步:對求出的特征向量進行歸一化即可得到我們的權重
| 算數平均法權重 | 幾何平均法權重 | 特征值法權重 | |
|---|---|---|---|
| 蘇杭 | 0.5949 | 0.5954 | 0.5954 |
| 北戴河 | 0.2766 | 0.2764 | 0.2764 |
| 桂林 | 0.1285 | 0.1283 | 0.1283 |
(這里特征值法和幾何平均值法權重相等,一定是巧合,一定是巧合,在比賽當中,我們一般情況下是留下特征值法)
最終計算
| 景色 | 花費 | 居住 | 飲食 | 交通 | |
|---|---|---|---|---|---|
| 景色 | 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 | 5/1 | 3 | 1 | 1 |
我們對于這個判斷矩陣分別使用三種方法,得到權重:
| 算數平均值法 | 幾何平均法 | 特征值法 | |
|---|---|---|---|
| 景色 | 0.2632 | 0.2636 | 0.2636 |
| 花費 | 0.4744 | 0.4773 | 0.4758 |
| 居住 | 0.0545 | 0.0531 | 0.0538 |
| 飲食 | 0.0985 | 0.0988 | 0.0981 |
| 交通 | 0.1103 | 0.1072 | 0.1087 |
這里我們保留特征值法的權重,下面我們在計算出其他指標對應景點的權重,得到權重矩陣:
| 指標權重 | 蘇杭 | 北戴河 | 桂林 | |
|---|---|---|---|---|
| 景色 | 0.2636 | 0.5954 | 0.2764 | 0.1283 |
| 花費 | 0.4758 | 0.0819 | 0.2363 | 0.6817 |
| 居住 | 0.4758 | 0.0819 | 0.2363 | 0.6817 |
| 飲食 | 0.0981 | 0.6337 | 0.1919 | 0.1744 |
| 交通 | 0.1987 | 0.1667 | 0.1667 | 0.6667 |
下面將景點列和權重指標列相乘求和就可以得出每個景點的得分啦,
蘇杭得分:0.5954×0.2636+0.0819×0.4758+0.4286×0.0538+0.6337×0.0918+0.1667×0.1087=0.299
類似的可以得到北戴河得分為0.245,桂林得分為0.455,因此最佳的旅游景點為桂林,在這里可以使用EXCEL計算來減輕作業量(F4可以鎖定單元格)
論文書寫
第一步:分析系統中各因素之間的關系,建立系統的遞階層次關系
這里用mermaid畫的有點丑,但是是這個意思,大家在書寫論文的時候可以用PPT來畫這個層次結構圖,圖的左側要寫出目標層(O),標準層(C),方案層(P )
注:如果用到了層次分析法,那么這個層次分析結構圖一定要放在你的建模論文當中哦,
第二步:對于同一層次的個元素關于上一層次中某一準則的重要性進行兩兩比較,構造兩兩比較矩陣(判斷矩陣)
這里判斷矩陣幾乎都是自己填的(dddd),
標準層,方案層的判斷矩陣的數值要結合實際來填寫,如果題目中有其他資料,可以考慮利用這些資料進行計算,
第三步:由判斷矩陣被比較的元素對于該準則的相對權重,并進行一致性檢驗
三種權重計算方法:(1)算數平均法(2)幾何平均法 (3)特征值法
這里大家三種方法都需要使用,并在論文中這樣寫:
為了保證結果的穩健性,本文采用了三種方法分別求出了權重,再根據得到的權重矩陣計算各方案的得分,并進行排序和綜合分析,這樣避免了采用單一方法所產生的偏差,得出的結論將更全面、更有效,
如果一致性檢驗時發現CR>0.1,我們就對判斷矩陣A進行修改,具體吧,就往一致矩陣上調整(一致性矩陣各行成倍數關系~),
第四步:計算各層元素對系統目標的合成權重,并進行排序
現在把我們算出來的值填到最后的權重矩陣當中,并求出得分,就可以得到最優目標了,
層次分析法的一些局限性
① 評價的決策層不能太多,太多的話n會很大,判斷矩陣和一致矩陣的差異可能會很大,
②如果決策層中指標的資料是已知的,那我們就無法自己填寫資料,用層次分析法就不客觀了,就不能使用層次分析法了,要使用TOPSIS法,后面會具體介紹,
好了,層次分析法就介紹到這里了,大家喜歡的話可以點個關注支持以下,嘻嘻,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394143.html
標籤:AI
上一篇:pandas資料預處理(欄位篩選、query函式進行資料篩選、缺失值洗掉)、seaborn可視化分面圖(facet)、seaborn使用Catplot可視化分面箱圖(Faceted Boxplot)
