机器学习暑期笔记01--赛题分析

256 阅读6分钟

这次参加的DataWhale暑期活动,选择的是机器学习方向,上学期学过机器学习,正好再练练手,巩固不扎实的地方,熟悉一下竞赛流程。建议大家使用飞桨平台多核CPU的环境来跑,不然直接跑baseline成绩不理想。这是第一次跑出来不理想的初赛成绩:

捕获.JPG

赛事链接challenge.xfyun.cn/topic/info?…

先介绍一下DataWhale:

Datawhale 是一个专注于数据科学与 AI 领域开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“ for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。

大家可以关注DataWhale的公众号和Github,直接搜索即可得到相关结果。

一、赛题介绍

这次是科大讯飞锂离子电池生产参数调控及生产温度预测挑战赛,使用机器学习模型进行预测,学习营提供有baseline,初步目标是跑通,接下来继续优化。简而言之就是给你很多特征,让你根据数据集里的这些特征来进行针对某些特征的预测。

主要目标:预测电炉上下部空间17个测温点的测量温度值(注意是上下部,预测结果有34列)

二、赛题分析

这里baseline的介绍写的非常好,直接引用:

通过电炉空间温度推测产品内部温度,设计烧结过程的温度场和浓度场的最优控制律:

  • 任务输入:电炉对应17个温区的实际生产数据,分别是电炉上部17组加热棒设定温度T1-1 ~ T1-17,电炉下部17组加热棒设定温度T2-1~T2-17,底部17组进气口的设定进气流量V1-V17;
  • 任务输出:电炉对应17个温区上部空间和下部空间17个测温点的测量温度值。

值得注意的是预测目标为34个,所以需要我们进行34次模型训练和预测。

同时数据规模比较小,可以快速处理数据和搭建模型,对于机器要求8g内存即可。

本次为结构化赛题,包含电炉烧结每个时间段的流量、上下部设定温度,以及预测目标上下部测量温度值。

三、模型介绍

不了解机器学习的同学们可以简要看看,就是一个模型,我们先把训练集的数据喂给它,让它进行训练。经过训练之后,把待预测的数据给模型,给出对应的预测结果。先不要纠结于模型的实现,只要知道它适合我们的任务。

baseline中使用的是LightGBM模型,这个模型在之前机器学习课程中我也使用过,它是也GBDT的一种。

这里简单介绍一下: GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预测、搜索排序等任务;在各种数据挖掘竞赛中也是致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。而LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。

来源:zhuanlan.zhihu.com/p/99069186

四、主要流程

大部分赛题都是回归问题,针对某些数据进行预测,给出预测结果。预测类赛事的主要流程:

  • 准备数据
  • 探索性数据分析(EDA)
  • 特征工程
  • 训练模型
  • (可视化模型效果/模型融合)
  • 生成最后的预测结果(导出csv文件)

里面的步骤还可以进一步的细化,比如在准备数据的过程中完成训练集的划分,在EDA过程中完成了数据可视化和预处理等。如果能很好的完成每一步,基本上结果不会差,主要是看特征工程了,剩下的就是调参。(当然数据还是王道)

五、针对初学者的建议

进了DataWhale交流群后发现群里大佬云集,当然也有不少像俺一样的萌新小白,也有很多编程经验较弱的朋友,根据上学期机器学习的拷打和自己学习编程的浅薄经验,给出一些可能对刚入门的同学有帮助的建议:

(1)如果没有接触过python编程,但是有其他语言的编程经验,可以在很短的时间内光速上手。我们主要关注于python在机器学习方面的应用,先了解pip和python基础语法,然后再熟悉一下机器学习中常用概念(如什么是特征,为什么要划分数据集等)和机器学习中常用的库(如 sklearntqdmpandas等),最后熟悉一下竞赛流程,基本足够完成任务了。

(2)如果一点编程经验都没有的话,花上一周时间先入门一下python,了解了语法和关键概念后就能像(1)中一样继续。

(3)小白可以优先直接使用现有平台,简要学习一下平台的环境(类似jupyter notebook)怎么使用,先跑通baseline,不再抱有畏惧,之后再安装conda等。(不过平台有时间限制,还是建议大家自己安装配置环境)

(4)接下来的时间可以细心学习竞赛中的每一步,先不要纠结于各种数学模型原理、底层实现、证明等等。我们先把握住大体思路,先学习数据预处理、可视化分析、特征工程怎么做更好,怎么把模型融合起来,如何防止过拟合等等。接下来的时间我们再慢慢深入学习这些知识,可以看看吴恩达和李宏毅的机器学习课程。

六、总结

这次竞赛用飞桨平台跑通了baseline(真香),回顾了一下机器学习预测的流程,接下来就是仔细精读baseline,不断优化上分。机器学习竞赛和平时的学习还是有区别的,通过竞赛更能好好扎实我们机器学习的功底,欢迎大家一起加入DataWhale,共同学习进步。希望能在这个暑假多多收获,扎实机器学习的基本功,不断成长!