好的,今天继续研究评价类模型的相关算法。实不相瞒,虽然我才写到第二个算法,但是已经听了几十节课了,清风老师的课程确实蛮不错的,实用性比较强。相关的模型、算法基本上越往后越难,所以珍惜现在比较容易理解的评价类模型吧hhh。

在这里要说明一下,小白本白只是一个即将大三的本科生,目前比较容易理解的模型我还能写得完整一些。之后很多模型会涉及较为复杂的数学推导,我可能很难完整地从原理去描述了,只能着重于实际应用方面。请各位谅解啦。

ok,我们继续学习评价类模型算法。

(注:以下案例均来自我所听的网课)

回顾

上一篇文章我们介绍了一个简单又实用的评价打分方法——层次分析法。同时我们也提到了,层次分析法有一些缺陷之处。首先就是主观性较强,层次分析法往往是专家用来打分的方法,但建模比赛中没有专家,判断矩阵只能我们自己填;其次,当指标或者方案层数量较多时,我们两两比较得出的判断矩阵和一致矩阵可能会出现较大的差异(想一想你的心理预期,有多符合那个乘法关系),判断矩阵的填写也会比较麻烦(例如要问C202C_{20}^2C202​次问题);再者,层次分析法往往用于没有相关数据的问题,我们的打分也是按照判断矩阵给出的,如果已经有了数据,再主观打分就不太合适了。

看看这个题目

给出A—TA—TA—T二十条河流的水质指标及具体数据,请建立合适的模型,给这些河流的水质从高到低排排序。嗯,现在再用层次分析法,是不是就不太合适了……

TOPSIS算法

TOPSIS算法是解决上述问题的一个比较合适的算法,其全称是TechniqueforOrderPreferencebySimilaritytoanIdealSolutionTechnique\ for\ Order\ Preference\ by\ Similarity\ to\ an\ Ideal\ SolutionTechnique for Order Preference by Similarity to an Ideal Solution,通俗的翻译则是“优劣解距离法”。这个翻译可以说是指向了此算法的本质,我们接下来慢慢谈。

我们依然从一个简单的问题入手。小明同学考上南大之后,不知不觉就迎来了第一次高数考试,他及其舍友的分数如下。

现在我们要根据他们的成绩,给他们进行打分,要求分数可以合理地表达其成绩的高低。hhh可能会有人觉得这个问题比较奇怪,成绩本身就可以作为所谓的分数了,实在不行我们还有GPA,怎么还要打分?因为这只是一个例子,事实上在许多实际问题中,我们只有数据,例如上面水质问题的含氧量,PH值,并没有这样一个分数。再者,实际问题中有很多的指标,其量纲经常不同,但我们需要通过这些数据得出一个综合的分数。因此我们很有必要对数据进行一定的处理,同时找到一个综合打分的方法。

所以我们有一个很直接的想法,就是对分数进行归一化处理,例如清风的最后得分就是9989+60+74+99=0.307\frac {99}{89+60+74+99} = 0.30789+60+74+9999​=0.307。嗯,这个想法很合理。即一个人的成绩占总成绩的比重,就可以作为这个人在总体中的得分。但是注意了,这里只有一个指标,所以我们可以直接用这个得分作为排序标准。如果还有一些指标,同样进行类似的操作,实际上就相当于我们对数据进行了处理,消去了量纲的影响罢了。结果就是,一番操作过后,留给我们的仍然是一个得分表格,只不过里面是已经被处理过的数据,但还是没能给出排名。

这里提出一个小问题,我们把PH值作为衡量水质的一个标准,其范围是0~14,PH=7时最好,所以PH=7时相关指标得分应该最高。这时候就不能像成绩那样,直接求和算比重了吧,那应该怎么处理呢?

ok,我们继续。上述的操作只是对数据进行了处理,我们还是需要一个打分的标准。有同学就会想到,赋权,然后打分。这就回到了我们层次分析法的内容。还是那些问题,主观性比较强,指标太多时操作起来不准确且麻烦,对数据的利用不充分等等。

这里就可以引入TOPSIS的想法了。事实上我们的目的是对方案给出一个排序,只要数据有了,我们就可以根据这些数据,构造出一个所有方案组成的系统中的理想最优解和最劣解(我感觉最劣解和理想不搭,就直接用最劣解称呼吧)。而TOPSIS的想法就是,我们通过一定的计算,评价系统中任何一个方案距离理想最优解和最劣解的综合距离。如果一个方案距离理想最优解越近,距离最劣解越远,我们就有理由认为这个方案更好。那理想最优解和最劣解又是什么呢?很简单,理想最优解就是该理想最优方案的各指标值都取到系统中评价指标的最优值,最劣解就是该理想最劣方案的各指标值都取到系统中评价指标的最劣值。这么说可能不是很清楚,举个例子。

如果我们只有一个指标,例如上图中的成绩,那么理想最优解就是99分,注意,不是满分100分,理想最优解中的数据都是各方案中的数据,而不要选择方案中没有的数据。不然如果是GDP这种上不封顶的指标,理想最优取值岂不是正无穷了……同理,该系统中的最劣解是60。

那如果有两个指标呢?例如我们引入一个“与他人争吵的次数”,用来衡量情商,给出相应的数据表格。

按照我们的一般想法,与他人争吵的次数应该是越小越好,所以我们可以用向量表达这个系统中的理想最优解,也就是[99,0][99,0][99,0],取清风的成绩和小王的争吵次数,最劣解就是[60,3][60,3][60,3],取小王的成绩和清风的争吵次数。

现在我们知道了如何取得理想最优解和最劣解,那如何衡量某一个方案与理想最优解和最劣解的综合距离呢?TOPSIS用下面一个表达式进行衡量:某一方案−最劣解理想最优解−最劣解\frac {某一方案 - 最劣解}{理想最优解 - 最劣解}理想最优解−最劣解某一方案−最劣解​。可以发现,如果方案取到了理想最优解,其表达式取值为1;如果方案取到了理想最劣解,其表达式取值为0。我们便可以用这个表达式来衡量系统中某一个方案距离理想最优解和最劣解的综合距离,也直接用它给方案进行打分。

相信到这里大家对于TOPSIS的基本思想已经差不多理解了,之后就是实际操作的问题了。我们都知道,“方案 - 最劣解”这种东西只是方便理解,确实也是我编出来的,实际中方案根本不能做差。所以我们只能用数据来求出这么一个距离。对于某一个指标的数据,我们可以用x−minmax−min\frac {x-min}{max-min}max−minx−min​来衡量综合距离。如果只有成绩这一个指标,其计算很简单,例如清风的得分就是99−6099−60=1\frac {99-60}{99-60}=199−6099−60​=1,其余人的成绩可以依次给出。对于“争吵次数”这个指标,清风的得分可以是3−30−3=0\frac {3-3}{0-3}=00−33−3​=0,虽然也能计算,但其分母是个负值,还是不太习惯。那如果对于PH值,7是最优解,0和14哪一个看成最劣解用于计算呢?亦或者如果某个指标处在10~20之间最佳,那最优解最劣解又如何衡量呢?这便是我们遇到的问题。除此之外,由于数据的量纲不同,在实际的计算过程中也会出现这样或者那样的问题,因此我们也有必要对于原数据进行相关的处理。

首先,我们解决第一个问题,有些指标的数据越大越好,有些则是越小越好,有些又是中间某个值或者某段区间最好。我们可以对其进行“正向化处理”,使指标都可以像考试分数那样,越大越好。

我们可以把指标分为四类,如下表所示。

所谓的正向化处理,就是将上述的四种指标数据进行处理,将其全部转化为极大型指标数据,这样我们计算时问题就少一点,码代码时也更加统一。

对于极小型指标,例如费用,争吵次数,我们可以用x^i=max−xi\hat x_i=max-x_ix^i​=max−xi​将其转化为极大型,如果所有元素都为正数,也可以使用x^i=1xi\hat x_i= \frac {1}{x_i}x^i​=xi​1​。示例如下。

对于中间型指标,如果其最佳数值是xbestx_{best}xbest​,我们可以取M=max{∣xi−xbest∣}M=max\{|x_i - x_{best}|\}M=max{∣xi​−xbest​∣},之后按照x^i=1−xi−xbestM\hat x_i = 1 - \frac {x_i - x_{best}}{M}x^i​=1−Mxi​−xbest​​转化,示例如下。

对于区间型指标,如果其最佳区间是[a,b][a,b][a,b],我们取M=max{a−min{xi},max{xi}−b}M=max\{a-min\{x_i\},max\{x_i\}-b\}M=max{a−min{xi​},max{xi​}−b},之后按照x^i={1−a−xiM,xi<a1,a<xi<b1−xi−bM,xi>b\hat x_i = \begin{cases} 1-\frac {a-x_i}{M},&x_i<a \\ 1,&a<x_i<b\\1-\frac {x_i-b}{M},&x_i>b \end{cases}x^i​=⎩⎪⎨⎪⎧​1−Ma−xi​​,1,1−Mxi​−b​,​xi​<aa<xi​<bxi​>b​转化,示例如下。

至此,我们已经将所有的数据都转化为极大型数据了,可以很好地使用x−minmax−min\frac {x-min}{max-min}max−minx−min​来进行打分。但是为了消除不同的数据指标量纲的影响,我们还有必要对已经正向化的矩阵进行标准化。在概率统计中,标准化的方法一般是X−EXDX\frac {X-EX}{\sqrt {DX}}DX​X−EX​,不过这里我们不采用。我们记标准化后的矩阵为ZZZ,其中zij=xij∑i=1nxij2z_{ij}=\frac {x_{ij}}{\sqrt {\sum_{i=1}^n {x_{ij}}^2}}zij​=∑i=1n​xij​2​xij​​,也就是每一个元素其所在列的元素的平方和\frac {每一个元素}{\sqrt {其所在列的元素的平方和}}其所在列的元素的平方和​每一个元素​。

现在我们已经对数据进行了相应的处理,可以计算每一个方案的的得分了,也就是所谓的距离。由于我们一个方案具有多个指标,因此我们可以用向量ziz_izi​来表达第iii个方案。假设有n个待评价的方案,m个指标,此时zi=[zi1,zi2,...,zim]z_i=[z_{i1},z_{i2},...,z_{im}]zi​=[zi1​,zi2​,...,zim​]。由这n个向量构成的矩阵也就是我们的标准化矩阵ZZZ了。(实在是打不好这个样子……)

之后我们就可以从中取出理想最优解和最劣解了,经过了正向化处理和标准化处理的评分矩阵ZZZ,里面的数据全部是极大型数据。因此我们取出每个指标,即每一列中最大的数,构成理想最优解向量,即z+=[z1+,z2+,...,zm+]=[max{z11,z21,...,zn1},max{z12,z22,...,zn2},...,max{z1m,z2m,...,znm}]z^+\ =\ [z_1^+,z_2^+,...,z_m^+]=\\\ [max\{z_{11},z_{21},...,z_{n1}\},max\{z_{12},z_{22},...,z_{n2}\},...,max\{z_{1m},z_{2m},...,z_{nm}\}]z+ = [z1+​,z2+​,...,zm+​]= [max{z11​,z21​,...,zn1​},max{z12​,z22​,...,zn2​},...,max{z1m​,z2m​,...,znm​}]。
同理,取每一列中最小的数计算理想最劣解向量,z−=[z1−,z2−,...,zm−]=[min{z11,z21,...,zn1},min{z12,z22,...,zn2},...,min{z1m,z2m,...,znm}]z^-\ =\ [z_1^-,z_2^-,...,z_m^-]=\\\ [min\{z_{11},z_{21},...,z_{n1}\},min\{z_{12},z_{22},...,z_{n2}\},...,min\{z_{1m},z_{2m},...,z_{nm}\}]z− = [z1−​,z2−​,...,zm−​]= [min{z11​,z21​,...,zn1​},min{z12​,z22​,...,zn2​},...,min{z1m​,z2m​,...,znm​}]。

(z+z^+z+就是zmaxz_{max}zmax​,z−z^-z−就是zminz_{min}zmin​)

现在我们可以计算得分了,之前我们的计算公式是$\frac {z_i-z_{min}}{z_{max}-z_{min}} \ 也就是也就是也就是\ \frac {z_i-z_{min}}{(z_{max}-z_i)+(z_i-z_{min})},嗯,我们变形成了⋅,嗯,我们变形成了·,嗯,我们变形成了⋅\frac {z与z_{min}的距离}{z与z_{max}的距离\ +\ z与z_{min}的距离}$。为什么要这样变形呢?因为大家都是这么用的……好吧,其实我们接下来是使用欧几里得距离来衡量两个方案的距离,变形前后分母的计算结果其实是不同的。我个人认为这样变形更有利于说明问题,即我们衡量的得分是考虑到某个方案距离最优解和最劣解的一个综合距离。不然的话,所有方案计算得分时分母都是相同的,相当于只衡量了分子,也就是距离最劣解的距离。那应该还是采用综合衡量的方式会好一点儿吧,你觉得呢?

嗯,我就默认大家都同意这个说法了。我们继续计算得分,对于第iii个方案ziz_izi​,我们计算它与最优解的距离di+=∑j=1m(zj+−zij)2d_i^+\ =\ \sqrt {\sum_{j=1}^m (z_j^+\ - z_{ij})^2 }di+​ = ∑j=1m​(zj+​ −zij​)2​,与最劣解的距离为di−=∑j=1m(zj−−zij)2d_i^-\ =\ \sqrt {\sum_{j=1}^m (z_j^-\ - z_{ij})^2 }di−​ = ∑j=1m​(zj−​ −zij​)2​。我们记此方案的得分为SiS_iSi​,则Si=di−di++di−S_i = \frac {d_i^-}{d_i^+\ +d_i^- }Si​=di+​ +di−​di−​​,也可以理解为我们上文一直在说的综合距离。很明显,0≤Si≤10 \le S_i \le 10≤Si​≤1,且di+d_i^+di+​越小,也就是该方案与最优解的距离越小时,SiS_iSi​越大;di−d_i^-di−​越小,也就是该方案与最劣解的距离越小时,SiS_iSi​越小。这种计算方式同时考虑了该方案与最优解和最劣解的距离。

这个时候我们就有了每个方案的分数了,按分数排排序,就知道哪个方案好一点儿哪个方案次一点儿了。还可以按照这个得分再进行一次归一化,不过我觉得没什么必要了。

嗯,基本部分讲完啦。

总结

总结一下。使用TOPSIS算法的一个先决条件就是要有数据,最好全部是定量数据,如果是定性数据或者定序数据,但能够分别优劣,也可以按照定量数据来处理。之后就开始操作:

  1. 将原始数据矩阵正向化。
    也就是将那些极小性指标,中间型指标,区间型指标对应的数据全部化成极大型指标,方便统一计算和处理。
  2. 将正向化后的矩阵标准化。
    也就是通过标准化,消除量纲的影响。
  3. 计算得分并排序
    公式就是Si=di−di++di−S_i = \frac {d_i^-}{d_i^+\ +d_i^- }Si​=di+​ +di−​di−​​。

这次好像还没有给一个完整的过程,嗯,我就把PPT里的完整过程放在这里供大家参考。
这是原始数据矩阵

我们对其进行正向化

我们再对其进行标准化

最后计算得分给出排名

嗯,这个例子告诉我们,成绩很重要,但是情商更重要hhh。小王虽然只考了60分,但也及格了,而且他从不与人争吵,所以我们可以给他一个最好的评价hhh。

拓展

TOPSIS是不是又简单又使用呢?其实我们还可以进行一点点儿的拓展,不想打字了,看下图。

我们可以看到,在计算距离时,我们其实默认每个指标的权重是相同的,但实际问题中,不同的指标重要程度可能是不一样的。例如评奖学金的时候,成绩往往是最重要的,之后还有参与活动分,志愿服务分等等,他们的权重又低一点。因此,在实际的应用中,我们也可以给指标进行赋权,将权重放到计算距离的公式中。如图。

带上了权重之后,不同的指标发挥的影响就不一样了,带权重的评价也往往是实际生活中很常见的一种评价方式。

那在建模中如何确定权重呢?如果是日常生活向的评价,我们可以使用层次分析法,结合常识给出。如果是比较专业的评价指标,我们可以查询资料,看看别人怎么研究的。还有一种方法叫熵权法,也是这套课程的内容,不过限于篇幅,就留到之后再提吧。

局限性

TOPSIS法有什么局限性呢?其实也是有的,例如没有数据你就行不通了吧hhh。不过在实际建模中,倒也不必考虑太多的局限性,知道每个模型的适用条件就好了。到时候见招拆招,增删查改,尽力而为就好了。一个没有参加过比赛的小白说这些是不是有点儿不妥……不管了,反正就是碰到什么题用对应的模型,实在不行就试着综合综合,总能有个结果的hhh

嗯,就这样,拜拜~

作业

我把PPT里的题目也放在这里,应该没问题。哔哩哔哩上有作业讲解的。

最后,如有错误,欢迎指出。以及,欢迎关注公众号“我是陈小白”。

数学建模笔记——评价类模型(二)相关推荐

  1. 数学建模笔记——评价类模型之熵权法

    嗯,这次讲一讲熵权法,一种通过样本数据确定评价指标权重的方法. 熵权法 之前我们提到了TOPSIS方法,用来处理有数据的评价类模型.TOPSIS方法还蛮简单的,大概就三步. 将原始数据矩阵正向化. 也 ...

  2. 数学建模笔记——评价类模型之灰色关联分析

    这一篇就简单介绍一下灰色关联分析吧.灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性.第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名. 不过这里我只能简单介 ...

  3. 数学建模笔记——插值拟合模型(二)

    今天是8月21日,距离上次写文章好像将近一个月了--这段时间经历了建模校内选拔赛,考试周,以及与网络小说的斗智斗勇--好吧,其实也没干什么,除了考试就是荒废-- 我最近有在思考一个问题,就是我所关注的 ...

  4. 数学建模:评价性模型学习——灰色关联分析法(GRA模型)

    目录 前言 一.灰色关联分析 1.什么是灰色关联分析? 2.流程介绍 二.综合评价 1.数据无量纲化处理 2.确定参考序列 3.确定权重 4.计算灰色关联系数 5.计算灰色加权关联度 6.代码 总结 ...

  5. 模型学习01——评价类模型(1)

    ​ 一.层次分析法(AHP) 1.简介 将与决策有关的元素分解成目标.准则.方案等层次,在此基础之上进行定性和定量分析(形成打分表)的决策方法.主要适用于解决评价类模型. 2.目标 形成以下打分表格 ...

  6. Python小白的数学建模课-09.微分方程模型

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...

  7. 【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(一),加入疫苗接种、政府管控、病毒变异等因素的影响

    目录 一. SEIR传染病模型 二. SEIR模型的延伸--SEIDR模型 三. 模型延伸--影响因素1:疫苗接种 四. 模型延伸--影响因素2:政府管控 五. 模型延伸--影响因素3:病毒变异 写在 ...

  8. 评价类模型(层次分析法与模糊评价模型)

    一.评价类模型 综合评价的基本理论和数据预处理: 评价对象 评价指标 权重系数 综合评价模型 评价者 二.AHP法-层次分析法 通过打分解决评价类问题,两两比较,推算权重. %function RI= ...

  9. 数学建模笔记 Topsis和熵权法

    Topsis法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法. ​ ...

  10. dna序列分类数学建模matlab,数学建模DNA序列分类模型(终稿).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp生物学 数学建模DNA序列分类模型(终稿).doc32页 本文 ...

最新文章

  1. 千呼万唤,ACS始出来
  2. [LUOGU] 1090 合并果子
  3. awk 分隔符_awk 中的字段、记录和变量 | Linux 中国
  4. 解決 Tomcat 5.0.x % include file ... % 的中文亂碼問題
  5. C#类型反射、晚期绑定、特性编程的使用背景与分析
  6. MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)
  7. 【hibernate框架】一对多(多对一)双向CRUD-关于delete2
  8. 创建工程师文化的3个步骤 | IDCF
  9. SpringBoot:Actuator 监控管理工程各项信息
  10. W3C中meta标签详解
  11. xboxones手柄驱动_微软Xbox One S全数字版再次发售,1043元
  12. 转-登录功能通用测试用例设计
  13. 数不清的Gmail邀请发放中……
  14. 90后IT男被准丈母娘拒绝:家境不重要,重要的是…戳中痛处
  15. vscode替换文字快捷键_这 21 个VSCode 快捷键,能让你的代码飞起来
  16. 条件指示符 #ifdef 的用法
  17. TCP/IP---ping命令
  18. Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)
  19. “香港一卡通” 內地見證開戶
  20. 生物特征识别技术领跑者--墨奇科技 全面亮相2022身份识别技术大会

热门文章

  1. UCF Local Programming Contest Round 1A 【2021-7-20】
  2. 测试人员必备:常用自动化测试工具
  3. 第129章 SQL函数 %SQLUPPER
  4. ios实用wifi分析仪——AirPort
  5. [渝粤教育] 西北农林科技大学 国际贸易实务 参考 资料
  6. 【知识兔】Ctrl+H,Word文档中超好用的快捷键
  7. JAVA串口通信开发
  8. 快速理解 HTTP协议
  9. 京东注册页开发 HTML5 1014
  10. 前端八股文,https、跨域、闭包、原型链,布局、防抖节流等