数学建模之倚天剑与屠龙刀

向作者提问
资深算法工程师,目前担任AI医疗项目技术负责人,CSDN专家。前供求世界网络科技运营总监,数学硕士,数十次获得建模奖项,全国研究生数学建模竞赛一等奖得主,热衷分享。一个微信:huangtaonide、一个微信公众号:R-data、还有一个你
查看本场Chat

导言

本Chat基于竞赛基础整理,非技术深度博文!

1.认识数学建模

  数学建模:从1985年美国的MCM(Mathematical Contest in Modeling)一直发展至今。

  亚里士多德说,“智慧不仅仅存在于知识之中,而且还存在于应用知识的能力中”。数学建模就是对数学知识最好的应用,通过数学建模,你会发现,生活中很多有意思的事情都可以靠它来解决,其结构如下:

enter image description here

2.应该怎么查找数据

  数据来源查找主要有三个模式:   

  • 题目来源数据     
  • 题目来源数据+中外文期刊数据库(含统计年鉴)     
  • 题目来源数据+中外文期刊数据库(含统计年鉴)+爬虫数据     
中外文数据库 

  中文:CNKI、VIP、万方 

外文:EBSCO、Elserive、ProQuest、Springerlink、EI、ISI Web of Knowledge 

统计年鉴:国家数据国家统计年鉴各类型统计数据官方网站

开放实验数据源:C Irvine Machine Learning Repository:UCI指的是加州大学欧文分校。UCI机器学习库主要是收集的机器学习领域的一些相关数据集和数据生成器,可以用来做一些基本的实验。

下图即可看见非常经典的iris数据。

enter image description here

3.数据预处理和数据异常处理之间有什么区别

  数据预处理包含数据异常处理。数据预处理常常会包含:数据异常处理,数据空缺处理,无效数据处理,数据分类处理等。常常使用的办法会有:剔除数据点,拟合模拟数据,对数据进行统计分类等。

4.软件很多、算法很多,到底应该如何选择

this is a 故事:

  某男到医院就诊,医生亲切地问了一些该男的症状,最后得出结论:“我怀孕了。。。”

enter image description here

  血淋淋的故事告诉我们: 需要一个好的模型诊断器,根据病人的一系列症状,得出病人患的是什么病。

4.1 软件方面

  对于数学建模用到最多的软件有:Matlab、Mathmatic、 Lingo/LinDo、SAS、SPSS。其中前两个主要为计算软件(也可做优化),中间的那个为优化软件,最后两个为统计分析软件。由于时间太紧了,Java、C++之类则在竞赛中很少用。

个人推荐:R和Python,从定位角度看,R致力于提供更好的,对用户友好的数据分析、统计分析和绘图模型;而Python则强调生产效率和代码的可读性。

4.2 算法方面

  数学建模常常可以划分成不同的模型需求:比如说优化模型、微分方程模型、统计模型、概率模型、图论模型、决策模型。

  数学建模算法中常用的涉及:类比法、二分法、差分法、变分法、图论法、层次分析法、数据拟合法、回归分析法、数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划)、机理分析、排队方法、对策方法、决策方法、模糊评判方法、时间序列方法、灰色理论方法、现代优化算法(禁忌搜索算法,模拟退火算法,遗传算法,神经网络)等。

  其中层次分析法(AHP)是为数不多的主观方法,在评价模型中经常被引用,尤其当没有模型选择时,可以考虑使用!

  在优化方法中在,决策变量、目标函数(尽量简单、光滑)、约束条件、求解方法是四个关键因素。其中包括无约束规则、线性规则(用 Lingo实现实现比较方便)非线性规则、0-1规划,多目标规划(有目标加权、效用函数)动态规划、整数规划,适合软件(Matlab、 Lingo、R和python)

  回归分析:对具有相关关系的现象,根据其关系形态,选择一个合适的数学模型,用来近似地表示变量间的平均变化关系的一种统计方法 (一元线性回归、多元线性回归、非线性回归),回归分析在一组数据的基础上研究这样几个问题:建立因变量与自变量之间的回归模型(经验公式);对回归模型的可信度进行检验;判断每个自变量对因变量的影响是否显著;判断回归模型是否适合这组数据;利用回归模型对进行预报或控制。相对应的有线性回归、多元二项式回归、非线性回归(比较方便的软件Matlab、Mathmatic、Lingo/LinDo、SAS、SPSS、R和python)。

  逐步回归分析:从一个自变量开始,视自变量作用的显著程度,从大到地依次逐个引入回归方程:当引入的自变量由于后面变量的引入而变得不显著时,要将其剔除掉;引入一个自变量或从回归方程中剔除一个自变量,为逐步回归的一步;对于每一步都要进行值检验,以确保每次引入新的显著性变量前回归方程中只包含对作用显著的变量;这个过程反复进行,直至既无不显著的变量从回归方程中剔除,又无显著变量可引入回归方程时为止(软件方面SAS、matlab、R和python)。

  时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列—通过对预测目标自身时间序列的处理,来研究其变化趋势(长期趋势变动、季节变动、循环变动、不规则变动)。

时间序列建模的基本步骤

  1. 数据的预处理:数据的剔取及提取趋势项。
  2. 取n=1,拟合ARMA(2n,2n-1)(即ARMA(2,1))模型。
  3. n=n+1,拟合ARMA(2n,2n-1)模型。
  4. 用F准则检验模型的适用性。若检验显著,则转入第2步。若检验不显著,转入第5步。
  5. 检查远端时刻的系数值的值是否很小,其置信区间是否包含零。若不是,则适用的模型就是ARMA(2n,2n-1) 。若很小,且其置信区间包含零,则拟合ARMA(2n-1,2n-2) 。
  6. 利用F准则检验模型ARMA(2n,2n-1)和ARMA(2n-1,2n-2) ,若F值不显著,转入第7步;若F值显著,转入第8步。
  7. 舍弃小的MA参数,拟合m<2n-2的模型ARMA(2n-1,m) ,并用F准则进行检验。重复这一过程,直到得出具有最小参数的适用模型为止。
  8. 舍弃小的MA参数,拟合m<2n-1的模型ARMA(2n,m) ,并用F准则进行检验。重复这一过程,直到得出具有最小参数的适用模型为止。

聚类方法聚类方法对比直通车

图论方法:

1.最短路问题:两个指定顶点之间的最短路径—给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线 (Dijkstra算法 )每对顶点之间的最短路径 (Dijkstra算法、Floyd算法 )。

2.最小生成树问题:连线问题—欲修筑连接多个城市的铁路设计一个线路图,使总造价最低(prim算法、Kruskal算法 )。

3.图的匹配问题:人员分派问题:n个工作人员去做件n份工作,每人适合做其中一件或几件,问能否每人都有一份适合的工作?如果不能,最多几人可以有适合的工作?(匈牙利算法)。

4.遍历性问题:中国邮递员问题—邮递员发送邮件时,要从邮局出发,经过他投递范围内的每条街道至少一次,然后返回邮局,但邮递员希望选择一条行程最短的路线。

5.最小费用问题:在运输问题中,人们总是希望在完成运输任务的同时,寻求一个使总的运输费用最小的运输方案。

5.建立了模型,某些相关参数偏差很厉害,是否怀疑过模型?

  遇到这种问题以后,首先要做的就是确定模型的建立的合理性,依据是哪些。如果模型是合理的,那么比较重要的一点,就是需要将数据进行分析。数据建模中的许多数据都是实际数据,而模型,是一种标准化。实际数据放在模型中去验证,很多都是有问题。出现这些问题的原因,不是模型错误,而是数据不一定有效。下面就举几种数据不一定有效的情况:

  • 第一种情况是由于某些原因造成的缺少数据。
  • 第二种情况是由于人为的一些原因造成的数据错误。
  • 第三种情况是由于数据采集过程中,不恰当采集,造成的脏数据。

还有很多种情况,就不在这里细说。 遇到这样的事情,首先要做到的就是剔除掉无效数据,然后再论文中说明,为什么要剔除这些数据,然后再验证模型的合理性。

6.监督学习与非监督学习该如何应用

何谓机器学习

  斯坦福大学的Machine Learning课程是这样解释:

  Machine Learning is field of study that gives computers the ability to learn without being explicitly programmed.

  也就是说机器学习不需要制定具体的模型,而是让计算机根据庞大的数据量自己训练模型。

一、监督学习(Supervised learning)

  数据集中的每个样本有相应的“正确答案”,根据这些样本做出预测,分有两类:回归问题和分类问题

(1)回归问题

  例如预测房价,根据样本集拟合出一条连续曲线

enter image description here

(2)分类问题

  例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性”或者“恶性”,是离散的

enter image description here

二、非监督学习(Unsupervised learning)

  非监督学习的数据集跟监督学习不同,没有任何标签,即没有相应的“正确答案”。从数据集中可以通过非监督学习得到数据的某种结构,可能是把数据分成两个不同的聚集簇,称为聚类算法。

enter image description here

例如:从数据设置上看:

  无监督学习:训练样本数据和待分类的类别已知,但训练样本数据皆为非标签数据;

   监督学习:训练样本数据和待分类的类别已知,且训练样本数据皆为标签数据;

7. 团队如何分配任务

   虽然涉及大概三点:数学,编程,写作。那么安排一个负责文档、一个负责算法、一个负责编程这样不一定对,分工太明确了,会让人产生依赖思想,不愿去动脑子。有多少团队是内部瓦解,如同创业合伙人散伙一样,合则双赢。理想的分工是这样的:数学建模竞赛小组中的每一个人,都能胜任其它人的工作,就算小组只剩下她(他)一个人,也照样能够搞定数学建模竞赛。在竞赛中的分工,只是为了提高工作的效率,做出更好的结果。

8.以后具体该向哪个方向找工作

   首先告诉你:中国研究生数学建模获奖上海落户加分,最多加10分,具体请参见当年上海积分落户制度细则。

工作方向:大数据、机器学习、人工智能都可涉猎,具体岗位比如说在金融方面,金融量化,金融建模,数据分析师等,随便到一个网站一搜就有很多,具体就不列举了。

附上以前收集的比较文档,下载连接如下,目前CSDN无法设置0积分,没有积分的可以联系我。

下载文件地址:写好数学建模竞赛答卷注意事项(参赛宝典)

数学建模模板(建模论文竞赛标准版

9.案例

根据对某地区小区数据依据距离进行k-means聚类(从原理入手,并未引入算法模块,希望大家平时联系也是如此,有利于对原理的深入理解) 数据结构如下:(租金(元/㎡/月)、房龄(年)、小区名称)

enter image description here

聚类结果如下(不同颜色代表不同类别):

enter image description here

Python 小案例代码:直通车

最后,希望此Chat你读后有所收获,一分钱没有白白浪费!


本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

Moday
你好我想问聚类算法如果有多个特征,应该怎么办?还是用别的方法
零壹: 如何聚类过程中,特征很多,那么可以考虑采用PCA(主成分分析)实现特征降维与主成分特征提取。
零壹: 如何聚类过程===如果聚类过程,,
刘洋captain
你好作者 那个我想下 没有积分 然后竞赛模板我也打不开了 能发我邮箱一份吗fly8wo@163.com 谢谢您了
零壹: 已发
~zZ兲使
麻烦给我也发一下Lvshi01@qq.com,感谢!
零壹: 已发
在校生,大二前参加一次建模,想见识学习一下,可否hanqiaoqiaosky@foxmail.com,谢谢
可以的
微信扫描登录