Kaggle で ML/AI に関する組織のスキルアップ

1. はじめに

47566e1490c16443.png

最終更新日: 2024 年 5 月 10 日

Kaggle とは

Kaggle は、AI と ML の最大のコミュニティであり、あらゆるレベルのデータ サイエンスと 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. テンプレートを選択する: さまざまな ML タスク(分類、回帰など)に基づいて、テンプレートのリストから選択します。
  2. AI がデータセットを生成する: Kaggle の AI が、選択したテンプレートに基づいてコンペティション用の新しいデータセットを作成します。このデータセットは元のデータセットと似ていますが、特徴のサブセットを使用しており、特徴の分布が若干異なります。
  3. コンテストをカスタマイズする: コンテストの名前、説明、タイムラインなどの基本情報を入力します。また、コンテストのプライバシー設定も指定できます。
  4. リリース: 詳細を確定してリリースを設定したら、コンテストをリリースできます。

この機能により、コンペティションの作成プロセスが効率化され、より多くのユーザーが利用できるようになります。また、データセットの準備ではなく、機械学習の側面に集中できるようになります。

コンテストを作成する

https://www.kaggle.com/competitions/new に移動し、[New AI Generated Competition] を選択します。

2629bf77a282a46c.png

「Regression with a Crab Age Dataset」コンペティションを選択します。

試合の詳細

2dd2228b9d686a6e.png

わかりやすい名前とサブタイトルを入力します。たとえば、タイトルに「<Your Names> のカニのテスト大会」、サブタイトルに「初めての大会を開催して、その仕組みを試してみます」と入力します。コンテストの URL は、タイトルに基づいて自動的に入力されます。

公開設定とアクセス

次に、コンテストの公開設定とアクセス権を設定する必要があります。

5c7dcae412ddd574.png

公開設定

  • 一般公開: コンペティションは Kaggle のすべてのユーザーに表示されます。検索結果に表示されるため、興味のあるユーザーは誰でも参加できます。
  • 非公開: 競合他社は一般公開されません。検索結果には表示されず、招待されたユーザーのみが参加できます。

参加資格

  • 全員: オープンドア ポリシーのようなものです。Kaggle のユーザーは誰でもコンペティションに参加できます。
  • リンクを知っているユーザーのみ: より限定的な設定です。特別なリンクが生成され、そのリンクを知っているユーザーのみが参加できます。
  • 制限付きメーリング リスト: 最も制御されたオプションです。特定のメールアドレスまたはドメイン(@yourschool.edu など)のリストを指定すると、そのアドレスを持つユーザーのみが参加できるようになります。

[ノートブックとモデルを有効にする] 設定については、後ほど詳しく説明します。この設定がオンになっていることを確認します。この例のコンテストでは、これらの設定を [非公開] と [リンクを知っているユーザーのみ] に設定します。

利用規約を読み、同意して、[Create Competition] をクリックします。

4. 競合他社の理解と設定

舞台裏では、独自のデータセットを使用したまったく新しいコンテストを作成しました。コンテストの設定を簡単に確認しましょう。

Host Tab

[ホスト] タブには、ホストとしてコンテストを適切に構成するために必要なものがすべて含まれています。具体的には、ページの右側のページリストをご覧ください。

bcedd6768cc4f32c.png

基本情報

このセクションには、次の情報が含まれます。

  • 全般
  • プライバシー、アクセス、リソース
  • タイムライン
  • スコアリングとチーム

コンテストの開始時に、[全般] セクションと [プライバシー] セクションについて説明しました。

タイムライン

コンテストの終了日はタイムゾーンを認識します。

7141f4aea90bccb0.png

スコアとチーム

[Scoring & Team] セクションでは、チームに参加できる人数、1 日に送信できる回数、最終評価のために選択する必要がある送信の数を制御できます。

5efb6387612db941.png

画像

[画像] では、コンテストのバナーとサムネイルをカスタマイズできます。この設定は、コンテストのホームページとコンテストのリスティング エントリに影響します。

6dfd442376a1c702.png

ホスト

ここでは、他の Kaggle ユーザーをコンペティションのホストとして追加できます。他のホストは、コンテストへの完全なアクセス権(開始権限を含む)を持ちます。

8f8c90eb6baa7747.png

評価指標

[評価指標] タブは、コンペティションの中心となるものです。コンペティションをゼロから作成する場合は、使用する評価(またはスコアリング)指標を慎重に検討し、ソリューション ファイルをアップロードし、公開テストと非公開テストの分割を定義し、サンプル送信を指定する必要があります。ただし、生成されたコンペティションを使用しているため、この作業は必要ありません。

スコアリング指標

これにより、ソリューション ファイルに対する送信のスコアが決定されます。各指標には、ドキュメントと実際のコードが用意されています。

ソリューション ファイル

生成されたコンペティションを使用しているため、このファイルはコンペティションごとに異なります。

89fa1f42d177505a.png

ソリューション サンプリングを使用すると、コンペティション(公開リーダーボード)でサブミッションのスコア付けに使用されるソリューション ファイルの量と、最終リーダーボードの決定に使用される行数を調整できます。コンペティション中、ユーザーは(Scored Private Submissions の設定に基づいて)最終的なリーダーボード(ここではプライベート リーダーボードと呼びます)に使用する提出物を選択できます。

このプロセスにより、過学習や大量の提出によって競合他社が報酬を得ることはありません。

サンドボックスの送信

これにより、コンペティションの主催者はスコアリングが想定どおりに機能することを確認し、競合他社が比較するための「ベンチマーク」の提出を設定できます。これらのベンチマークの送信は、リーダーボードに表示されます。

チームと送信

コンテストの開催者は、この機能を使用してすべてのスコアをダウンロードしたり、チームを管理したりできます。コンテスト開始前は空です。

Launch Checklist

これについては次のセクションで説明します。

5. コンペティションを開始する

50b03df072c02e6a.png

コンテスト ページの上部にある [Launch Checklist] ボタンをクリックします。

Launch Checklist

リリース チェックリストには、コンテストを開始する前に必要な手順が示されています。コンテスト テンプレートからすでに開始しているため、これらの手順のほとんどはすでに完了しています。残りのタスクは、期限の設定とコンテスト ルールの更新の 2 つのみです。

938b9ed7bc4e0597.png

Set Deadline(期限設定)

まず、[期限を設定] の横にある矢印をクリックします。通常、コンテストは少なくとも数か月間続きます。コンテストの最長期間は 1 年です。

ルールを編集

コンテスト ルールは、開始前にデフォルトのテンプレートから更新する必要があります。クラスやグループでこのコンテストを実施する場合は、期待されることに関する情報をここに記載するとよいでしょう。

リリース

リリース準備が整いました。コンテストを開始しましょう。これで、競合他社が参加できるようになりました。

6. 競合他社のエクスペリエンス

コンテストを開始したので、競合他社のエクスペリエンスを見てみましょう。コンテストへの参加と応募方法について説明します。Google IO Demo Competition に参加するには、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()

トレーニング用のデータを準備しましょう。この場合、Sex は数値ではないため、削除します。(ヒント: これを含める方法を理解すると、モデルのパフォーマンスが向上します)。

 # テストデータから結果をドロップアウト

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. どうぞお楽しみください!