美赛反思

第一次参加美赛,尽管在机器学习方面做了较多的储备,但实际上用的都是数据处理清洗的方法。很遗憾的是国赛的错误再次上演

那些错误

选题

选题这个错误我们队又犯了,比赛前两天竟然同时开多个分支,两位建模同学试图在 B 题和 C 题中同时开工,导致数据处理同学化身 人工智能问答机 ,不停地提供他们所需要的各种没有现成数据的数据,人工爬虫当了很久,可以说是疲于奔命了

数据抓取

数据抓取:设定好各个参数的标准

如果可行应当大家在正式建模之前,一起抓取数据并清洗。这次我们的错误主要在

  • 建模的人数据要求与标准经常改动,体现在刚发过去一份数据,就要另一份不同标准的数据,这部分时间消耗了我绝大部分时间(除了最后 3 个小时),如上文【选题】一节所说,大多数时间都是在疲于奔命
  • 数据文件名称没有设定统一格式,致使数据抓取后建模人不知道哪个是
  • 各个参数的名称没有预先设定好标准,导致在数据文件版本迭代时内容混乱
  • 比赛前没有搜集数据过滤与清洗的工具,导致比赛时所有的轮子都是临时写的

排版

能用 Latex 就用 Latex,或者论文排版由指定的一个人来执行

Latex 在生手看来难度系数颇大,且修改不便,但是 Latex 是保证输出文件格式统一的最佳实现

举例:

  1. 如果用 Word,A 电脑装了 MathType,公式拷贝到没有装 MathType 的 B 电脑是很有可能会出问题的
  2. MathType 的特定公式拷贝,可能触发 Word 死机,这时候如果没保存就完了
  3. 富文本格式的先天缺陷,是很容易让不熟悉的人困惑于各种格式,莫名其妙的字体大小变动,换行等等
  4. Latex/Word 如果预先设定好模版,各个部分分别把内容填进去,是非常高效的。但在实践中,往往没有模版,可能论文版式是甲同学先设置的,交给并不熟悉 Word 的乙同学来完成自己的内容,乙同学会花费大量时间去找各种格式是如何实现的,当时间所剩无几时,乙同学心理压力会非常大

收获

极大地锻炼我数据清洗,数据过滤的能力。比如有一处计算流程是这样子的

  1. 有一个输入变量
  2. 根据输入变量,从 JSON 格式文件中获取一个数值,作为参数一
  3. 从一个数据文件中获取参数二
  4. 根据参数二,从另一个数据文件中获取参数三
  5. 根据参数一,参数三计算输出

这个实现看起来简单,但是上述的 JSON 文件和两个数据文件并不是同样的来源,其中的关键字区别甚大,而 pandas 没有内置的简洁的模糊搜索的方法 1 ,只能在使用前先进行预处理,数据读取后再统一转换成大写/小写

再如,有一个 6 万乘 6 万的航线数据文件,我要根据这个文件中的出发机场,和目标的机场的对应的国家,进行一些处理。这里用了两个数据库,一个是航线数据,一个是机场数据。6 万乘 6 万的数据进行遍历,在我笔记本上得花 4 分钟以上,这还是用了 pandas apply 操作,如果用按行遍历,那. . .

比赛之前我是知道有一个软件 XCel 可以进行 Excel 数据可视化过滤的,但是当我长时间进行机械劳动时,我就不思考了。这个软件还是得学一学的

一些提高效率的技巧

  1. 如果在同一 Wi-Fi 下工作,那么用 Python 可以搭建起一个简单的服务器,用于单向文件传递,python3 -m http.server 8080,甚至可以把自己写 Wiki 放进去 2 ,作为协作手册。如果纯粹是给自己看的 python3 -m http.server 8000 --bind 127.0.0.1
  2. 用云盘同步文件!!!

结语

我觉得这些错误的根本原因,在于我们这个团队里没有一个处于绝对领导地位的人,来进行顶层设计,反而是分布式的。看起来自由,却带来的影响效率的混乱标准,所以,这个问题怎么解决呢?


  1. https://stackoverflow.com/questions/13636848/is-it-possible-to-do-fuzzy-match-merge-with-python-pandas  

  2. 可以用静态博客系统生成,也可以用 MWeb,MarkEditor 这样的软件来实现  

Comments
Write a Comment