QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 10122|回复: 2
打印 上一主题 下一主题

[地区赛经验] 2020MathorCup数学建模比赛A题D题思路

[复制链接]
字体大小: 正常 放大

326

主题

32

听众

1万

积分

  • TA的每日心情
    慵懒
    2020-7-12 09:52
  • 签到天数: 116 天

    [LV.6]常住居民II

    管理员

    群组2018教师培训(呼和浩

    群组2017-05-04 量化投资实

    群组2017“草原杯”夏令营

    群组2018美赛冲刺培训

    群组2017 田老师国赛冲刺课

    跳转到指定楼层
    1#
    发表于 2020-5-25 15:10 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    2020MathorCup数学建模比赛A题D题思路+ a% V* V6 v0 E
    赛题一览1 d! H$ }$ @% r
    A题分析
    % _4 ^6 t: o1 k+ q+ z首先我只做数据挖掘的题,因此有 A 题和 D 题可供我选。什么?A 题是研究生组的,没关系,我照样淦。
    : }# a0 V% n" Q. Q1 R& M- ^( O" j- \6 ]2 }- a. S5 H* ]. m' @& T4 x
    首先 A 题是无人承运的定价分析的。问题是根据附件1(附件1是个 xlsx表格,里面有详细的数据,光特征就68个),确线路定价的影响因素,在根据这些影响因素,评价定价的效果。此是一二问。' |3 ~9 J6 H2 r

    0 f# F9 d8 m' g0 H- J第一问看起来不难,但是复杂就复杂在,定价是什么鬼(我不是白痴,请往下看)?我看到附件1后面还有一个叫“线路成本”的东西。然后我用定价减去成本,得到的几乎是负数。好的,如果定价是无人承运商给予司机的报酬,那么线路成本又是什么呢?难道是司机的花费吗?不可能,因为只有傻子才会接亏本的单。有人可能会反驳,司机事前不知道成本啊。但即便如此,也不会有司机经常去当冤大头把。那么线路成本是什么呢?是无人承运商所要支付的费用吗?如果是,那么定价首先是一个成本吧?因为要支付给司机的报酬嘛,所以肯定是成本。这么算下来,为什么成本还会比定价低了呢?按理说,应该高出很多或是一点点才对呀?那么线路成本究竟是什么呢???
    8 u* Z& l8 `; m# P* e! Y' H
    + t( L! D6 U0 V: }
    $ G0 A4 E3 n6 p- y- s! J抛开这个不谈,因为如果要分析线路的定价,成本肯定是不用考虑的。但是时间呢?(@ο@) 哇~看到这么多时间,我真的崩溃了,何况我 datetime 模块用得不熟。
    ; L; |$ s6 q; D3 t/ z9 E6 R6 c, t  f+ B! S5 r2 Y2 M
    不过当初我想到了一个好办法,就是直接从附件2的特征找相关的不就行了吗?因为附件2是要我们预测的嘛,这样可以省去一大笔功夫。如果要分析线性性,对于无序类别变量,可以用单因素方差分析,或卡方检验来检验有无相关性。如果是连续特征,我考虑用递归特征删除解决。1 L# J/ W( y7 _  _2 H6 b: H7 k
    9 u* K6 o( T) E, d( q
    但第二问就有点难了,评价定价,呜呼~~ 由于题目要保证成本和交易时间最低,因此我觉得可以从这两个方面下功夫。给出一个定价,首先他要低于成本,这样就可赚更多的钱(这里我怀疑成本和定价都是“成本”,不过他们分开算的)。而且,交易时间也要尽量少才行。: l7 f  M, {& h( B# G3 f2 @
    $ u$ G! `  a5 N4 [
    因此,我考虑把定价低于成本很多,交易时间很短的数据提取出来,构成一个新的数据集。再在第一问的基础上,训练一个用来预测新数据集定价的模型。由于训练集的定价低、时间短,因此该模型预测出来的定价大概率是最优定价。于是,把这个机器学习模型用在其他数据中,然后根据预测定价和实际定价,来定义它的评分就行了。
    3 U! |- `7 z* B* {4 `. k3 m
    4 C7 Q: F3 M2 ^2 Y9 X5 u  l, |第三问根据附件2的表格,给出三个调价。首先,我考虑上述的定价低、时间短模型的预测输出作为第一定价。之后,在用附件1训练一个定价高,时间短模型,作为第二定价;再用整个附件1训练模型,作为第三定价。至于成本,有个耐人寻味的地方,就是题目称成本为成本定价。这让我有些担忧,居然成本也是一个定价??????不管了,直接考虑整个附件1与成本训练一个模型,预测、得了!! A题搞定。
    # K0 ?) r7 I; y3 T% x9 k$ J: S0 N" I3 c6 j) x: x( }5 I
    D题分析
    - B* t/ A  t. u0 x$ V9 e, c( }同样是数据挖掘,D题实际上更有难度。为什么?因为年轻人往往比老年人更厉害,此是其一,赛题组怕研究生做不出来,进而怀疑人生也是有的。其二,D题的数据量庞大,大概有70 W条,一个计算机的内存才多大。其三,数据是时序的,小类套着 skc,skc旗下全都是时序数据,城市套路深,你说呢?其四,我感觉数据库是从某家企业的数据库收集过来的,为什么这么说呢?主键的痕迹很明显,这些表格明显是为数据库设计的。因此,这道题真的很贴近实际!!!
    + V% S+ H9 n8 v8 ^; t
    % `. T" u: o/ t/ s, _; H6 k) I  o/ e综上,D题实际上非常、非常难。比起 A 题这种靠概念的小儿科题目,D题更具有挑战性,而且直击机器学习的难题——序列预测!!2 j$ B4 o6 G4 h6 F: F2 {

    ) t) u( m" l. d- A7 E# Z) [, K1 ZD题做法
    9 e; j7 \" }8 V- Y7 `第一问是怎么做的?
    9 C9 L6 E! [1 T) g0 E) V第一问:找出节假日内,影响目标 skc 销量的诸多因素。包括:库存、销售方式、折扣等。
    3 P1 O5 n* G5 Y9 J; w0 J, M0 t! {% F' s" }! _
    对于库存,只要将 附件3 追加进 附件1 中就可以了,这是数据库的连接操作。一个方法是用 mysql,先保存到数据库,再用查询语句。或者是用万能的 Python,其 Pandas 模块的 join merge concat 函数,都是数据表格进行联接操作的绝佳选择。# M. U! R: S/ g& R8 i  |0 n

    % y7 `; H, g- T& [对于销售方式,我这里考虑:销售方式与所属小类挂钩。不同所属小类的销售方式不同,属于同一小类的销售方式一样。于是,为了判断所属小类与销量是否有关,可以采用单因素方差分析的方法。
    " r7 W. y+ z& Q- N1 @
    - @! E3 f) f( p3 ]# G) q$ `对于折扣,可以考虑将 附件2 使用 数据库操作,追加到附件1中,得到标价。再用销售流水里的销售额,除以销售量,得到平均售价。最后,根据售价和标价,求出折扣。从而完成数据的整理。部分数据如下所示:
    " V- `2 E6 q. A( g. p+ U% I* ?2 t, g9 F7 n
    # w3 @) ]6 i5 `0 E
    之后,可以得出 skc 的销售特征,包括:库存、所属小类、标价、平均售价、折扣。当然,里面包含缺失项,这是很正常的,不可能每个表格都有相应的 库存、标价、所属小类数据。因此,对于缺失项,我考虑进行按行删除。
    + _( X# ]) ?. j7 b, x4 j: p" t$ N) j  j) u# d/ T' |
    前面已经用单因素方差分析,得出所属小类对销量有影响。这里,用递归特征删除的方法,使用线性回归模型,结合库存、标价、售价、折扣来预测销量。之后,每次删除一个特征,如果模型拟合效果降低,则回滚删除操作。直到每个特征都被遍历过为止。最后得出:售价可以删除。除此之外,还得到了一个关于销量(因变量)和库存、标价、折扣(自变量)的线性回归模型。(可以说是完成了如何影响的研究吧!)4 @2 M8 l, D4 M# U2 @, k

      g$ ~1 W: p. E1 v( O$ P, x( q第二问、第三问是怎么做的?. a0 h, v/ e1 D7 x/ J- J# H
    第二问、第三问是要求目标小类在 10月 01 日 三个月后(13周,其实就是到 12月 31日啦),预测销量的 MAPE。笔者根据 MAPE 公式,最后推导出第二问、第三问要求的,其实是一个问题:根据 10月 01日之前的数据,预测 之后的周销量。这不,又是一个机器学习问题。
    ' u" ?# H: O9 }7 s( \
    4 g; _; i6 |4 M; }+ z, _但是,这个机器学习可比 A 题难了好几倍。A题的难点在于特征的处理,至少它的数据是静态的。某条数据总不可能与隔壁老王,不,隔壁的数据有关系吧。但是 D 题就不同啦,你细品。根据 10月01日之前的数据,预测之后的数据。这不是序列学习还会是什么?但是,除了这点以外,他的难点在于,每个 skc 都是一个子序列呀!而且数据实在太多了、太散了呀。如果用 Python 来整理数据,可以想象,要花费多少精力和精神!!!!
    7 ]7 z7 c; |7 `: {8 `; W
    # z# n0 R& W6 C. c, l根据问题一,预测销量可以用小类、折扣、标价、库存,另外,还外带了一个当天是否属于节日(这个也可以分析出来,是对销量有影响的。)怎么弄呢?对于小类,用 One-hot 编码。 是否属于节日是一个二值变量,可以不用预处理。其余的数值连续型变量,可以用 Zscore 标准化。
    5 _' ~( [7 I7 q8 i% @, d* d7 I! X1 s9 X0 L
    之后,就是训练模型咯~. \5 O( s2 M: [( m$ M
    ' {9 Z4 W5 L5 K0 Z$ s0 t
    首先,一开始由于缺失数据太多了,我删了很多,导致时序性被破坏得不成样子。因此,我就把数据以周为单位整理了,对于节日,只要该周内包含一天的节假日,就设为1。经过如此,处理过后,数据还是有 1 W。
    1 i# _# R6 {; z* h) g5 n
    ! v, h6 j6 T( i, y$ G. E# W一开始,我还天真地想着是否可以忽略这种时序性(熬夜熬傻了吧)。然后就用便了几乎所有的机器学习模型呀,注意是几乎所有的机器学习(不包括神经网络)。最终得出决策树效果最好,但MAPE 大于 1,呵呵。
    $ C3 x6 U! U2 e! h3 a
    $ N/ U/ g* n: {" [4 V- Q1 r  f那么神经网络呢?用了一个非常复杂的,神经节点数大约 2000 个的 BP神经网络,跑呀跑呀。结果出来,MAPE 还是 1点多,比决策树好那么一点点,一点点!* I4 }% b2 L; x! O
    % Y8 T* P5 ^1 ~  P
    最后,我开窍了,用了时序神经网络 LSTM,结果呢?用了节点数为30 的、只包含一层隐藏层的 LSTM,得出来 MAPE 为 0.0013,几乎没有误差呀。天呀!!!!!!!!
    ) t) o1 N8 s3 @, q6 s! a1 |9 ~% E( S- a( n
    最终小结$ l) M% M$ b( n: R, ]
    笔者认为,D 题作为研究生的题目,其实会更好。虽然世界上的“烟酒生”非常多,但大佬型的研究生,是我们本科生难以比拟的。不让他们写 D 题,实在有点可惜了,是真的可惜了。 我感觉 A 题作为一道数据挖掘的题,是不合格的。首先他集合了太多专业知识,不是这个领域,或对这个行业没有了解的人,是做不来的。就比如我吧,一开始看到这题以为多难,其实细细分析,出了里面模棱两可的什么成本、定价、成本定价这些搞不懂外,其余的思路倒是一望而知,洞烛无疑。
      B( W; F+ ~& ~2 _, J7 X# F; |8 K
    ; }8 H* |  g# t' ]' s虽然我很想写一下 A 题,让改卷老师吃惊一下,但是 D 题的难度吸引了我。 人总是要挑战的。D题看似简单,其实很贴近实际。如同上面分析的,它的数据好像是直接从企业的数据库挖出来的。就比如只会 Matlab 和 SPSS 的小白,这种题绝对是做不来的。另外,D题的表格非常多,这很考验大家的数据的组织能力。如果没有学过数据库(没学过数据库就别选数据挖掘啦),恐怕要花费很多功夫,才能把数据拼接成一个表格。另外,D题不是静态数据,这一点与傻瓜 A 题不同。他直击当前的机器学习比较新的领域——序列预测(2015年开始热门起来)。对于 A 题,虽然没做过,但是我相信,如果我要做,除了特征预处理难住我以外,那种程度的数据挖掘,我绝对没有问题的(无外乎机器学习,不行就 BP 神经网络,再不行?CNN,再不行?特征预处理再来一下)。
    - O: ]+ w; x/ K* o9 F- @
    ( ]& e3 a* ~# a8 M; b' Z6 @因此,我感觉 A 题像考 概念,考知识储备,考无中生有(就比如第二问叫你评价,评价指标得自己定吧)。D题考技术、操作,考的是技术储备,耐心和毅力(编程中会有很多困难,而且神经网络也很难训练,并且要注意底层实现,不然内存说不定就爆了,我本人就爆了大约3次左右,中间一次蓝屏,伤啊!)因此,希望 Mathorcup 赛题方,好好研究赛题。最好是实现做一下,不然就会出现本届的笑话了。赛方的各位,不要把专科、本科看得比研究生还厉害呀!!! A 题这么简单,居然,╮(╯▽╰)╭。
      a( |3 `- s: f2 u6 N" d. n
    4 g+ G3 x9 C2 R' k) B最后,希望大家像我一样,追逐困难。不要轻易向 容易妥协。也不要相信权威,自己分析一下,才会知道什么是难、什么是不难。
    + y3 ~; R8 y+ m; S# c0 b, d* c————————————————  u3 p: H6 D% k3 l: E7 q
    版权声明:本文为CSDN博主「zhuo木鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。- _' M( S5 m9 `
    原文链接:https://blog.csdn.net/weixin_42141390/article/details/106325739- k1 {8 Y' r+ ?

    5 q+ T) S6 {3 G! A6 b
    / d/ ]8 P; X1 g5 s$ U( U% w
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    0

    主题

    1

    听众

    63

    积分

    升级  61.05%

  • TA的每日心情

    2020-8-25 23:27
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    自我介绍
    我叫杨小小

    ) I7 X$ I" E; M5 J( z
    # n1 i; x+ G( B2 I0 H2 H5 Z" M4 l7 |: Z1 q% Y3 U
    思路差不多,但是具体方法我们都不太相同
    % r3 ?+ S8 ^6 P" e  h& A
    回复

    使用道具 举报

    0

    主题

    0

    听众

    2

    积分

    升级  40%

    该用户从未签到

    自我介绍
    1+1=0
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-23 16:53 , Processed in 0.349075 second(s), 67 queries .

    回顶部