都说人老了,才会总是回忆过去,才会翻来覆去想自己过去都干了些什么,可我似乎不同。我才20岁,但是有时也会躺在床上,想想自己的过去,自己最近,自己今天都干什么了。

生活在过去固然是不好的,但是如果过去能给我们带来一点思考和点拨,应该也不至于太罪恶吧。

去年参加统计建模的时候算是状态最好的时间之一。虽然刚忙完国赛的事,但是第一次参加国赛能拿赛区一等,心里其实也并不遗憾,因为知道自己的水平,而且比赛时候做的文章那么水,能拿好名次反而会让我奇怪。在忙完国赛后,并没有停止建模的学习,因为确实对这方面有些兴趣吧,而且Matlab、统计学习、人工智能也都是觉得一定要好好学一学的东西。

就在这个时候学办的老师通知我统计局要举办数模比赛,本校的组织工作交给我们协会来做。首先我是真的不怎么擅长组织工作,对这方面既没经验又没想法,但是我一贯不擅拒绝,就这么神奇的接了下来。之后就是繁琐的宣传、讲座、组织工作,每天既要上课,又要想着工作,还不愿意落下英语和专业的学习,真的是忙死了,要是放在现在我可能都受不了要歇菜。嗯,现在不是一个人了,有时就会想追求安逸了……

重点说做论文的过程吧。先是选题,我看了几个题目(当时还没有材料和数据),小微工业监测、消费价格特征、生产者价格变化、居民收入与经济总量关系,四个题目,其中三个我就连题目里的名词都不能保证完全看懂,于是很理所当然的就选了消费价格……后来统计全校这个题目也是选的最多的。

之后统计局组织了两次讲座,可惜只通知了我后一次,于是我带着几个同学去那边听了下,老师是吉财的,听着感觉不错可惜完事后想想,他讲的方法和我们的数据实在不匹配,不好往上套啊!还得自己想办法。

于是各种搜研究CPI的方法,经济学的文章似乎不大愿意用数学模型(确实,想用数学模型描述结束经济学数据还想有合理的结束、还想避免经济学数据间严重的相关性真的很难),所以翻着翻着就不看CPI类的文章了,之间翻数据处理的文章。

李笑来曾经说Research就是一遍一遍的search[1],其实我的感觉也是这样,特别是在数学建模中,不通过反复的搜索和阅读,几乎不可能快速完成一篇高质量、专业的文章。在经过反复search之后心里就有了大概的方法,比如用HP滤波可以把周期和趋势分开,用EMD方法不仅可以分离趋势周期,还能将周期分解成IMF,类似于一些自周期吧,要想对数据做周期方面的处理,需要保证周期稳定,做单位根检验,通过时差分析可以看数据间的时差关系等等。

各种方法不断组合,在脑海里,在电脑里不断试验,用Matlab、Eviews、SPSS尝试,逐渐就形成了自己最后的方法组合,让一个队友帮我做些数据处理,每天晚上一下课就忙着分析结果,作图,大概一篇文章就成型了。

在之前学了不少软件,在建模过程中都对效率的提高很有作用。比如事先准备样式集和大纲分级可以让Word的排版速度和排版效果好N多,事先装好新版的MathType,排出来的公式又美观还能自动编号,想引用的文章在下文章时把题录也下下来导到NoteExpress里,引用时就不用考虑整理上标和引用目录了,真是超方便。

专业的内容不想说太多,反正算是有点自己的想法,自己写完也还挺满意的,很长一段时间都觉着是写的最好的一篇文章,虽然后来越久越觉着写得好烂,老哥看完也说想投得大改,不过在我完美的Presentation后依然拿到了比赛的一等。

后来那这个文章申了大学生创新创业项目,依然顺利的申到了省级项目,当时觉着理所应当,现在想想,一切事情都要怀有感恩之心啊,自己以前实在是有点太顺利了,Too young too simple啊。

转年就是13年国赛了,不过感觉状态一般。因为暑假和开学那段时间都在高高兴兴地学Python,包括做的项目也硬生生被我掰成了Python做,自然是Python熟,而算法啊、Matlab啊生疏的节奏。

但是就算这样也得硬着头皮做,因为一年就这一次机会啊。

于是比赛前硬是重翻了一遍Matlab的书,看了两本智能算法的书,不过只看明白了一本,但总算是又会用一点遗传算法啊、神经网络啊、模拟退火啊这些比较高级的算法了,但用这些算法,如果不自己改造编程的话对题目或不同问题背景的适应能力很差,如果自己编程的话又得很花时间,所以主要目标是尽量用Matlab工具箱完成。

到了比赛那天,总算是有点信心了。看了题目,有两道,一道交通的,一道文档图像拼接的,正常的程序应该是队员们一起查文献,看谁能找到与题目相近的,大概觉着能解决问题的。不过文档图像拼接实在很难找着和我们这道题相匹配一点,而且我之前正好用Python做过一些图像处理的问题,于是就试着用一个很朴素的算法(大概就是边缘的像素进行匹配测试)写个程序试试,结果就十几分钟吧,就写好了,然后拿数据测试,正确率居然是百分之百!当时大家都很激动,因为以前我们虽然也是一般是在第一个上午做完第一问,但没碰见过这么顺利的。

几乎没什么异议的我们就决定做第二题了,也跟我之前做过一道交通题目,不想再做交通题目,而且想尝试编程做这个题,再说我觉得想这么考验编程题目,做出来的应该会少一些吧,得奖概率应该能高些。其实这里挺有隐患的,因为我们并没有仔细研究后几问的难度,以及我队友对这个题目能做什么,毕竟他们的编程不是太行,而我也不放心把论文交给别人写,所以后来80%的工作都由我来做,为后来的悲剧埋下了祸根。

附件一、二都是纵切的一大堆长条,如刚才所说,分分钟就写完了。在做附件3上遇到难题,毕竟两百多个碎片,还想用那么朴素的算法做,必然会有问题,那怎么能办呢?我们的第一想法是查文献,结果无果,于是大家就一起想算法,太复杂的不好编程,于是只留下一个算法,就是先做同行监测,把同一行的,利用行高、文字行位置等等这些信息先定下来,这样知道是同一行的再利用上面的朴素算法再去拼接就OK了。说起来想法很自然,但是实现起来又是一大堆问题,好不容易解决了已经是第二天下午了,还有附件四没解决呢。因为附件三是汉字,汉字都是方方正正的,无论是确定同一行还是做拼接都好做很多,而附件四是英文,瞬间难了好多,在和老师交流之后,我们大概确定了做水平投影来定出中间行(就是用四线格写英文时的那个中间行,一般来说那里笔画最多,或者说水平投影时能量最强),再利用中间行位置定同行,有时说起来很自然但实现起来继续问题重重的算法。因为我还身兼编程+写作,进度可以说不可避免的慢了好多,直到第三天晚上才把算法完善了,虽然正确率没前边三个那么高(前边三个几乎都是100%,这个在同行识别上是91.38%,拼接正确率没统计,但估计大概在80%左右吧),但总算是做出来了。

其实这个时候做附件五确实迟了,而且想做出和附件四不同的算法也很麻烦,所以只给附件五做了个二值化,然后用Sobel算子算子识别了边缘,再做水平投影,虽说跟附件四的方法换汤不换药,但是总算有点变化,而且是有益的变化,不过针对正反面这个信息还是用得太少。最后附件五程序都没怎么写,只是把方法写好,程序用附件四的,结果用另外一队人工拼出来的结果,把论文做好匆匆交了卷子。

虽然我们附件五不算是做完了,但是我觉着全省能完整做完的应该也不会太多吧,毕竟吉林省的数学建模水平,我觉着也就吉大和东电强些?B题能给出完整、可行、正确率高的的程序的我觉着不会超过十队二十队吧,不比北京啊、浙江啊这些强省……

结果最后还是没进答辩组。大概是因为论文写的不行,没什么公式,全在写算法,早知道就凑些公式了……其实是打算凑些公式的,但是编程和论文都我来做,实在没工夫了,只好遗憾了。

不过遗憾么?虽说没国奖有点失望,但也不是怎么遗憾吧,因为我从不觉着如果拿了国奖能对我有什么改变,我看中的,是尝试解决问题的快乐,自己撰写论文的快乐,将自己的经验分享给需要的人的快乐,还有,自己能力的提高。

明年不一定参加数学建模了,先拿这一篇文章作为自己这段时间,这个领域的一个纪念吧!

 

[1]见李笑来的博客:我这一辈子学过的最有用的东西http://lixiaolai.com/the-most-valuable-knowledge-I’ve-acquired

Comments are closed.

Post Navigation