- データサイエンスや機械学習に興味のある方
- データサイエンスコンペティションに参加してみたいが、方法がわからない方
- 実装力を高めたり、知識を深めたい方
こんにちは、機械学習講師の竹内です。
皆さんはデータサイエンスのコンペティションに参加したことはありますでしょうか。コンペティションでは世界中のデータサイエンティストが精度や実装力を競い合い、好成績を残した方は賞金や実績、名声を得られます。
今回はデータサイエンスコンペティションサイトとして最も有名な Kaggle についてご紹介します。またチュートリアル問題の「タイタニック問題」についても紹介します!ぜひ御覧ください!
Kaggle とは
Kaggle は約 100 万人以上の方が利用している世界最大のデータサイエンスコンペティションプラットフォームです。2010 年にサービスを開始し、2017 年には Google が Kaggle 社を買収したため、Google 傘下の企業となりました。Kaggle は「カグル」と呼ばれ、Kaggle に参加している人を「Kaggler(カグラー)」とも呼びます。
Kaggle では企業や政府等がコンペティション形式で課題を提示しています。各コンペティションの開催期間は約 2~3 ヶ月程で、成績によって参加者は金メダル・銀メダル・銅メダル・その他に分けられます。
さらに賞金が設定されているコンペティションであれば、最上位の成績を収めた数名(数チーム)の参加者には賞金が与えられます。
コンペティションを開催している企業は様々で、日本の企業ではメルカリ社やリクルート社等が開催しています。また、賞金額の大きかったコンペティション(アメリカの国土安全保障省が主催)では、賞金総額が 150 万ドル(約 1 億 5 千万円)だったものもあります。
出典:Passenger Screening Algorithm Challenge
賞金が設定されていないコンペティション(Knowledge(知識)・Swag(記念品)・Kudos(名誉))も数多く存在します。
Kaggle の使い方
まずは Kaggle へ登録してみましょう。登録の手順は以下です。
登録が完了すると、下図のトップページにアクセスできます。
Kaggle には様々な機能があります。今回はコンペティションに参加する上で知っておきたい機能についてご紹介します。
Kaggle Rankings
Kaggle にはランキングや称号制度があります。
こちらは左の「More」の中にある「User Ranking」から確認できます。
「Rank」がランキング、「Tier」が称号を表しています。ランキング・称号は以下のカテゴリで設定されています。
- Competitions
コンペティションにおける成績によって決まります。
- Datasets
Dataset への賛成票数によって決まります。
- Notebooks
Notebook への賛成票数によって決まります。
- Discussion
Discussion への賛成票数によって決まります。
ランキング制度では、コンペティションの順位や、Dataset・Notebook・Discussion における Vote (賛成票)の獲得数によってポイント付けが行われ、そのポイント数によって順位付けされます。
称号制度は、主にメダルの数によって決まります。メダルはコンペティションの順位や、Dataset・Notebook・Discussion における Vote 数によって獲得できます。
称号には以下の 5 つの位があり、上位の称号を獲得することをモチベーションに参加している Kaggler は多いです。
- Grandmaster
- Master
- Expert
- Contributor
- Novice
ランキング・称号制度について、詳しく知りたい方は Kaggle Progression System を参照してください。
Competitions
コンペティションに関する情報が掲載されているページです。「Active Competitions」では現在開催されているコンペティションを確認できます。各コンペティションをクリックすると、コンペティションページへ遷移します。
出典:Titanic – Machine Learning from Disaster
コンペティションページでは、コンペティションの概要 (Overview) やデータセット (Data)、Notebook (Code)、コンペに関する Discussion、現在の順位とスコアが確認できる Leaderboard やルール (Rules) を確認できます。
Datasets
Kaggle にはデータセットを共有する機能があります。Kaggle アカウントを持っている人であれば、誰でもデータセットを追加・公開したり、他の人が公開したデータセットをダウンロードできます。データセットをプレビューするだけであれば Kaggle アカウントは不要です。
データセットには投票機能 (Vote) がありますので、良いデータセットがあったら提供してくれた方への感謝を込めて投票しておきましょう。
また各データセットには、「Metadata」にライセンスが明記されており、どのようにデータを活用できるかがわかります。
Code
出典:Kaggle Code
Kaggle では、クラウド上で Jupyter Notebook の実行環境を利用できます。昔は Kernel や Notebook と呼ばれていたため、人により呼び方が違うことが多いです。(本記事では Notebook で統一しておきます。)
コンペティションで提供されたデータを分析して可視化をしたり、予測値を算出できます。コンペティションとは無関係なデータの分析もできます。
「+ New Notebook」 をクリックすることで、新しい Notebook を作成できます。
作成した Notebook は「Your work」から確認できます。
また Notebook の内容は、右上の「Share」にて他の人に公開可能です。
公開されたコードに投票 (Vote) が一定数以上得られるとメダルを獲得できます。
Discussion
Discussion は、コンペティションの内容に関わる議論をする掲示板です。
Discussion では以下のような内容が投稿されています。
- 初心者からの質問
- ルールに関する質問
- 知見や手法についての議論
Discussion も Dataset や Notebook と同じく投票機能 (Vote) がついており、一定数以上の Vote を得られるとメダルを獲得できます。
まとめると以下のようになります。
コンペ参加 → 投稿までの流れ
それでは Kaggle のコンペティションに挑戦してみましょう。具体的なステップは以下となります。
1 つずつ見ていきましょう。
STEP 1 : 開催中のコンペティションから参加したいものを選択
こちらのページから参加したいコンペティションを探してみましょう。本記事ではチュートリアルとして最も有名な「タイタニック問題」を扱います。
出典:Titanic – Machine Learning from Disaster
STEP 2 : 参加規約へ同意
どのコンペティションにも規約・ルールが存在します。コンペティションに参加する前には参加規約に同意する必要があります。「Rules」タブの文章を確認してみましょう。
こちらで参加規約を確認できます。
参加規約には以下の内容が記載されています。
- 複数のアカウントを保持することの禁止
- private sharing の禁止(チームメンバー以外に Kaggle の Code や Discussion 以外でコードを共有すること)
- チームを組むことの可否やチームメンバー数の制限
- 1 日の提出回数の制限
- コンペティションの期限
規約を守らないと、参加者から除外されたり、入賞時の賞金の権利が得られない可能性もありますので注意しましょう。
STEP 3 : データと提出ルールの確認
「Data」タブを選択し、一番下を見ると、「Download All」のボタンがありますので、こちらからデータをダウンロードしておきましょう。
Kaggle 上の Notebook を使用する際はダウンロードは不要です。
また「Data」タブでは各データの集計・可視化の結果も確認できます。この機能がかなり便利です。
評価指標や提出方法については「Overview」タブの「Evaluation」で確認できます。
今回の評価指標は Accuracy(正解率)であることがわかります。
また提出方法として、ファイルには PassengerId と Survived の列が必要であることもわかりました。
STEP 4 : 学習モデルの作成、提出ファイルの作成
それではモデルを作成していきましょう。Kaggle の Notebook を使用する場合は「New Notebook」のボタンをクリックしてください。新しいノートブックを作成できます。
またコンペティションページからノートブックを作成すると、使用するデータが読み込める状態になっていますので、そのままモデルを作成できます。
データは Pandas の read_csv()
関数を使用して読み込めます。
STEP 3 で確認したルールに沿って提出ファイルを作成しましょう。
また GoogleColaboratory やローカル環境でモデル作成を行う場合は、一度データをダウンロードしてから行いましょう。
GoogleColaboratory を使用される方はこちらの記事も参考にしてみてください。
STEP 5 : 提出用ファイルを投稿
提出用の CSV ファイルが作成できたら投稿してみましょう!トップページの「Submit Predictions」ボタンをクリックするとファイルを選択する画面に遷移します。提出用の CSV ファイルを選択し投稿しましょう。(今回は 1 日 10 回までしか投稿できませんので注意してください。)
STEP 6 : 評価の確認
予測値を提出したら、Public Leaderboard にて自分の順位を確認しましょう。Public Leaderboard の結果はテストデータの一部で評価された結果であることが一般的です。(タイタニック問題は Public Leaderboard にてすべてのテストデータに対する結果が表示されています。)
Public Leaderboard で使用したデータ以外で評価された順位は Private Leaderboard に表示され、こちらはコンペティション終了後に発表されます。つまり最終順位は Private Leaderboard にて確定されます。
このようなシステムにしておくことで、何回も提出して最終順位がよくなるように調整するといった行為ができないようになっています。
でもタイタニックが難しい…そんなあなたに Kaggle Learn
Learn は、Python や機械学習について学べる場のことです。
いくつかの問題が用意されており、Kaggle のコーディング環境を使用しながら練習問題を解く、アウトプットに向いています。
Kaggle Learn で 「何ができる?」
- Learn のページへ移動し、Courses の下部分を確認してみましょう。各トピックがアイコンとともに表示されていますが、各トピックの解説と練習問題が用意されています。
- 無料で練習問題に取り組めるので、基礎知識の確認とアウトプットができます。
- 英語だらけで「挑戦するのが難しい…..」という方に向けて、一部ですが、この記事でどのように取り組めばよいのかを解説します。
使い方の紹介
STEP 1 : Course からトピックを選ぶ認
今回は Intro to Machine Learning から1つのLessonを見ていきます。
STEP 2 : Lesson で練習したい問題を選択
3 Your First Machine Learning Model を取り上げて学習方法を紹介します。
STEP 3 : Tutorial でどんなことをやるのか、重要なポイントをインプットする
こちらが Tutorial ページです。ここでは、データの読み込みからモデルの作成の実装を紹介しています。画面下までスクロールしてみてください。
画面下までスクロールすると、Your Turn というポップアップが表示されます。 Tutorial ページの内容が理解できたら Start Exercise ボタンをクリックして、練習問題にチャレンジしてみましょう!
STEP 4 : Your Turn をクリックして Exercises で練習問題を解く
Kaggle の実装ページが表示されます。基本的に Google Colab などと使用方法はほぼ同じようなものと考えていいと思います。
最初はデータの読み込みを行うセルが用意されているので、こちらを実行します。▷をクリックまたは「Shift + Enter」で実行可能です。
STEP 5 : コードを実装し、正解かどうかを確認
実際に以下のコードを実装しました。
home_data['SalePrice']
y = home_Data['SalePrice']
実装してセルの実行したところ、黄緑色で Correct が表示されました。
step_1.check()
で実装したコードが正解かどうかの判定をしてくれます。
これで Step 1 は完了です。
Kaggle Learn で行ったこと
- dataset から prediction target だけを表示するというコメントがあるので、今回は sales price を表示させました。どうやって、この列名を探したのかというと、home_data を実行するとデータ列を確認できるので、そこから列名を取得しました。
- 変数 y に、今回の目標値である sales price を格納しました。
補足
- 上のキャプチャで Correct で正解できたことを確認しましたが、別の解法として、
y = home_data.SalePrice
があることも確認できます。 - 上記のように各 Exercises や Lesson を使っていくと、基礎部分のアウトプットができます。
- 英語ベースかつ無料で学べるので、うまく活用できると最高なアウトプットができると思います!
それでも難しさを感じる方へ SIGNATE の過去コンペから学びを得よう
Kaggle Learn では、英語も難しい & 実際にタイタニックの次へ進むイメージが持てない場合は、 SIGNATE の過去コンペのデータと解法を教材として、使ってみましょう。
この記事にリンクも添付しています。
英語が苦手な方へ
ここまで Kaggle の使い方や投稿方法についてお伝えしてきました。
参加方法はわかったけど、英語が苦手だから取り組みにくい…
Kaggle は日本語に対応していませんので、このような悩みを抱えた方もいらっしゃるかもしれません。英語が苦手な方は、まずはこちらの 2 つを見てみてください!
DeepL
DeepL は機械翻訳ツールです。機械翻訳ツールは Google 翻訳など、様々なサービスがありますが、DeepL はかなり高精度な翻訳が可能です。
英語を読むことに慣れていない方は、DeepL を使用して挑戦してみてください!
SIGNATE
SIGNATE は、日本版 Kaggle とも呼ばれる、2018年4月にオープンしたAI開発コンペティションサイトです。こちらは日本の企業が運営していますので、すべて日本語で記載されています。
今回ご紹介した「タイタニック問題」は SIGNATE にも掲載されていますので、まずは SIGNATE を使ってみるのもよいでしょう。
SIDNATE の使い方やコンペティションへの参加方法は、こちらの記事を参考にしてください。
最後に : 知識も実装力も実績も獲得しよう!
いかがでしたでしょうか。コンペティションに初めて投稿できるとかなり達成感がありますので興味のある方はぜひ挑戦してみてください!
- 自分の知識を深めたい!
- 自分の実装力を試してみたい!
- 実績を残して転職へのきっかけとしたい!
上記の方は今すぐ参加できそうなコンペティションを探して挑戦してみましょう!
まずは無料で学びたい方・最速で学びたい方へ
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ
AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
最速で学びたい方:キカガクの長期コースがおすすめ
続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!
AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?
無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答