“SPSSPRO 杯”数学中国数学建模竞赛思路

Posted 小叶的趣味数模

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“SPSSPRO 杯”数学中国数学建模竞赛思路相关的知识,希望对你有一定的参考价值。

【公众号:小叶的趣味数模】

A题

结合常识向下怎么个疏散规则就行,下面介绍一篇文献,程序根据这篇文献编写的,程序下载链接:

https://pan.baidu.com/s/1JuA5hCeFnLAwTgX-s11Qyw 提取码:0105 

B题

文本分析题,首先是json代码文件,可能很多人不清楚,python里import json然后json.loads加载就可以了,之后就是把诗词字段通过re库匹配出来;如果是matlab,loadjson读取,注意会不会乱码,乱码问题网上搜,这里不多说,matlab处理的话这几个函数有点帮助:replace(清洗)、join(拼接)、intersect(返回词库中有的内容)、strcmp(判断字符串是否相等)、findstr(返回短字符串在长字符串中的开始位置)、regexpi(正交匹配)。

其实后面问就是分词然后统计词频做分析,当然了词库很重要,这里给大家分享一些字库,其中就有唐宋诗词的,其他词库用得上就用

https://pan.baidu.com/s/1JuA5hCeFnLAwTgX-s11Qyw 提取码:0105

第二问说的真粗暴,那么这里就有个更粗暴的相关性算法:杰卡德相似系数,分好词后用一个相关性算法就可以了,如果是用的python jieba分词,给大家普及下其中的算法原理,可以适当进行包装,以下内容可以摘抄:

-----------------------------------------------------------------------------

1 有向无环图

基于前缀词典实现高效的词图扫描,根据句子中汉字的成词情况生成trie树,并构建有向无环图 (DAG)。

Trie 字典树/前缀树优点:利用字符串的公共前缀来减少查询时间,从而减少无谓的字符串比较过程,查询效率比哈希树高。主要应用于统计、排序和保存大量的字符串(但不仅限于字符串),常用于搜索引擎系统中对文本词频统计。

有向无环示意图如下所示,算法将遍历每条文本,并基于单字并创建trie树,构建无环图。

2 基于汉字的隐马尔可夫算法

在分词过程中,将单字在词中的位置B、M、E、S、A作为隐藏状态,单字作为观测变量,使用词典文件分别存储字符之间的表象概率矩阵、初始概率向量和转移概率矩阵,然后根据概率再利用viterbi算法对最大可能的隐藏状态进行求解。

HMM即隐马尔科夫模型,是一种基于概率假设的统计模型。之所以为“隐”,是因为相较于马尔科夫过程HMM有着未知的参数,并且与表象有一定的关联关系。

本文通过上述模型对给定的输入X,能够预测出类别Y。通过学习联合概率分布P(X,Y),及贝叶斯定理求解条件概率:

HMM作为模型的有向图PGM,通过联合概率建模:

其中,S、O分别表示状态序列与观测序列。

上式即为HMM解码问题中Viterbi算法的递推式。

Viterbi算法的基本思想是:如果最佳路径经过一个点,那么起始点到这个点的路径一定是最短路径,否则用起始点到这点更短的一条路径代替这段,就会得到更短的路径,这显然是矛盾的;从起始点到结束点的路径,必然要经过第n个时刻,假如第n个时刻有k个状态,那么最终路径一定经过起始点到时刻n中k个状态里最短路径的点。

将时刻t隐藏状态为i所有可能的状态转移路径到的状态最大值记为:

本文可以据此由初始时刻依次向后推出每一个时刻的最大概率隐藏状态。 

针对无环图,基于本节模型,对单条文本进行分析时,得到各分支路径及其出现概率以确定组词。

3 动态规划

动态规划所处理的问题是一个多阶段决策问题,一般由初始状态开始,通过对中间阶段决策的选择,达到目标状态。主要有如下几个步骤:初始状态->决策1->决策2->…->决策n->结束状态。

在分词算法中,动态规划目的在于查找最大概率路径,从而找出基于词频的最大切分组合。

①查找待分词句子中已切分好的词语(全模式下的分词list),得出查找该词语出现的频率(次数/总数),如果没有该词,就将词典中出现频率最小的词频作为该词的频率;

②通过动态规划查找最大概率路径,首先对句子从右往左反向计算最大概率(这里反向是因为汉语句子的重心经常落在右边, 因为通常情况下形容词太多, 后面的才是主干。因此,从右往左计算,正确率要高于从左往右计算,这里类似于逆向最大匹配),P(NodeN)=1,P(NodeN-1)=P(NodeN)×Max(P(倒数第一个词)) ,依次类推,最后得到最大概率路径,得到最大概率的切分组合。

-----------------------------------------------------------------------------

接着来说题目,第一问其实就是构建一些风格的词库(不同风格的词库构建的越多越好,这样第四问好做),分词后统计词频,第三问多了个归类,文本的分类不是说用机器学习算法去做,而是依赖于词库,相当于是给诗词贴风格的标签。但是想用算法去包装也不是不行。

第四问,大家可以去看下我这篇主成分推文的理解,其实就是选择出50首诗词,可以尽可能反映出所有诗词的风格,其实就是看看是否覆盖了你构建的风格词库。其实到这里整个逻辑就比较清晰了,首先做词频观察下文本规则,然后其中就可以把高频词汇用于构建词库,自己再补充下,不同词库相当于不同风格的标签,之后就是给这些诗词贴标签,最后第四问,可以构建一个启发式算法,自变量就是随机50个诗词,目标函数是50个诗词中有词汇被包含于所有词库,一般比较理想的情况会出现比较美观的迭代图,就说明你构建的词库比较合理,为什么这么说,第一个需要你的词库涵盖比较全,第二看你的词库是否具有泛化能力。

可能大家不是很理解,这是一种比较有价值的做法,可以做个参考。

C题

这道题其实反映了一个科学问题,人肯定要排泄嘛,无症状感染没啥好办法监测,所以该懂为什么说监测污水了吧。分布点的规划,这个没问题,但是需要根据人口流动和分布情况去做,第一问肯定会想到水质的变化和水质的分布,这个肯定需要考虑,要是我,我看到这幅图,我第一个想到的是人口分布,人都没有的地方,还检测水质干嘛,就像题目说的人口密集区污水更容易去监测到新冠。

就说人口的分布吧,这里告诉大家一个方法,美国路网shp包内有个building文件,有具体经纬度,可以到具体的地方

(下载链接https://pan.baidu.com/s/1JuA5hCeFnLAwTgX-s11Qyw 提取码:0105

有全国人口数,就可以先简单地根据建筑面积和位置分布给分下去,当然了路网shp包中也有水路分布,选址肯定在水路附近,然后你就可以绘制出,整个国家的水质分布情况,第一问大家不必去纠结,就是再寻优是个地点,第一根据人口的密集度,第二是需要在有水路的周围地区,找到最佳的十个点就行,开始就是随机产生个体,按照粒子群算法的原理,随机扰动,迭代结束输出最优是个地点就行,要评估分布是否合理,人口密集度、交通路网密度加权和评价做个比较,补充一下监测站范围可以自己设定,因为要计算范围内的人口数。

第二问借鉴第一问做法,只不过是疫情的检测,既然说到了当地政府,那么肯定是拿一个城市或者一个区县来做分析(国内的路网shp自己下载了,行政区划边界有到区县的,在arcgis软件内可以自己拆分出想要做分析的数据,重要的是水路和建筑分布),把人口分布下去,同样的设置k个监测点,去寻优,最后告诉政府,这几个点比较重要。

D题

第一问相关性分析,第二问方差分析,完事

以上是关于“SPSSPRO 杯”数学中国数学建模竞赛思路的主要内容,如果未能解决你的问题,请参考以下文章

2022 年“SPSSPRO 杯”数学中国数学建模网络挑战赛A题 人员的紧急疏散-第二阶段23页论文

2022年华为杯中国研究生数学建模竞赛D题思路

2022年华为杯中国研究生数学建模竞赛E题思路

2022年华为杯中国研究生数学建模竞赛F题思路

2022年华为杯中国研究生数学建模竞赛C题思路

2022年华为杯中国研究生数学建模竞赛B题思路