最近在当本科生课程的助教,由于需要一个平台来评估学生在课程大作业中模型的指标,自然地就想到了kaggle,因为有不少的课堂竞赛是放在kaggle上面举办的,但是在网上查的如何创建竞赛的相关信息较少,在创建竞赛的过程中也踩了一些坑,所以在此记录一下。
新建InClass竞赛
在https://www.kaggle.com/competitions链接中,直接点击"Host a Competition",然后点击提示"Interested in hosting a classroom competition? Visit Kaggle InClass",进入InClass竞赛的介绍页面,点击右上角"Create new competition",补充竞赛的相关介绍信息,最后点击"Create Competition"就可以看到一个创建好的初始化竞赛页面。
进行Evaluation设置
1. Solution Mapping
这个是最关键的步骤,也是最容易出错的地方。在Host->Evaluation中,你需要以csv文件格式提供groundtruth的标签信息,具体的行列格式根据你所需要的Metric来确定,在这里给大家分别介绍F1以及AUC的对应格式。
- F1 score
对于F1 score,只需要csv文件中提供两列数据,ID和label,其中ID是数据的唯一主键,只要不重复即可。对于单标签分类任务,label设置为[0,类别数]中的整数即可,不使用one hot形式,举例如下:
ID | Lable |
---|---|
id1 | 0 |
id2 | 6 |
对于多标签分类任务,即一个样本可以对应多个标签,这时候对于多个标签,在LABLE一栏中用空格隔开即可,举例如下:
ID | Lable |
---|---|
id1 | 0 5 |
id2 | 6 9 12 |
- AUC
对于AUC而言,所需要的列数根据分类的类别数来确定,比如说一个3分类问题,需要ID, label0, label1, label2共计四列,其中label0, label1, label2分别对应一个[0,1]的浮点数,表示对应类别的预测值,当然对于groundtruth而言,对应标签的取值设置为1即可,举例如下:
ID | Lable0 | Lable1 | label2 |
---|---|---|---|
id1 | 0 | 0 | 1 |
id2 | 1 | 1 | 0 |
完成测试数据的ground truth提交后,然后就可以设置Solution Mapping,对于F1:ID->Id(String), LABEL->Expected(String),对于AUC: ID->Id(String), LABEL0->Expected(Double), LABEL1->Expected(Double), LABEL2->Expected(Double),然后选择Public LeaderBoard和Private LeaderBoard的占比即可完成Solution Mapping。
2. Sample Solution Mapping
在完成Solution Mapping之后,需要再提交一个SampleSubmision.csv文件,也就是后续竞赛参加者可以参考的提交样例,格式需要跟ground truth文件的格式保持一致,提交文件之后,同样也要进行mapping,对于F1:ID->Id(String), LABEL->Predicted(String),对于AUC: ID->Id(String), LABEL0->Predicted(Double), LABEL1->Predicted(Double), LABEL2->Predicted(Double),完成之后,就可以在Sandbox Submissions中看到提交样例的实际得分。
一些可能出现的问题
- 在进行Solution Columns的mapping时,如果你提交的csv文件存在冗余列,会导致mapping过程卡死;
- csv文件的header不能是纯数字,str类型的数字也不行,否则会报错;
- 在进行Sample Columns的mapping时,刷新的圆圈会一直在转,但其实这个过程已经完成了,只要进入sandbox submission栏,就能看到提交样例的得分情况。
完成其他设置
剩下的工作就比较简单了,把竞赛相关的信息在各个页面进行修改(支持markdown和html格式)然后把相关的数据集、提交样例进行上传,设置ddl,每天提交次数等…当Lanuch Checklist中的所有事件都打上勾时,就可以发布竞赛了。