[Pytorch框架] 5.1 kaggle介绍
文章目录
5.1 kaggle介绍
5.1.1 Kaggle
平台简介
Kaggle是由联合创始人、首席执行官安东尼·高德布卢姆(Anthony Goldbloom)2010年在墨尔本创立的,主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台。该平台已经吸引了80万名数据科学家的关注,这些用户资源或许正是吸引谷歌的主要因素。
本段摘自百度百科
通俗的说,Kaggle上面有着各种高质量的数据集,并且基于这些数据集会有一些大的公司进行赞助,来举办一些算法的竞赛,在竞赛时还可通过社区进行讨论(包括比赛中的分享、答疑,和比赛后的top solution分享)。这样就使得全球的顶尖高手会对参加比赛产生兴趣,因为收获到的不仅有奖金还有名气。同时kaggle对萌新也很友好,在社区中可以学到很多的知识和解决方案(top solution)。
比赛介绍
kaggle 网站是纯英文的,我们可以把比赛分为2类:
- 竞赛competitions:竞赛的目的很简单,就是要求在指定时间内(一般是2-3个月)使用出题方的数据完成指定的任务,如果有幸赢得比赛,不但可以获得奖金,模型也可能会被竞赛赞助商应用到商业实践中、获奖者直接进入赞助企业工作或者获得一些重大会议邀请、发表论文等
- 数据集datasets:数据集是赞助商为了解决某些问题,免费公开了自己的内部的一些脱敏的数据,所有人都可以使用这些数据集进行研究,来改进现有的模型或者优化现有问题的解决方案,但是这些模型或解决方案可以不公开,所以这部分是不提供奖金的,只是能够与别人的方案做对比。
5.1.2 Kaggle板块介绍
Data
这个不用多介绍,就是我们所使用的数据。
这个模块需要认值阅读,它介绍数据的产生方式、存储形式、每个字段的含义等。如果数据规模很大,你没有内存足够大的服务器可以hold住,可能就没法打这个比赛或者使用这个数据集;我们还要注意他的数据类型什么,比如图像数据那就得用深度神经网络,如果对这方面不熟或者没有GPU可用,肯定是没有办法参加这个比赛,不要妄想使用CPU来做CNN计算,至少目前来说是不可能的。
我们可将 kaggle 平台上的比赛分成一下4类:
- 挖掘:面对的是结构化数据,也就是表格数据,包括了各式各样的预测问题(预测销量、点击率、推荐排序等),主要的共性就是理解数据,理解问题,从数据中找到有用的信息用来预测,这类问题胜负更多的是在特征上,所以这部分是树形模型的天下比如有名的xgboost。
- 图像:图像的话那肯定需要CNN了,这部分虽然可以用迁移学习来做,但是要想获得排名大量的算力也是必须的,因为要验证微调的次数也会很多。
- 语音:这部分不太了解,就不献丑了
- NLP :BERT出来以后各种预训练的权重会对这方面的比赛帮助很大
Rules
比赛规则。这个必须要看,无论是萌新还是大神,比赛的规则还是要遵守的。
提交次数:这里会写明每天允许的最大提交次数,一般是 5次,假如一个比赛持续时间是三个月,那么总提交次数差不多就是 5×90=450 次。
很多人为了躲过提交次数的限制或者“节省提交次数”,专门注册了小号,这被称为 multiple accounts,是会被 kaggle 的反作弊系统侦察出来的。在比赛结束后,会先公布初步排名,然后 kaggle 平台反作弊系统开始运行,大约两三天后,凡是被判为作弊的队伍直接从排名中移除,几个月的努力就打水漂了!所以这个操作一定要禁止。
另一个是组外私自分享代码和结果,这也是明令禁止的。组队之后队员之间可以分享,或者通过公开的 kernel或discussion区分享。同样,如果被检测出不同队伍或个人间有相似的结果,也会被移除最终榜单。
Team
在参加比赛的时候可以向别人发起组队邀请,或者接受别人的邀请,三个臭皮匠顶个诸葛亮,组队的好处就不用说了,每个队伍最多4个人,并且是可以共享代码的,这样相当于算力提高了4倍。
另外就是一定要给队伍起个骚气的名字。
Kernels
。。。(不知道怎么翻译,总之就是核心代码)。支持 Python 语言的脚本 .py 和 .ipynb,和 R 语言的脚本 .R 和 .ipynb。
分 public kernel 和 private kernel。
public kernel是公开的,大家都可以看到,从这里可以学到非常多的东西,当然你自己也可以通过公开自己的 kernel 分享解决方案或观点。
private kernel是你自己的,别人看不见,你可以分享给组内成员。
为方便大家打比赛,kaggle 提供了一些运算资源。kaggle 用户的每个 kernel 可以有 16G 的内存和 4 核CPU,这足够打多数比赛了。另外,提供了 GPU,在新建 kernel 的时候可以选择开启 GPU,但当打开 GPU 时,CPU 和内存资源会少一些,这个后面的薅羊毛指南中会详细介绍。
Discussion
讨论区,这个区大家会分享观点、讨论问题、甚至寻找组队队友。
kaggle 的分享氛围非常好,对萌新也非常友好。在整个比赛进程中大家不断地分享自己的新发现,很多有用的信息都是在这里获取的。
对于一个新手而言,每天做好 kernel 区和 discussion区的跟踪,有充足的时间尝试他们的想法,应该可以获得一个不错的排名。
比赛结束后,一些大牛甚至会将自己获胜用到的方法、小技巧(tricks)全部分享出来。
Leaderboard
排名区,分 public LB 和 private LB。比赛方会将 test 数据集中一部分(比如 30%)拿出来做为 public LB 评分和排名,剩下的部分作为 private LB(也就是最终结果)的评分和排名。
你每天都可以提交并查看自己的答案在 public LB 的得分和排名情况,在比赛结束前需要选择两个提交作为自己的最终答案,比赛结束后,平台会计算你的答案的 private LB 得分并自动挑选得分高的一个作为你的最终成绩。
在讨论区你会经常听到大家讨论 CV score、LB score,指的就是你模型本地交叉验证的得分和提交后的 public LB 得分。
shake up:public LB 得分可能会和 private LB 得分差别很大,比赛结果公布前你可能排名前十,比赛结果公布后发现自己跌到上千名了,这就是所谓的 shake up,一般是模型过拟合了,这个需要在训练的时候就要注意。
5.1.3 Kaggle竞赛的排名机制
一般情况下,都是以准确率为导向的排名,毕竟我们的模型计算的准确是第一标准。
针对于比赛而言,在比赛结束之前,参赛者每天最多可以提交5次测试集的预测结果。每一次提交结果都会获得最新的临时排名成绩,直至比赛结束获得最终排名,Kaggle将参赛者每次提交的结果取出25%-33%,并依照准确率进行临时排名。在比赛结束时,参赛者可以指定几个已经提交的结果,Kaggle从中去除之前用于临时排名的部分,用剩余数据的准确率综合得到最终排名。
所以,比赛过程中用于最终排名的那部分数据,参赛者是始终得不到关于准确率的反馈的。这样一定程度避免参赛模型的过拟合,保证评选出兼顾准确率和泛化能力的模型。
5.1.4 Kaggle薅羊毛指南
Kaggle提供免费访问内核中的NVidia K80 GPU。我的个人理解相当于1060或者1070的水平吧。
我们可以在Kernel的界面右侧底端,Setting选项中将GPU开启,这样就可以使用免费的GPU资源了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ctn9wZCu-1618640831890)(kaggle.png)]
Kaggle只提供6小时的连续GPU使用时间,虽然对于大数据量计算来说根本就不够用,但是对于研究,这些已经够了,例如我们在图像识别中经常用到的CIFAR-10 图片分类,一般训练2个小时左右就能够得到比较准确的模型了,这对于入门学习来说已经沟通了。
更新:现在Kaggle提供的GPU为 P100,限制为,每周免费使用30小时,还可以连接google的colab,这样对于我们学习和测试,绝对是足够了。
5.1.5 其他的一些数据竞赛平台
除了Kaggle,其实还有不少类似的平台;
[Pytorch框架] 5.1 kaggle介绍的更多相关文章
- 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
在前面介绍了一系列的<基于Metronic的Bootstrap开发框架经验总结>的随笔文章,随笔主要是介绍各个知识点的内容,对框架的总体性界面没有很好的阐述,本篇随笔主要介绍这个Boots ...
- xmpp整理笔记:xmppFramework框架的导入和介绍
一个将要开发xmpp的项目,建议在项目刚创建就导入框架,这样可以避免一些自己操作失误造成不必要的损失. xmpp中最常用的框架就是 xmppFrameWork 往期回顾: xmpp整理笔记:环境的快速 ...
- vue框架入门和ES6介绍
vue框架入门和ES6介绍 vue-mvvm模式,vue是一种轻量级的前端框架,主要为模板渲染,数据同步,组件化,模块化,路由等. https://cn.vuejs.org/ 源码:https://g ...
- SSM 框架集-01-详细介绍-入门问题篇
SSM 框架集-01-详细介绍-入门问题篇 刚开始了解 SSM,首先先解决几个基础问题 1.什么是 SSM 框架集? SSM(Spring+SpringMVC+MyBatis)框架集由 Spring. ...
- Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍
本篇介绍项目开发的过程中,对 Setting 文件的配置和使用 Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍 settings.py 文件的使用 想要详细查看 ...
- PyTorch框架+Python 3面向对象编程学习笔记
一.CNN情感分类中的面向对象部分 sparse.py super(Embedding, self).__init__() 表示需要父类初始化,即要运行父类的_init_(),如果没有这个,则要自定义 ...
- 带你手写基于 Spring 的可插拔式 RPC 框架(一)介绍
概述 首先这篇文章是要带大家来实现一个框架,听到框架大家可能会觉得非常高大上,其实这和我们平时写业务员代码没什么区别,但是框架是要给别人使用的,所以我们要换位思考,怎么才能让别人用着舒服,怎么样才能让 ...
- 手写数字识别 卷积神经网络 Pytorch框架实现
MNIST 手写数字识别 卷积神经网络 Pytorch框架 谨此纪念刚入门的我在卷积神经网络上面的摸爬滚打 说明 下面代码是使用pytorch来实现的LeNet,可以正常运行测试,自己添加了一些注释, ...
- 小白学习之pytorch框架(1)-torch.nn.Module+squeeze(unsqueeze)
我学习pytorch框架不是从框架开始,从代码中看不懂的pytorch代码开始的 可能由于是小白的原因,个人不喜欢一些一下子粘贴老多行代码的博主或者一些弄了一堆概念,导致我更迷惑还增加了畏惧的情绪(个 ...
- 全面解析Pytorch框架下模型存储,加载以及冻结
最近在做试验中遇到了一些深度网络模型加载以及存储的问题,因此整理了一份比较全面的在 PyTorch 框架下有关模型的问题.首先咱们先定义一个网络来进行后续的分析: 1.本文通用的网络模型 import ...
随机推荐
- 2020/03/25 CSS相关知识点
2020-03-25 16:35:03 又是一个风和日丽的下午!今天的内容比较多 真是令人头大 ,手速又慢所以缺的可能比较多,而且这东西还是多靠实践为好. 文件下载地址: https://share. ...
- linux 数据卷磁盘管理
新加磁盘如何创建逻辑分区 查看命令 lvs vgs pvs 1: 新建一个分区(partition)fdisk /dev/sdb 2:创建PV(物理卷)pvcreate /dev/sdb1pvs或 ...
- 复制文本到粘贴板 (vue3)(兼容ios)
// 点击复制到剪贴板 const copyToClipboard = (content)=> { if (window.clipboardData) { window.clipboardDat ...
- mysql查询增加自增列
mysql> SELECT a.user, @i:=@i+1 as id FROM user a,(SELECT @i:=0) b; +------------------+------+| u ...
- 新搭建的禅道admin忘记密码
/opt/zbox/run/mysql/mysql -uroot -p 禅道数据库root默认密码123456 MariaDB [(none)]> show databases; +------ ...
- 【BUUCTF】强网杯 2019随便注1 write up
输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...
- [rk3568][buildroot] 移除RK3568 iodomain check
1. 问题背景 RK3568 基线代码默认会起一个服务监控RK3568 iodomain,该服务间隔性输出log信息: 由于该功能非必要,故选择移除该部分逻辑 2.解决方案 查看源码编译脚本,如下图所 ...
- kali 配置apt源、设置中文、安装googlepinyin输入法
配置apt源地址 kali 自带的apt源是国外的,更新网速很慢,这里我设置的是中科大的源. http://mirrors.ustc.edu.cn/help/kali.html 1.复制页面的源地址 ...
- docker搭建consul集群
防止自己忘了,做个笔记. 环境为两台主机,ip分别为: 192.168.2.9,192.168.2.7 首先在 192.168.2.9 上执行一下命令: docker run -d --name ...
- Python3程序捕获Ctrl+C终止信号
技术背景 对于一些连续运行或者长时间运行的Python程序而言,如服务器的后端,或者是长时间运行的科学计算程序.当我们涉及到一些中途退出的操作时,比如使用Ctrl+C来退出正在运行的程序.这种场景的出 ...