评价类模型——层次分析法

评价类模型——层次分析法

注:以下故事纯属虚构,部分背景及人物姓名设定借用《你好,旧时光》这部剧,但与原剧基本无关,如有情节雷同,纯属巧合。

Q:余周周同学遇到三位追求者,这三位候选人分别是:温淼,林杨,奔奔。作为一个“数学大神”,她决定以“完全的理性”去考察评价三位同学,从而选出那个“最优秀”的男孩儿。她知道,评价一个人是很难的,但评价一个人的“特性”还是可以的。
q1:评价任何一件事物,肯定要通过某些指标/准则才行。哪些指标能够反映出男生的可靠与否呢?
A:通过查阅资料以及生活经验,她总结了以下五点:

  • 身高
  • 颜值
  • 学历
  • 价值观(指契合程度)
  • 真诚度(有多喜欢?)

层次结构图表示就是:
评价类模型——层次分析法_第1张图片

q2:那么问题来了,除了身高是确切客观的定量化指标外,其它指标都不够“硬核”,主观因素很大,因而本着“绝对理性”的态度,必须将其“定量化”(客观化),该怎么办呢?
A:周周学霸指出,单看任何一个人,都无法知道他是高还是矮,是胖还是瘦,是热情还是高冷。故而要想将定性的指标转化为定量的、可衡量的指标,必须通过比较才行。下面我们就来详细比较一下三位男生:

温淼 林杨 奔奔
身高
颜值
学历
价值观
真诚度

这时,周周发现了一个很严重的问题,那就是这五个指标在她心里的重要程度并不都是一样的,就比如,她身高168cm,已经够高了,男生高不高无所谓,至于颜值,她也不是特别看中;但是作为学霸的她,很难接受一个智力平平的男朋友等。经过上述思考,她决定给这五个指标都赋予一个权重系数,于是她又画了一个新的表格,并填写了权重系数:

权重系数 温淼 林杨 奔奔
身高 0.1
颜值 0.1
学历 0.2
价值观 0.3
真诚度 0.3

接下来就是查阅资料填表啦,通常情况下,每个指标的得分应该由专家给出。但是呢,她发现选男票这个问题比较特殊,她自己才是最有发言权的专家。那么结合日常学习生活中对三位同学的观察与交流,凭感觉 给出了如下得分:

权重系数 温淼 林杨 奔奔
身高 0.1 0.2 0.3 0.5
颜值 0.1 0.4 0.4 0.2
学历 0.2 0.4 0.5 0.1
价值观 0.3 0.3 0.3 0.4
真诚度 0.3 0.2 0.4 0.4

通过Excel表格计算,她得出三位男孩儿的最终得分:

  • 温淼:0.29
  • 林杨:0.38
  • 奔奔:0.33

“看来林同学才是我的真命天子呀!”她小声嘀咕道。

“等等,感情大事岂能轻易决定?”,博学多识的汪同学走过来插话道,“柏拉图告诉我们,感觉 这东西是不可靠的。你的”权重系数“这个想法很棒,但是呢,在关键的填写具体系数的过程中,你还不够理性,也就是说,定量化程度还不够高,衡量的结果也不够精确。”

“你说得对,那汪同学有什么妙招么?”余同学微笑道。

“没想到余学霸也有困惑的时候,能给你答疑解惑,在下真是不胜荣幸 ^ _ ^”
汪同学继续说道:“其实办法也很简单哦,之前你也已经想到了——比较。只不过你是一次性比较了这五个指标,这样难免考虑不周,凭感觉的成分还很大。如果你能两个两个指标先比较,然后再根据两两比较的结果 推算 出权重系数,那样的话不就更准确了吗?"

“哇,不愧是汪神,真是醍醐灌顶呐!”余周周恍然大悟道。


经过汪神的点播,余周周同学决定继续沿着“定量化描述”的道路前进。她画出了一张重要程度指数图
评价类模型——层次分析法_第2张图片
本着两个两个指标进行比较的原则,她又画出了“权重系数”的两两指标比较图:

权重系数 身高 颜值 学历 价值观 真诚度
身高 1 1/2 1/4 1/6 1/8
颜值 2 1 1/5 1/7 1/9
学历 4 5 1 1/3 1/5
价值观 6 7 3 1 1/2
真诚度 8 9 5 2 1

学过线性代数的她知道,这实际上是一个5*5的正互反矩阵(所有数都是正数,且aij=1/aji)。但是呢,她画这个表格是用来判断每个指标的权重系数究竟有多大,所以她又取了一个名字,叫“判断矩阵”。
依葫芦画瓢,三位男生在身高、颜值、学历、价值观、真诚度五个指标的判断矩阵分别为:

身高 温淼 林杨 奔奔
温淼 1 1/3 1/5
林杨 3 1 1/3
奔奔 5 3 1
颜值 温淼 林杨 奔奔
温淼 1 2 5
林杨 1/2 1 2
奔奔 1/5 1/2 1
学历 温淼 林杨 奔奔
温淼 1 1/2 5
林杨 2 1 8
奔奔 1/5 1/8 1
价值观 温淼 林杨 奔奔
温淼 1 1 1/4
林杨 1 1 1/4
奔奔 4 4 1
真诚度 温淼 林杨 奔奔
温淼 1 1/3 4
林杨 3 1 1
奔奔 1/4 1 1

那么接下来就该计算这三位同学的得分啦。诶,一向对数字敏感的她在真诚度的判断矩阵 中发现了一个逻辑错误,那就是:

  • 温淼=1/3林杨
  • 林杨=奔奔
  • 温淼=4奔奔

什么情况?前两个表达式的意思是温淼没有林杨真诚,而林杨和奔奔真诚度相当,按照逻辑推演,得到的结果应该是林杨和奔奔都比温淼真诚才对。可是第三个表达式的意思却是温淼比奔奔真诚好多。想到这里,她发现了这个矩阵在逻辑上存在前后矛盾的情况,为什么会这样呢??

继续思考发现,这是两两比较的缺陷,局部比较综合在一起容易出现前后逻辑矛盾的谬论。想到这里,她不免感到后怕,难不成前面几个判断矩阵也有这样的问题么??有什么办法可以检测被构造出来的判断矩阵是否存在逻辑矛盾呢??

“汪同学,这是怎么回事??判断矩阵有BUG?”余周周问道。
“哈哈,你构造的判断矩阵出现了前后不一致的现象吧!”汪神笑着说。
“你怎么知道?”
“因为这都是先人踩过的坑啊!”汪神继续说道,“你想一下什么情况下不会出现前后矛盾(即a>b,b=c,c "emmm,如果把温淼=4奔奔改成温淼=1/4奔奔就好了嘛?”
“是的,但是呢,还不够一致
“你的意思是???哦,我懂了,假设温淼是A,林杨为B,奔奔为C;那么当A=1/3B,B=C时,A应该等于1/3C而不是1/4C,这样才没有任何矛盾!”

“聪明的余小姐,果然一点就透呐^ _ ^”汪神微笑着说道。
“那么继续推广可以知道,要想得到毫无逻辑矛盾的一致矩阵,就需要在正互反矩阵的基础上满足以下条件:
评价类模型——层次分析法_第3张图片
换句话说:
在这里插入图片描述

“哇,不愧是数学系的小才女,你的推论很对。我想你应该也察觉到了,构造权重系数并将定性问题定量化描述并不是一件很容易的事,在某种程度上仍然是人拍脑袋拍出来的结果,所以才会出现前后自相矛盾的情况,可见人的 感觉 或者说大脑的直觉是很不可靠的!实际上,完美的一致矩阵是很难被人为构造出来的,但是我们可以通过一致性检验来检查你所构造出来的判断矩阵到底有多接近完美的一致矩阵,换句话说,可以检测你所构造出来的判断矩阵BUG多不多,前后自相矛盾的程度有多大!”汪达补充道。

“原来如此,是不是当我构造出来的判断矩阵矛盾越少,越接近一致矩阵时,我计算出的权重系数等得分越准确?”周周追问道。

“YES”汪达点头示意,并继续说道:“一致性检验有三步,分别是:
评价类模型——层次分析法_第4张图片

其中符号的意义为:在这里插入图片描述,一致性检验的具体过程及原理,你可以看一些专门的教材,比如姜启源《数学模型》(第五版)第七章的内容或者参考一些作者的原论文。哦对了,你迄今为止无意间使用的方法其实已经有名字了,它叫做层次分析法,重新造轮子的感觉是不是很爽呀!时间不早了,我先去吃饭啦,回见。”

“哈哈哈,我明白了,真是太谢谢你了,回头请你喝奶茶(* ^ ﹏ ^ *) ”周周开心地说到。


经过以上分析讨论,余周周准备进入最后一部分——计算每个判断矩阵的权重。但是呢,她发现这个计算量有点大,手算肯定不可能。于是她决定向她的追求者之一,也就是她的青梅竹马林杨同学寻求帮助。

“呦,林同学在忙什么呢?来帮我个忙吧!?”余同学委婉地说道。

“周周,只要你开口,就没有我林扬办不到的事!”林杨自信地回答道。

“帮我编程计算一下这五个判断矩阵的权重。”

林杨一看,特么直接懵逼,没想到当男生的竞争压力这么大。

“看来我得好好露一手,说不定还能提高我在她心中的地位(* ^ ▽ ^ *)”林杨心里暗想。
“那具体的计算方法是什么呢?”林杨问道。
“有三种计算方法,分别是:算术平均法,几何平均法,特征值法。”,余周周继续说道,“先说算术平均法,看下图:
评价类模型——层次分析法_第5张图片

那么几何平均法
评价类模型——层次分析法_第6张图片
特征值法则是:
评价类模型——层次分析法_第7张图片

“没问题,给我半天时间,用MATLAB给你实现出来。”林扬信誓旦旦的回道。


代码来了:

%%
%判断矩阵一致性检验
clc;
[V,D]=eig(A);   %求特征值和特征向量,V存放特征向量,D存放特征值
Max_eig=max(max(D));   %取D中最大特征值
CI=(Max_eig-n)/(n-1);   %计算一致性指标CI
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];  %存放平均随机一致性指标
CR=CI/RI(n);   %计算一致比例
% 如果CR < 0.1, 则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
    disp('因为CR < 0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end
%%
%方法1:算术平均法求权重
sum_A=sum(A);    %对矩阵所在列作和
SUM_A=repmat(sum_A,n,1);    %将sum_A看做一个整体,重复n*1块
stand_A=A./SUM_A;   %A和SUM_A矩阵对应行相除;即将判断矩阵按照列归一化
disp('算术平均法求权重的结果为:');
disp(sum(stand_A,2) / n)
%%
%方法2:几何平均法求权重
Prduct_A = prod(A,2);   %将A的元素按照行相乘得到一个新的列向量
% prod函数和sum函数类似,一个用于乘,一个用于加  dim = 2 维度是行
Prduct_n_A = Prduct_A .^ (1/n);% 这里对每个元素进行乘方操作,这里是开n次方,所以我们等价求1/n次方
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))
%%
%方法3:特征值法求权重
[r,c] = find(D == Max_eig , 1);   % 找到D中第一个与最大特征值相等的元素的位置,记录它的行和列。
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )  %对求出的特征向量进行归一化即可得到我们的权重

"怎么样?好人做到底,送佛上西天,一致性检验的步骤我都帮你给实现了,嘿嘿!“林杨得意地说道。
“呦,林同学这么热心,那再给你多加几分吧!”周周开心地说,“计算完五个判断矩阵的权重之后,将其填入下面这个矩阵中并计算你们三个的最终得分!”

结果如下:

权重系数 温淼 林杨 奔奔
身高 0.1325 0.1325 0.1325 0.1815
颜值 0.1426 0.1426 0.1426 0.3028
学历 0.2356 0.2356 0.2356 0.2356
价值观 0.3028 0.3028 0.3028 0.1426
真诚度 0.1815 0.1815 0.1815 0.1325

某位男生的最终得分计算公式=身高的权重系数x该男生的身高指标 + 颜值的权重系数x该男生的颜值指标 + 学历的权重系数x该男生的学历指标 + 价值观的权重系数x该男生的价值观指标 + 真诚度的权重系数*该男生的真诚度指标

(完)


笔者按:数据纯属瞎填,无任何现实意义,只是举个例子而已

你可能感兴趣的:(线性代数,矩阵,数学建模)