借助 Kaggle 提升贵组织的机器学习/AI 技能

1. 简介

47566e1490c16443.png

上次更新日期:2024 年 5 月 10 日

什么是 Kaggle?

Kaggle 是最大的 AI 和 ML 社区,也是一个终极平台,可供各个级别的数据科学和机器学习爱好者通过最新技术和工具提升技能。探索庞大的数据集、笔记本和预训练模型库,为您的下一个项目做好准备。参与竞赛、学习课程,并与来自全球各地、超过 1,800 万用户的多元化社区建立联系。无论您是新手还是经验丰富的专业人士,都可以在 Kaggle 上磨练技能、保持领先地位,并协作处理前沿项目。

构建内容

在此 Codelab 中,您将创建、配置和启动 Kaggle 竞赛。您将了解参赛者的体验,并了解如何开展富有吸引力的竞赛。

学习内容

  • 了解如何从主办方的角度创建和管理 Kaggle 竞赛
  • 了解参赛者体验,从探索到提交
  • 了解如何开展富有吸引力的竞赛

此 Codelab 重点介绍如何快速创建竞赛,并利用 Kaggle 不断增长的竞赛库。

所需条件

  • 最新版网络浏览器
  • Python 基础知识

2. 准备工作

创建 Kaggle 账号

访问 Kaggle 网站 (https://www.kaggle.com/),然后点击“注册”以创建免费账号。

验证您的账号

  1. 点击页面右上角的个人资料照片
  2. 点击“您的个人资料”
  3. 点击个人资料内容右侧的“设置”按钮
  4. 在“电话验证”下,按照说明验证您的账号

3. 创建您的首个竞赛

推出 AI 生成的竞赛模板

“AI 生成的竞赛”是 Kaggle 上的一项新功能,可让用户快速轻松地创建机器学习竞赛。它利用 AI 生成模拟现有数据集统计属性的合成数据集,但其中不包含任何个人身份信息。

其工作原理如下:

  1. 选择模板:从基于不同机器学习任务(例如分类、回归)的模板列表中进行选择。
  2. AI 生成数据集:Kaggle 的 AI 会根据您选择的模板为您的比赛创建新的数据集。此数据集与原始数据集类似,但使用部分特征,并且特征分布略有不同。
  3. 自定义赛事:输入基本详情,例如赛事名称、说明和时间表。您还可以为竞赛选择隐私设置。
  4. 启动:在最终确定详细信息并设置启动后,您就可以启动竞赛了。

此功能可简化竞赛创建流程,让更多用户能够参与竞赛,并专注于机器学习方面,而不是数据集准备。

创建竞赛

前往 https://www.kaggle.com/competitions/new,选择“New AI Generated Competition”(新 AI 生成的竞赛)

2629bf77a282a46c.png

选择“Regression with a Crab Age Dataset”(使用螃蟹年龄数据集进行回归分析)竞赛。

赛事详情

2dd2228b9d686a6e.png

填写描述性名称和副标题。例如,您可以使用“<您的名称>的测试螃蟹比赛”作为标题,并使用“创建我的第一个比赛,看看效果如何”作为副标题。请注意,系统会根据标题自动填充赛事网址。

公开范围和访问权限

现在,我们需要设置比赛的公开范围和访问权限。

5c7dcae412ddd574.png

公开范围

  • 公开:您的竞赛对 Kaggle 上的任何人可见。该活动会显示在搜索结果中,以便任何感兴趣的人加入。
  • 不公开:您的比赛不会公开显示。该活动不会显示在搜索结果中,只有您专门邀请的人才能参加。

哪些人可以加入

  • 任何人:这就像开诚布公的政策。Kaggle 上的任何人都可以加入您的竞赛。
  • 只有知道链接的用户:这种方式更具私密性。您将生成一个特殊链接,只有拥有该链接的用户才能加入。
  • 受限的邮箱名单:这是控制程度最高的选项。您提供特定电子邮件地址或网域(例如 @yourschool.edu)的列表,只有拥有这些地址的用户才能加入。

我们稍后会详细介绍启用笔记本和模型设置。目前,请确保此开关处于开启状态。对于我们的示例竞赛,请将这些设置设为不公开只有知道链接的人

阅读并同意相关条款,然后点击“创建赛事”。

4. 了解和配置竞争对手

在幕后,我们创建了一个包含独特数据集的全新竞赛。我们来快速回顾一下比赛设置。

“主机”标签页

“主持人”标签页包含主持人正确配置比赛所需的一切内容。具体来说,请查看页面右侧的页面列表:

bcedd6768cc4f32c.png

基本详情

此部分包括:

  • 常规
  • 隐私权、访问权限和资源
  • 时间轴
  • 得分和球队

我们在推出竞赛时介绍了“常规”和“隐私权”部分。

时间轴

竞赛结束日期会考虑时区。

7141f4aea90bccb0.png

得分和球队

在“得分和团队”部分,您可以控制加入团队的人数、每天的提交次数,以及需要选择多少提交内容进行最终评估。

5efb6387612db941.png

图片

通过“图片”,您可以自定义比赛的横幅和缩略图。这会影响比赛的首页以及比赛的商品详情。

6dfd442376a1c702.png

主机

您可以在此处添加其他 Kaggle 用户作为比赛的主办方。其他主持人将拥有对您的比赛的完整访问权限(包括启动比赛)。

8f8c90eb6baa7747.png

评估指标

“评估指标”标签页是比赛的核心。从头开始创建比赛时,您需要仔细考虑要使用哪种评估(或打分)指标,上传解决方案文件,定义公开/私密测试分块,并提供提交内容示例。不过,由于我们使用的是生成的竞赛,因此无需执行任何上述操作!

评分指标

这决定了如何根据解决方案文件对提交内容进行评分。每个指标都有文档和实际代码。

解决方案文件

由于我们使用的是生成的比赛,因此此文件是您的比赛独有的!

89fa1f42d177505a.png

通过解决方案抽样,您可以调整在比赛期间(公开排行榜)用于对提交内容进行评分的解决方案文件量,以及用于确定最终排行榜的行数。在比赛期间,用户可以根据“Scored Private Submissions”(已评分的私密提交)设置,选择要将哪些提交用于最终排行榜(此处称为“私密排行榜”)。

此流程可确保竞争者不会因过拟合或提交大量结果而获得奖励。

沙盒提交

借助这些功能,竞赛主办方可以确保评分按预期运作,并设置“基准”提交内容供参赛者进行比较。这些基准提交内容将显示在排行榜上。

团队和提交内容

在比赛期间,主持人可以下载所有得分,以及管理团队。比赛开始前,此列为空。

Launch Checklist

我们将在下一部分中介绍相关内容!

5. 推出竞赛

50b03df072c02e6a.png

在竞赛页面顶部,点击“启动清单”按钮。

Launch Checklist

启动核对清单会显示在启动比赛之前需要采取的步骤。由于我们已从竞赛模板开始,因此大部分步骤都已完成!目前只剩下两项任务:设置截止日期和更新比赛规则。

938b9ed7bc4e0597.png

设置截止日期

首先,点击“设置截止日期”旁边的箭头。比赛通常至少持续几个月。竞赛的最长时长为一年。

修改规则

在发布之前,您需要根据默认模板更新竞赛规则。如果您是为班级或群组举办此竞赛,则可以在此处添加有关预期结果的任何信息。

发布

我们已准备好发布!快来发布您的竞赛吧!现在,您可以邀请参赛者加入比赛了!

6. 竞争对手体验

现在,您已推出竞赛,接下来我们来看看参赛者的体验。我们将介绍如何参加竞赛以及如何提交作品。为此,您可以点击以下链接加入 Google IO 演示竞赛:https://www.kaggle.com/competitions/google-io-demo-competition

参加竞赛

前往赛事首页后,点击右上角的“加入赛事”按钮,然后阅读并确认规则。

首次提交

前往代码标签页,然后点击“新建笔记本”。系统随即会打开一个笔记本,您可以在其中提交参赛作品。

首先,我们将读取训练数据和测试数据

# 读取测试数据和训练数据

train = pd.read_csv('/kaggle/input/google-io-demo-competition/train.csv')

test = pd.read_csv('/kaggle/input/google-io-demo-competition/test.csv')

我们来看看这些数据。

# 查看部分数据

train.head()

接下来,我们来准备用于训练的数据。在本例中,我们舍弃了“性别”,因为它不是数值。(提示:弄清楚如何纳入此信息应该可以提高模型的性能)。

 # 舍弃测试数据的结果

data = train.drop(columns=[‘Age', ‘Sex'])

answers = train[‘Age']

然后,我们创建一个模型。在本例中,我们使用的是随机森林模型。

模型中的 # 个导入

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestRegressor

from sklearn.metrics import mean_absolute_error

model = RandomForestRegressor()

# 训练模型

model.fit(data, answers)

创建提交内容:

predictions = model.predict(test.drop(columns=[‘Sex']))

submission = pd.DataFrame({‘id': test[‘id'], ‘Age': predictions})

submission.to_csv(‘submission.csv', index=False)

然后,您可以在右侧菜单中选择“Submit to Competition”(提交参加竞赛)来提交作品。

1cf17449cae53abe.png

举办精彩比赛的实用妙招

  1. 请务必包含一个可进行基本提交的初始笔记本
  2. 鼓励参赛者在比赛初期使用讨论和共享笔记本
  3. 祝你使用愉快!