tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

子どもの保育園選びにAHP(階層分析法)を使ってみた話(の数学パート解説)

本記事は日曜数学 Advent Calendar 2023の1日目の記事です。


ご無沙汰しています。日曜数学者のtsujimotterです。

2022年12月に子どもが生まれまして、そこからブログや動画の投稿が滞っていたのですが、アドベントカレンダーの季節ということで久しぶりに復活しました。*1


今年も日曜数学アドベントカレンダーを立ち上げました。
adventar.org

明日話したくなる数学豆知識 (2014)から数えると、なんと 10年目 です。

今年の分も、おかげさまでブログ執筆時点で21件の方が登録してくれています。記事が投稿されるのを楽しみにしています!

残りの枠についても、よろしければご参加いただけると嬉しいです!


背景

可愛い我が子の保育園を決めたのですが、これがtsujimotter家にとってはなかなかの難問でした。

近所にはよさげな保育園が4つ(保育園A・B・C・Dと呼ぶことにします)ありました。
たとえば、保育園Aは家から激近ですが、保育士さんが少なかったりして安全性に少し不安がありました。保育園Bは家からちょっと遠いんですが活発で良い感じだなぁとか。

保育園を決めるにあたっていろいろな項目を考える必要があり、どうやって決めていいかわからん・・・。


そんなときに思いついたのが AHP(階層分析法) を使うことです。*2


AHP(Analytic Hierarchy Process、階層分析法)とは、複雑な状況での意思決定を行うための構造化法の1つで、1970年代にトーマス・サーティによって提案された手法です。以下のような特徴があります:

  • 目標達成に向けて、評価基準と代替案を階層的に分析する
  • 主観評価に基づく一対比較によって、意思決定のための数値化(重要度)を行う


AHPの具体的な手続きについては、今回の記事では省略しますが、以下の動画で具体的に解説しています。ぜひ一度ご覧ください:
www.nicovideo.jp


tsujimotter家では保育園の決定に、このAHPを用いてみたというわけです。実際、得られた一対比較行列は次のようになりました:

これを使って近隣の4保育園の重要度を決定し、実際の保育園の応募の際に役立てました。*3

その様子を日曜数学会というイベントの中でプレゼンしたのですが、それが上記の動画となっています。


今回考えたいこと:AHPの数学的背景

今日のテーマは、AHPという手法の数学的な背景を探ってみようという内容です。特に、AHPのキモは一対比較行列にありますので、一対比較行列に絞って考えてみましょう。


AHPの面白いところは、各項目に対して全順序が簡単にはつけられない問題に対しても、その順序を機械的につける方法を提供しているところです。すなわち重要度という一元的な指標で表すことが難しいときに、項目間の順序関係だけに限定して利用者に評価させることで、一対比較行列を作ることができます。

この一対比較行列からは、なんと各項目の重要度が機械的に計算できてしまうというのです。


上記の動画では、一対比較行列から重要度を計算する際に、一対比較行列の各行の「幾何平均」を用いていました。

より一般には、項目を  1, 2, \ldots, n とインデックスで表して、一対比較行列を
 \displaystyle A = (a_{ij}) = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}  \\ 
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix}

と表します。ここで、 a_{ij} は項目  j に対する項目  i の評価値を表します。
ここで、項目  i重要度  w_i を、一対比較行列の値の  i 行目に対する幾何平均

 \displaystyle h_i = \sqrt[n]{\prod_{j=1}^{n} a_{ij} }

を用いて

 \displaystyle w_{i} = \frac{h_i}{\sum_{i=1}^{n}h_i}

として計算します。これを幾何平均法と言います。

最後に  \sum_{i=1}^{n}h_i で割っているのは

 w_1 + w_2 + \cdots + w_n = 1

とするためです。 この「すべて足すと1になるように定数倍する操作」は規格化といって、今回の記事では何度も登場します。


動画では、まさにこの幾何平均法によって一対比較行列から重要度を決定していたのですが、この部分の計算に疑問を持った人は多いのではないでしょうか。
重要度を決めるのになぜ幾何平均なのだろうか。本当に幾何平均で良いのだろうか。


今日はこの問題について、納得がいくまで数学的なアプローチで挑みたいと思います。


一般論のための準備

この疑問に答える前に、まず一般論のための用語を定義したいと思います。
一対比較のことは一回忘れて、単に  n\times n 行列

 \displaystyle A = (a_{ij}) = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}  \\ 
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix}

を考えます。ここで、行列  A に対し次の①②の条件を仮定します。

① 任意の  i, j に対し  a_{ij} > 0 とする。
② 任意の  i, j に対し  a_{ij} = 1 / a_{ji} とする。

①の条件を満たす行列を正行列といいます。


①②を満たす行列  A のことを一般化された一対比較行列ということにしましょう。


AHPにおいて一対比較をした結果として得られる一対比較行列は、まさに上記の一般化された一対比較行列の定義を満たしていますね。

なお、「一般化された一対比較行列」とは本記事独自の用語であり、AHPの文献のおいては①②を満たす行列を単に「一対比較行列」とするようです。


一番シンプルなケースを考えよう①:幾何平均を考えるわけ

さて、幾何平均法の正当性を考える上で有効なのは、一番シンプルなケースを考えるというものです。

一番シンプルなケースというのは、重要度が明らかに分かっているケースです。
たとえば「家からの近さ」のような基準で考えたときに、保育園の重要度は単純に距離に比例しそうですよね。

すなわち、項目  i に対して重要度  w_i が既に分かっているとします。もちろんこのような場合は一対比較をする必要はありませんが、あえて一対比較をしたときに、どのような行列になるのかを考えてみましょう。なお、重要度は  w_i > 0(正の値)であり

 w_1 + w_2 + \cdots + w_n = 1(総和が  1

を満たすとします。このように「すべて足して1になるように調整すること」を規格化といいます。


実際、「重要度の比」を一対比較の評価値にすればよさそうです。つまり、項目  j に対する項目  i の評価値  a_{ij}

 \displaystyle a_{ij} = \frac{w_{i}}{w_{j}}

とするのです。これは「項目  j より項目  i の方が  w_{i} / w_{j} 倍よい」という、実に直感的な評価値となっています。



この場合の一対比較行列  W は次のようになります:

 \displaystyle W = (w_{i}/w_{j}) = \begin{pmatrix} w_{1} / w_{1} & w_{1} / w_{2} & \cdots & w_{1} / w_{n}  \\ 
w_{2} / w_{1} & w_{2} / w_{2} & \cdots & w_{2} / w_{n}  \\ 
\vdots & \vdots & \ddots & \vdots \\
w_{n} / w_{1} & w_{n} / w_{2} & \cdots & w_{n} / w_{n}  \\  \end{pmatrix}

後の議論に必要になりますが、この一対比較行列には推移律、すなわち項目  i, j, k に対し

 a_{ij} a_{jk} = a_{ik}

が成り立つことがわかります。

推移律の確認:
 \displaystyle a_{ij} a_{jk} = \frac{w_i}{w_j} \cdot \frac{w_j}{w_k} = \frac{w_i}{w_k} = a_{ik}


この一対比較行列に対して、幾何平均によって得られるベクトルを具体的に計算してみましょう。

 W i 行目のベクトルの幾何平均は

 \displaystyle h_i = \sqrt[n]{ \frac{w_i}{w_1}\cdot \frac{w_i}{w_2}\cdot \cdots \cdot \frac{w_i}{w_n} } = \frac{w_i}{\sqrt[n]{ w_1 \cdot w_2 \cdot \cdots \cdot w_n }}

となります。

 h_1, h_2, \ldots, h_n の総和を考えると

 \displaystyle \begin{align*} h_1 + h_2 + \cdots + h_n &= \frac{w_1 + w_2 + \cdots + w_n}{\sqrt[n]{ w_1 \cdot w_2 \cdot \cdots \cdot w_n }} \\
&= \frac{1}{\sqrt[n]{ w_1 \cdot w_2 \cdot \cdots \cdot w_n }} \end{align*}

となります。ここで  w_1 + w_2 + \cdots + w_n = 1 を使いました。

よって  h_i を規格化すると

 \displaystyle \frac{h_i}{h_1 + h_2 + \cdots + h_n} = \frac{w_i}{\sqrt[n]{ w_1 \cdot w_2 \cdot \cdots \cdot w_n }}\cdot \sqrt[n]{ w_1 \cdot w_2 \cdot \cdots \cdot w_n } = w_i

となり、重要度に一致します。


したがって、シンプルなケース(重要度の比を一対比較の評価値としたケース)においては、一対比較行列の各行の幾何平均を取ると項目の重要度  w_i がちゃんと得られるということがわかりました。

ちなみに、幾何平均の代わりに調和平均として同じことを計算しても、重要度が得られることがわかります。


一番シンプルなケースを考えよう②:重要度は実は固有ベクトルだった

重要度を並べて得られるベクトル

 \mathbf{w} = \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{pmatrix}

を考えます。これを重要度ベクトルと呼びましょう。この重要度ベクトルのもう一つの側面を紹介します。


唐突ですが、重要度ベクトル  \mathbf{w} に対して、先ほどの一対比較行列  W を掛けてみましょう。

面白いのでぜひ自分でも計算してみてほしいのですが、実際計算してみると次のようになります:

 \displaystyle \begin{align*} W\mathbf{w} &= \begin{pmatrix} w_{1} / w_{1} & w_{1} / w_{2} & \cdots & w_{1} / w_{n}  \\ 
w_{2} / w_{1} & w_{2} / w_{2} & \cdots & w_{2} / w_{n}  \\ 
\vdots & \vdots & \ddots & \vdots \\
w_{n} / w_{1} & w_{n} / w_{2} & \cdots & w_{n} / w_{n}  \\  \end{pmatrix} \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{pmatrix} \\
&=  \begin{pmatrix} w_1 + w_1 + \cdots + w_1 \\ w_2 + w_2 + \cdots + w_2 \\ \vdots \\ w_n + w_n + \cdots + w_n \end{pmatrix} \\
&= n\begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{pmatrix}  \\
&= n\mathbf{w}   \end{align*}

すなわち

 W \mathbf{w} = n\mathbf{w}

というわけです。行列  W \mathbf{w} にかけると、 \mathbf{w} のちょうど  n 倍になってしまいます。面白いですね!


言い換えると、重要度ベクトル  \mathbf{w} W の(固有値  n の)固有ベクトル だというわけですね。


さらにいうと、 W はランクが1であり、固有値が  n(多重度  1)と  0(多重度  n-1)だけであることも以下の議論によって分かります。

 W のランクが1であること:
 W の1行目の横ベクトル  (w_1/w_1, w_1/w_2, \ldots, w_1/w_n) に対して  w_2 / w_1 を掛けると2行目に一致する。同様に  w_i / w_1 を掛けると  i 行目の横ベクトルに一致する。
したがって、行基本変形によって、1行目以外のすべての行が 0 ベクトルになる。

 W の固有値が  n, 0 のみであること:
行列  B を次で定義する:

 \displaystyle B = \begin{pmatrix} 1/w_1 & 0 & \cdots & 0  \\ 
 -w_2/w_1 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
 -w_n/w_1 & 0 & \cdots & 1 \end{pmatrix}

この行列の逆行列  B^{-1}

 \displaystyle B^{-1} = \begin{pmatrix} w_1 & 0 & \cdots & 0  \\ 
 w_2 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
 w_n & 0 & \cdots & 1 \end{pmatrix}

であり

 \displaystyle BWB^{-1} = \begin{pmatrix} n & 1/w_2 & \cdots & 1/w_n  \\ 
 0 & 0 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
 0 & 0 & \cdots & 0 \end{pmatrix}

である。 BWB^{-1} W の相似変換になっているので、両者の固有方程式は等しい。

したがって  W のすべての固有値は、(重複度も込みで) BWB^{-1} の固有方程式を解けば得られる:

 \begin{align*} \operatorname{det}(BWB^{-1} - \lambda I) &= \begin{vmatrix} n - \lambda & 1/w_2 & \cdots & 1/w_n  \\ 
 0 &  - \lambda & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
 0 & 0 & \cdots &  - \lambda \end{vmatrix} \\
&= (n - \lambda) (-1)^{n-1} \lambda^{n-1} \end{align*}

より、 W の固有値は  n(重複度  1)と  0(重複度  n-1)のみである。


要するに一対比較行列  W は、固有値  n n に属する固有ベクトル  \mathbf{w} = (w_1, w_2, \ldots, w_n) を持つというわけです。

固有値  n の重複度が1なので、その固有空間も1次元であり、この固有ベクトルは定数倍を除いて一意に定まります。したがって、規格化の条件を与えれば、重要度ベクトルが固有ベクトルという性質によって特徴付けられるというわけですね。 \mathbf{w} = (w_1, w_2, \ldots, w_n) は重要度から由来するものなので、すべての要素がになっていることもポイントです。



以上によって、重要度の比で表されるシンプルな一対比較行列  W に関して言えば、次の2つのことが分かったというわけです。

  • 元々の重要度ベクトルは各行の幾何平均としても表される
  • 元々の重要度ベクトルは固有値  n に対する固有ベクトルとしても表される


実は、元々のサーティによって提唱されたAHPは、固有ベクトルを重要度とする方法でした。なので、ここからは固有ベクトルの方がむしろ重要度の定義だったという流儀で話を進めたいと思います。

今回の発表で紹介した幾何平均法は、シンプルなケースに限定して考えると固有ベクトルそのものが得られる手法になっています。より一般のケースにおいては、幾何平均によって固有ベクトルの近似を与える簡易計算手法だったといえそうです。


一般のケース①:最大固有値に対応する固有ベクトルは正でたった一つ

ここまでの話では、要素が重要度の比で表されるシンプルな一対比較行列の場合には、最大の固有値に対応する固有ベクトルが重要度に一致するということでした。


一般の一対比較行列に対しても、同じように考えられないでしょうか。

たとえば、重要度の比で表されるシンプルな一対比較行列にとても近い一対比較行列の場合は、その最大の固有値に対応する固有ベクトルのことを重要度と思ってもよさそうです。


一般の一対比較行列の場合も、その最大の固有値に対応する固有ベクトルを重要度ベクトルとしてしまおうというのがAHPの発想です。

しかし、このとき以下の疑問も生まれます:

  • そもそも最大の固有値に対応する固有ベクトルは(定数倍を除いて)一意に定まるか?
  • 固有ベクトルとして、要素がすべて正のものは取れるのか?

実際、固有ベクトルが複数あるならどれを選んだら良いのか分かりません。また、固有ベクトルが一意に定まったとしても、要素がマイナスのものであれば「重要度」として意味をなしません。



これらの疑問に対しては、実は線形代数の一般論による回答が得られています。それが ペロン=フロベニウスの定理 です。

ペロン=フロベニウスの定理
 A を正の正方行列とする(要素がすべて正ということ)。
このとき、 A のある正の固有値  \alpha が存在して次が成り立つ:

(i)  A の任意の固有値  \beta の絶対値に対して、 |\beta| < \alpha を満たす。
(ii) 固有値  \alpha の重複度は1であり、固有値  \alpha に属する正の固有ベクトル(要素がすべて正ということ)が存在する。
(iii)  \alpha 以外の固有値に属する正の固有ベクトルは存在しない。

(i) の条件から  \alpha のことを最大固有値と呼びます。(文字通り最大の固有値なので。)
最大固有値を  \lambda_{\text{max}} と表すことにします。


これらがまさに答えになっていることがわかるでしょうか。
一般化された一対比較行列  A は定義より正の正方行列なので、ペロン=フロベニウスの定理の仮定を満たします。

したがって、 A の最大固有値  \lambda_{\text{max}} が存在して (i) を満たします。

(ii) より \lambda_{\text{max}} に属する正の固有ベクトルが存在します。さらに重複度が1なので、固有空間は1次元であり、定数倍を除いて一意に定まります。総和が1になるよう規格化したものを  \mathbf{w} としておきましょう。このような固有ベクトルを主固有ベクトルといいます。

(iii) から正の固有ベクトルはこれ以外に存在しないことも分かります。


すなわち、条件を満たす正の固有ベクトルは  \mathbf{w} だけということになりますね。これを一対比較行列  A から定まる重要度ベクトルとしてしまおうというわけです。


ペロン=フロベニウスの定理すごいですね!

ペロン=フロベニウスの定理の証明はかなり難しいのですが、Web上だと次のページにまとまっています。
math-note.xyz



一般のケース②:推移律が成り立つ場合は・・・

一般のケースとシンプルなケースの間にどの程度の「差」があるのかについて考えたいと思います。

実際、次の定理が成り立ちます:

定理
 A を一般化された一対比較行列としする。このとき、 A の最大固有値  \lambda_{\text{max}} は不等式
 \lambda_{\text{max}} \geq n
を満たす。

これは大変興味深い定理ですね。

シンプルなケースの一対比較行列  W においては、最大固有値に関して等号

  \lambda_{\text{max}} = n

が成り立っていたところですが、一般のケースの一対比較行列  A ではそれが不等号

 \lambda_{\text{max}} \geq n

になるというわけです。


証明は次のようになされます。


(証明)
 A の主固有ベクトル(最大固有値  \lambda_{\text{max}} に対応する正の固有ベクトル)を  \mathbf{w} = (w_1, w_2, \ldots, w_n)^T とすると

 A\mathbf{w} = \lambda_{\text{max}}\mathbf{w}

が成り立つ。成分で考えると  i = 1, 2, \ldots, n に対して

 \displaystyle \sum_{j=1}^{n} a_{ij} w_j = \lambda_{\text{max}}w_i

が成り立つ。左辺に  \lambda_{\text{max}} が来るように整理すると

 \displaystyle \lambda_{\text{max}} = \sum_{j=1}^{n} a_{ij} \frac{w_j}{w_i}

となる。

上記は  i = 1, 2, \ldots, n n 本の式であるが、これらをすべて足し合わせると

 \displaystyle n\lambda_{\text{max}} = \sum_{i=1}^{n} \sum_{j=1}^{n} a_{ij} \frac{w_j}{w_i}

となる。

右辺に関して、 i = j の部分と  i \neq j の部分に分けて考えると、次のように式変形できる:

 \displaystyle \begin{align*} n\lambda_{\text{max}} &= \sum_{i=1}^{n} a_{ii} + \sum_{i\neq j} a_{ij} \frac{w_j}{w_i} \\
&= n + \sum_{i < j} \left(a_{ij} \frac{w_j}{w_i} + \frac{1}{a_{ij}}\frac{w_i}{w_j} \right) \end{align*}

最後の等式では  a_{ii} = 1, \;\; a_{ji} = 1 / a_{ij} を使った。一対比較行列  A や固有ベクトル  \mathbf{w} が正であることから  y_{ij} > 0 がいえる。

ここで、 y_{ij} = a_{ij}\frac{w_j}{w_i} とおいて両辺  n で割ると

 \displaystyle \begin{align*} \lambda_{\text{max}} =  1 + \frac{1}{n}\sum_{i < j} \left(y_{ij} + \frac{1}{y_{ij}} \right) \end{align*}

となる。 y_{ij} > 0 であることと、相加平均と相乗平均の関係  y_{ij} + \frac{1}{y_{ij}} \geq 2 \sqrt{ y_{ij} \cdot \frac{1}{y_{ij}}} から

 \displaystyle \begin{align*} \lambda_{\text{max}} &=  1 + \frac{1}{n}\sum_{i < j} \left(y_{ij} + \frac{1}{y_{ij}} \right) \\
&\geq 1 + \frac{1}{n}\sum_{i < j} 2 \sqrt{ y_{ij} \cdot \frac{1}{y_{ij}}} \\
&= 1 + \frac{1}{n}\sum_{i < j} 2  \\
&= 1 + \frac{1}{n} \cdot 2 \cdot \frac{n(n-1)}{2} \\
&= 1 + (n-1) \\
&= n \end{align*}

が得られる。よって、 \lambda_{\text{max}} \geq n が示された。

(証明終わり)


相加平均・相乗平均の関係

 \displaystyle y_{ij} + \frac{1}{y_{ij}} \geq 2 \sqrt{ y_{ij} \cdot \frac{1}{y_{ij}}}

が証明のポイントだったわけですが、等号成立条件は  y_{ij} = 1 / y_{ij} でした。


ここから面白いことがわかります。

 y_{ij} = 1 / y_{ij} y_{ij} > 0 より  y_{ij} = 1 が得られます。 y_{ij} の定義より

 \displaystyle a_{ij}\frac{w_j}{w_i} = 1

すなわち

 \displaystyle a_{ij} = \frac{w_i}{w_j}

が成り立つわけです。これはまさにシンプルなケースの一対比較行列ですね!



つまり、こういうことが言えたというわけです:

  • (前節までの議論)各要素を重要度の比によって定義された一対比較行列  W の場合、最大固有値は  \lambda_{\text{max}} = n
  • (今わかったこと)一般化された一対比較行列  A に対して、最大固有値が  \lambda_{\text{max}} = n を満たすならば、 A はその主固有ベクトル  \mathbf{w} の要素の比によって得られる


実は、 \lambda_{\text{max}} = n なる条件は、推移律(任意の成分について  a_{ik} = a_{ij} a_{jk})とも同値であることが知られています。

この部分の証明が分からなくて、悩んでいたんですが時間もないので一旦公開します。

要するに、推移律が成り立つような完全に整合的な一対比較を行うと、それはすなわち  W に一致するというわけです。面白いですね!


整合度について

以上の議論によって

  •  \lambda_{\text{max}} = n のとき一対比較行列は完全に整合的
  •  \lambda_{\text{max}} > n のとき一対比較行列は整合的ではない

ということが分かりました。

そこで、 \lambda_{\text{max}} n の差をとったこんな指標を考えたくなります:

 \displaystyle C.I. = \frac{\lambda_{\text{max}} - n}{n-1}

これを整合度(Consistency Index)といいます。

C.I.が大きくなれば不整合で、0であれば完全に整合的であるというわけです。経験則的に、C.I.が0.1〜0.15以下であればよいという基準があるそうです。


なお、C.I.を計算する際には、最大固有値  \lambda_{\text{max}} を計算する必要がありますが、固有値の計算をするのは  n が大きければ大きいほど面倒になります。

固有値を厳密に求める代わりに、近似的に求める方法があります。これもやはり幾何平均法を活用する方法なのですが、以下の手順で行います。


まず、一対比較行列  A i 行目の幾何平均を  h_i とし、 w_i = h_i / (h_1 + h_2 + \cdots + h_n) を要素とするベクトルを  \mathbf{w}' とします。これが幾何平均法による(近似的な)主固有ベクトルの求め方でした。

これが主固有ベクトルの近似になっているはずなので

 \displaystyle A\mathbf{w}' \fallingdotseq \lambda_{\text{max}} \mathbf{w}'

が成り立つはずです。要素で表すと

 \displaystyle \sum_{j=1}^{n} a_{ij}w_j \fallingdotseq \lambda_{\text{max}} w_i

が成り立ちます。よって  w_i で割って

 \displaystyle \lambda_{\text{max}}  \fallingdotseq  \sum_{j=1}^{n} a_{ij}\frac{w_j}{w_i}

とすれば、 \lambda_{\text{max}} が近似的に得られるはずです。

実際は、各行  i について、上式の右辺を計算して、その(算術)平均を取ることで  \lambda_{\text{max}} を近似的に得るというのが実際の計算方法です。



というわけで、保育園の決定に使った一対比較行列について最大固有値を近似的に求めて、ここからC.I.を計算してみましょう。

まずは、評価基準5つに関する一対比較行列です。結果はこちら。

最大固有値の近似値は

 \lambda_{\text{max}} \fallingdotseq 5.63

となりました。

これを使って整合度を計算すると

 \displaystyle C.I. = \frac{\lambda_{\text{max}} - 5}{5-1} \fallingdotseq 0.156

となります。

あれ?


C.I.の基準として、0.1〜0.15以下だとよいとのことでしたが、なんと0.15を超えてしまいました・・・。

これはどういうことかというと、我々の入力した一対比較の値が十分整合的ではなかったということです。

整合的とは、 a_{ik} a_{ij} \times a_{jk} になっているということです。厳密に一致することはないにせよ、近い値にもなっていなかったというわけですね。

では、どの部分が整合的ではなかったのでしょうか。

これを頑張って目視で探そうとしてもなかなか大変です。実際には次のような方法が使えます。

  • 現在得られた  A の重要度(幾何平均の結果)から  W(重要度の比を要素に持つ行列)を計算する

 W が理想的な一対比較だと思えるわけですね。

  • 理想と実際の差を考えるために  W - A を計算する。

差が大きいところを考えると、例えば「近さに対する安全性の評価値」は  -3.41 程度となっていますね。これは、 A に設定された「近さに対する安全性の評価値」が高すぎることを意味します。

  • 元々の  A に対して  W と差が大きい要素を修正する(以上を繰り返す)

というわけで「近さに対する安全性の評価値」を修正することにします。たしかに、近さに対する安全性の評価が高すぎたなぁと反省して、 5 \to 2 へと変更してみます。対応して「安全性に対する近さの評価値」を  1/5 \to 1/2 と変更します。

すると、整合性の値は一気に小さくなって、 C.I. \fallingdotseq 0.068 になりました。めでたしめでたし。


実際は、毎回ここまでうまくいくわけではないですが、このような処理を繰り返していくことで整合的な行列にすることができるわけですね。

もちろん値を変更する際には、ただ機械的に  W - A の分だけ修正するのではなく、自分の頭で考えて一対比較の値を決め直すということが必要です。


まとめ

今回はAHPの背景にある数学的な仕組みについて解説してみました。

AHPの重要度は、最大固有値に対応する固有ベクトルだったというのが一番のポイントでした。そもそも、そんなちょうどいい固有ベクトルがあるということ自体が非自明なわけですが、それはペロン=フロベニウスの定理によって保証されているのでした。面白いですね。

そして問題になっていた幾何平均法は、その固有ベクトルを近似的に計算するための方法だったというわけですね。完全に整合的なときに限り、その近似的な重要度ベクトルと固有ベクトルがピッタリ一致するというのも面白いです。

整合的でない場合は、最大固有値の値の差を利用して整合性の度合いを計算することができ、ここから修正すべき要素まで特定できるということでした。


というわけでいかがだったでしょうか。AHPは思った以上に数学的な背景が詰まっていて面白かったですね。楽しんでいただけたら幸いです。


日曜数学アドベントカレンダーは明日以降も続きますので、ぜひお楽しみに!

次回は、Taichi Aokiさんの記事を予定しています。

それでは!!


adventar.org

*1:本当にアドベントカレンダーぶりの投稿でした・・・。

*2:私が大学時代に所属していた研究室では、2つ上の先輩がAHPの研究をしていました。その先輩の発表はゼミで何度も聞いていたので、AHPの手順には親しんでいました。とはいえ、今まで実際に自分の問題に使ったことがなかったのですが、今回の保育園の選定に活用しようと思ったわけです。

*3:念の為言及しますが、一対比較の値を決める作業は妻と一緒に行っていますし、出来上がった結果に対しては双方納得の上で活用しています。