2019数模有奖金吗?
我参加了今年美赛的,M 题,我们队拿了奖(这个题目出得离谱,前5%的队伍都是A)。 我负责建模部分,大概花了四天时间吧,从模型到代码全部自己搞,最后结果也是满意的(就是最后跑分的时候出现了一些问题,不过已经晚了)。
我在完成模型和代码的期间,我队友在做数据和流程图,数据是我从历年数据中整理得到的(一共237组样本数据,约69万条记录),流程图的初稿是我根据算法书和自己想的画出来的。 然后我们进行讨论,确定流程图的最终版本和一些参数设置,这里要提一下,因为我是做单机建模所以一开始对于网络结构不是很了解,是看了其他队伍的网络结构图才想到用卷积神经网络并且实现网络结构的(虽然我后来试验发现用简单的线性模型效果同样不错,而且速度更快,但是我已经把卷积核和步长设置好了,没办法改了,就当是固定参数了)。
在确定模型和参数之后就训练模型,我用的 matlab 的 training 函数,这里我用了随机梯度下降法,因为我们不知道哪个参数先设定值比较好。如果一开始出错,那么后面迭代的时候误差会越来越大。所以我一直担心我的随机数会发生错误,导致我的模型没有收敛到最优解。果然,在我的 model.weights 显示所有参数都达到期望值时,我的 test error 反而比之前的 step by step errorgraph 显示要大。这时我就觉得我的数据可能有问题,或者是我的测试集分割有问题,于是我把我的数据集分成 8 份(原来 10 份),每一部分用来测试,每一部分也用来训练,这样就避免了测试集污染的情况。然后再重新构建模型,这次我用的是 minibatch gradient descent,每次选一批数据来训练,这样就不用考虑初始化的参数问题,我设定每批 400 个样本,共 237 批。
当所有的模型都在收敛的时候,我把每个模型的预测结果取 mean 得到一个总体的预测值,然后把各个队的预测值保存到 mat 文件供评委审阅并打分。 至此,整个比赛就结束了。