中国十大流量网站论坛外链代发
本来觉得层次分析法相关的文章多如牛毛,并没有什么讲解的必要,但是突然发现大部分文章对于原理性的分析完全掠过,这里进行一个详尽的分析。这篇文章主要讲解一下以下几个内容:
- 何为矩阵一致性?
- CI=(λmax−n)/(n−1)CI=(\lambda_{max}-n)/(n-1)CI=(λmax−n)/(n−1)为什么减的是n?
- 为什么是(λmax−n)(\lambda_{max}-n)(λmax−n)不是(n−λmax)(n-\lambda_{max})(n−λmax)?
- CI=(λmax−n)/(n−1)CI=(\lambda_{max}-n)/(n-1)CI=(λmax−n)/(n−1)为什么除的是(n-1)?
- 何为RIRIRI?
何为矩阵一致性?
人的感觉是不准确的,我们已经假设A比B牛逼2.5倍,假设B比C牛逼3.5倍,按照常理来说A比C牛逼8.75倍,但人不是机器,感觉不是数值,有些人可能会觉得A比C牛逼一大截,但是这个倍数可能是5倍可能是10倍,甚至有一些人可能会认为A不如C。
因此一致性检验就是检验你的人为判断是不是合理,判断你有没有“猫抓老鼠、大象克猫,老鼠克大象”这样循环克制的离谱判断:
因此,何为具有完全一致性的判断矩阵?
假设你各个指标的权重为ω1,ω2,…,ωn\omega_1,\omega_2,\dots,\omega_nω1,ω2,…,ωn,那么你的判断矩阵就应该是:
A=[ω1ω1ω1ω2…ω1ωnω2ω1ω2ω2…ω2ωn⋮⋮⋱⋮ωnω1ωnω2…ωnωn]=[1ω1ω2…ω1ωnω2ω11…ω2ωn⋮⋮⋱⋮ωnω1ωnω2…1]A=\begin{bmatrix} \frac{\omega_1}{\omega_1}&\frac{\omega_1}{\omega_2}&\dots&\frac{\omega_1}{\omega_n}\\ \frac{\omega_2}{\omega_1}&\frac{\omega_2}{\omega_2}&\dots&\frac{\omega_2}{\omega_n}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\omega_n}{\omega_1}&\frac{\omega_n}{\omega_2}&\dots&\frac{\omega_n}{\omega_n}\\ \end{bmatrix}= \begin{bmatrix} 1&\frac{\omega_1}{\omega_2}&\dots&\frac{\omega_1}{\omega_n}\\ \frac{\omega_2}{\omega_1}&1&\dots&\frac{\omega_2}{\omega_n}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\omega_n}{\omega_1}&\frac{\omega_n}{\omega_2}&\dots&1\\ \end{bmatrix} A=⎣⎢⎢⎢⎡ω1ω1ω1ω2⋮ω1ωnω2ω1ω2ω2⋮ω2ωn……⋱…ωnω1ωnω2⋮ωnωn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡1ω1ω2⋮ω1ωnω2ω11⋮ω2ωn……⋱…ωnω1ωnω2⋮1⎦⎥⎥⎥⎤
RI是如何和n扯上关系的?
分两种情况讨论,一种是判断矩阵具有完全一致性,所有列都是权重向量的倍数,另一种则是大部分情况下的不具有完全一致性的判断矩阵,此时秩不为1,但是依旧是正互反的(对角线两侧数值互为倒数且均为正数)。
具有一致性的判断矩阵,此时秩一矩阵的性质,小学二年级都可以倒背如流,因为秩一,所以只有一个非零特征值,而原本的权重向量就是非零特征值对应的特征向量,而判断矩阵的特征值就是矩阵的大小n。浅浅的证明一下:
定理1:具有一致性的正互反矩阵最大特征值等于矩阵阶数n
[1ω1ω2…ω1ωnω2ω11…ω2ωn⋮⋮⋱⋮ωnω1ωnω2…1][ω1ω2⋮ωn]=[ω1ω2⋮ωn][1ω11ω2⋯1ωn][ω1ω2⋮ωn]=[ω1ω2⋮ωn]n\begin{bmatrix} 1&\frac{\omega_1}{\omega_2}&\dots&\frac{\omega_1}{\omega_n}\\ \frac{\omega_2}{\omega_1}&1&\dots&\frac{\omega_2}{\omega_n}\\ \vdots&\vdots&\ddots&\vdots\\ \frac{\omega_n}{\omega_1}&\frac{\omega_n}{\omega_2}&\dots&1\\ \end{bmatrix}\begin{bmatrix} \omega_1\\ \omega_2\\ \vdots\\ \omega_n\\ \end{bmatrix}=\begin{bmatrix} \omega_1\\ \omega_2\\ \vdots\\ \omega_n\\ \end{bmatrix} \begin{bmatrix} \frac{1}{\omega_1}&\frac{1}{\omega_2}&\cdots\frac{1}{\omega_n} \end{bmatrix} \begin{bmatrix} \omega_1\\ \omega_2\\ \vdots\\ \omega_n\\ \end{bmatrix}=\begin{bmatrix} \omega_1\\ \omega_2\\ \vdots\\ \omega_n\\ \end{bmatrix}n ⎣⎢⎢⎢⎡1ω1ω2⋮ω1ωnω2ω11⋮ω2ωn……⋱…ωnω1ωnω2⋮1⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡ω1ω2⋮ωn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡ω1ω2⋮ωn⎦⎥⎥⎥⎤[ω11ω21⋯ωn1]⎣⎢⎢⎢⎡ω1ω2⋮ωn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡ω1ω2⋮ωn⎦⎥⎥⎥⎤n
欸,简直不要太简单。
对于更普遍的情况,我们并不只有一个非0特征值,但是,对角线都是1这个性质还在啊。小学一年级都知道,矩阵的迹等于矩阵的特征值之和,矩阵的迹那就是n个1相加那就是n啊,那么显然就有:
∑i=1nλi=n\sum_{i=1}^{n}\lambda_i=n i=1∑nλi=n
那么!!!
λmax−n=λmax−∑i=1nλi\lambda_{max}-n=\lambda_{max}-\sum_{i=1}^{n}\lambda_i λmax−n=λmax−i=1∑nλi
即(λmax−n)(\lambda_{max}-n)(λmax−n)为扣除最大特征值的,其他特征值和的相反数,嗯?相反数???这什么情况,难道正互反矩阵的最大特征值一定大于n所以其他特征值之和为负数所以要取个相反数??
定理2:正互反矩阵不具有完全一致性时,其最大特征值大于矩阵阶数n
假设A不具有完全一致性,此时假设其最大特征值λmax\lambda_{max}λmax对应的特征向量为[x1,x2,…,xn]T[x_1,x_2,\dots,x_n]^T[x1,x2,…,xn]T,即:
A[x1x2⋮xn]=λmax[x1x2⋮xn]A\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n\\ \end{bmatrix}=\lambda_{max}\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n\\ \end{bmatrix} A⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=λmax⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
[ai1ai2…ain][x1x2⋮xn]=λmaxxi\begin{bmatrix} a_{i1}&a_{i2}&\dots&a_{in} \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n\\ \end{bmatrix}=\lambda_{max}x_i [ai1ai2…ain]⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=λmaxxi
假设此时存在矩阵EEE,满足eij=aijxjxie_{ij}=a_{ij}\frac{x_j}{x_i}eij=aijxixj,那么此时矩阵EEE也就是正互反的:
eij−1=(aijxjxi)−1=eij−1xixj=ajixixj=ejie_{ij}^{-1}=\left(a_{ij}\frac{x_j}{x_i}\right)^{-1}=e_{ij}^{-1}\frac{x_i}{x_j}=a_{ji}\frac{x_i}{x_j}=e_{ji} eij−1=(aijxixj)−1=eij−1xjxi=ajixjxi=eji
此时有:
∑j=1neij=∑j=1naijxjxi=∑j=1naijxjxi=λmaxxixi=λmax\sum_{j=1}^ne_{ij}=\sum_{j=1}^na_{ij}\frac{x_j}{x_i}=\frac{\sum_{j=1}^na_{ij}x_j}{x_i}=\frac{\lambda_{max}x_i}{x_i}=\lambda_{max} j=1∑neij=j=1∑naijxixj=xi∑j=1naijxj=xiλmaxxi=λmax
同时又因为当x>0,x≠1x>0,x\neq1x>0,x=1时有x+1x>2x+\frac{1}{x}>2x+x1>2:
nλmax=∑i=1n∑j=1neij=∑i=jeij+∑i≠jeij=n+∑i>j(eij+eij−1)>n+12(n2−n)×2=n2\begin{aligned} n\lambda_{max}&=\sum_{i=1}^n\sum_{j=1}^ne_{ij}\\ &=\sum_{i=j}e_{ij}+\sum_{i\neq j}e_{ij}\\ &=n+\sum_{i>j}(e_{ij}+e_{ij}^-1)\\ &>n+\frac{1}{2}(n^2-n)\times 2\\ &=n^2 \end{aligned} nλmax=i=1∑nj=1∑neij=i=j∑eij+i=j∑eij=n+i>j∑(eij+eij−1)>n+21(n2−n)×2=n2
因而λmax>n\lambda_{max}>nλmax>n.
因此,(λmax−n)(\lambda_{max}-n)(λmax−n)为扣除最大特征值的,其他特征值和的绝对值,而因为其他值有(n−1)(n-1)(n−1)个,因此(λmax−n)/(n−1)(\lambda_{max}-n)/(n-1)(λmax−n)/(n−1)可以看作其他特征值平均值的绝对值。由于矩阵如果具有完全一致性,其他特征值将会均为零,因而CI=(λmax−n)/(n−1)CI=(\lambda_{max}-n)/(n-1)CI=(λmax−n)/(n−1)数值越小,说明矩阵具有越强的一致性。
何为RI?
CI=(λmax−n)/(n−1)CI=(\lambda_{max}-n)/(n-1)CI=(λmax−n)/(n−1)数值越小,说明矩阵具有越强的一致性。那么小到何种程度我们才能说明判断矩阵是可以用的,说明这个人整体的判断是没问题的?我们要和啥子做对比呢。。。因此有了RI这个东西,即CI的期望,那么CIRI<0.1\frac{CI}{RI}<0.1RICI<0.1不就意味着CI<0.1E[CI]CI<0.1E[CI]CI<0.1E[CI]
我们可以通过随机构造大量元素数值为{9,8,…2,1,1/2…,1/8,1/9}\{9,8,\dots2,1,1/2\dots,1/8,1/9\}{9,8,…2,1,1/2…,1/8,1/9}的正反对称矩阵,求取其CICICI并计算其平均值,可以编写代码如下(有误差,可能由于随机数生成机制导致,实际使用时建议查表获取)
function RI=getRI(n)
times=100000;
CIs=zeros(1,times);
for t=1:timesCI=getCI(n);CIs(t)=CI;
end
RI=mean(CIs);function CI=getCI(n)A=eye(n);Rmat=[9 8 7 6 5 4 3 1 2 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9];for i=1:n-1for j=i+1:nrandNum=randi(17);A(i,j)=Rmat(randNum);A(j,i)=Rmat(18-randNum); end endlam=max(eig(A));CI=(lam-n)/(n-1);end
end
虽然不是很重要,但是也给个层次分析法代码叭:
A=[1 2 3 4;1/2 1 1 2;1/3 1 1 1;1/4 1/2 1 1];
%这里输入你要分析的A矩阵,这里随便输入了一个n=size(A,1); % 获取矩阵阶数
[V,E]=eig(A);% 求特征向量及特征值
[~,ind]=find(E==max(E,[],[1,2]));% 最大特征值对应特征向量
W=V(:,ind);
W=W./sum(W);CI=(E(ind,ind)-n)/(n-1);
RI=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45];CR=CI/RI(n);% 计算相对误差
if CR<0.1 % 如果CR小于0.1则可以接受disp('此矩阵的一致性可以接受!');disp('CI=');disp(CI);disp('CR=');disp(CR);disp('W=');disp(W);
elsedisp('此矩阵的一致性不可以接受!');
end