Kaggle

Kaggleとは?機械学習初心者が知っておくべき3つの使い方

  • このエントリーをはてなブックマークに追加

私が機械学習やディープラーニングを勉強し始めたての頃、様々な問題を抱えていました。特に大きな問題だったのが、練習として使えるデータセットを探すことでした。

また、まだ日本で機械学習などを周りにやっている人もごく少数で、気軽に相談や議論などをできる環境もなく、一人で悶々とひたすら勉強をしていたのですが・・

そんなあるときに、海外のサイトでデータを探していたら、「Kaggle」へ辿り着いたのです!そこは・・まるで・・機械学習を学んでいる当時の私には「天国」のような場所でした 。(今でも天国のような場所です)

今まで散々、お世話になって行きているKaggleですが、まずはこれから機械学習を勉強される方に向けた「Kaggleとは?Kaggle入門編」としてまとめて行きたいと思います。

目次
・Kaggleとは
・コンペに参加しよう
・初心者はカーネルをやるべし
・質問/回答を投稿しよう
・まとめ

Kaggleとは?

まず呼び方ですが、Kaggleと書いて「カグル」と読みます。また日本でも最近は定着してきましたが、Kaggleに参加している方を「カグラー(Kaggler)」とも呼びます。

Kaggleですが、本サイトへ行くと一番上に書かれていますが「The Home of Data Science & Machine Learning」(データサイエンスと機械学習の家)と題されている通り、世界中の機械学習・データサイエンスに携わっている約40万人の方が集まるコミニティーです。

Kaggleでは、企業や政府などの組織とデータ分析のプロであるデータサイエンティスト/機械学習実装者を繋げるプラットフォームとなっています。単純なマッチングではなく、Kaggleの最大の目玉とも言える「Competetion(コンペ)」がKaggleの特徴の一つです。

Competition(コンペ)とは、企業や政府がコンペ形式(競争形式)で課題を提示し、賞金と引き換えに最も制度の高い分析モデルを買い取るという、最近でいう一種のクラウドファンディングに近いような仕組みとなります。

コンペの一例。

コンペでは、アメリカ国土安全保障省による空港のセキュリティースクリーニングの認識アルゴリズムの競争や、日本からですとメルカリによる販売者への自動価格提案アルゴリズムなどが開催されています。

また先述した通り、Kaggleに参加している人たちは無料でこれらのコンペに参加が可能で、企業から提供されているトレーニング用のデータセット(またそれに付随する様々なデータなどもある)を利用して、モデルの訓練を行い、さらにテストセットで評価までも可能です。

まだ機械学習を勉強し始めたばかりで・・コンペなんて参加できないです・・と思われている方もご安心ください!Kaggleでは初級者にも優しく設計されているのです。

その中の一つの機能として「Kernels(カーネル)」があります。このカーネルでは、各データセットに対して他のユーザーが構築した予測モデルのコードや説明がユーザーによる公開されています。例えば、「このコンペのデータでは、XXXXの事前処理をデータセットに加えて、〇〇のモデルを使って予測したら、XXの精度が出たよ。これがコードだよ」という感じで、初心者にも優しく説明がされているカーネルも多数あります。(説明がなく単純にコードが公開されているケースもありますが)

また、「Discussion(ディスカッション)」では、世界中のデータサイエンティスト・機械学習実装者とのコミュニケーションも行えます。最新のモデリングの情報や、今までうまく行かなかったデータセットの処理方法など、最先端の現場の活きた知識/知恵が詰まっています!

では、実際にKaggle初心者の使い方のコツを詳しく見て行きましょう。

Kaggleコンペを覗こう/参加しよう

基本的にコンペへの参加条件などは特に設定はされておらず、無料会員登録を行えば、初心者でも誰でも参加が可能となります。ただし、ルールはコンペに応じて異なり、例えば使って良いデータの詳細やモデル構築時の環境の縛りなどがあります。

コンペのルールや条件などは全て英語で記載されていますので、簡単な英語の理解は必要です。ルールなどもそうですが、さらに重要なのがデータセットの説明です。こちらも英語なのですが、各データが何を含んでいるのか、また各カラムやデータの質など、データセットの説明を抜きにコンペへ参加するのは難しいかと思います。

英語が苦手な方は、Google翻訳を使ってデータセットを紐解くか、検索をしてチュートリアルの記事を探す方法もあります。

Kaggleへ参加している日本人は非常に数が限られている状況ではありますが、有名なコンペや練習データなどを紐解くチュートリアル記事もありますので、日本語で検索をしてみるのも一つの手段かと思います。(*codexaでも、常時、Kaggleのハンズオンチュートリアルを更新して行きます)

各コンペの利用規約へ同意をすると、データセットのダウロードが可能となります。データセットを落として、自分で処理を行い、最適な予測モデルを作って見ましょう!

予測モデルですが、各コンペの「Evaluation」のページにて「Sumission File」(投稿ファイル)とう項目に形式や詳細がまとめられています。

下記の例は現在進行中の「Mercari Price Suggestion Challenge」の評価詳細ページです。「Submission File」の項目に、「test_idとpriceの2列のヘッダーを含むCSV形式」で提出してくださいと指定があります。

予測モデルを作成して実際の予測をする場合は、提出ファイルの形式をしっかりと読んでから、予測を行いましょう。提出ファイルがルールに沿っていないと、正確に評価もされませんしスコアもつきません。

またコンペによっては、「Kernel Only」と指定がある場合もあります。この場合は、予測されたデータのファイルだけでなく、ファイルの事前処理を含む全てのモデルのコードのカーネルの提出が必要です。コンペに応じて、評価方法や提出物が異なりますので、取り組む前にしっかりと読んだ方が良いです。

予測データの投稿が完了すると、リアルタイムで評価がつきます!また予測データの投稿は1日5回までと制限があります。最初の頃は、色々と試行錯誤をしながら投稿するので、この1日5回の制限によく引っかかります(汗)。

正しいデータフォーマットで予測データを投稿すると、「Leaderboard」へスコアと共に掲載されます。こちらのボードで、自分が構築した予測モデル/データがどれくらい優れているのかの確認が可能です!

先述した「アメリカ合衆国国土安全保障省」のコンペのランキング(2017年11月22日現在)まだ機械学習を始めたばかりで・・いきなりコンペに参加するのはハードルが高すぎる・・という方は「Kanerl(カーネル)」でひたすら勉強をしましょう!次はKernelsの使い方について説明をして行きます。

Kaggle 初心者はひたすらカーネルをやるべし

色々なコンペを見て回ったけど・・まだ私にはレベルが高すぎて何をして良いかわからない・・!機械学習を触り始めの初心者の方であれば、Kaggleを使い出すと、そういう状況になることもあるかと思います。(私も最初はそうでした)

そんな初心者の方も安心してください!Kaggleの「Kernels(カーネル)」を使って見ましょう。Kernelsでは、先輩ユーザーさん達が構築したモデルやデータセット処理のコードが公開されています。

各コンペまたはオープンデータセットに対してKernelsは用意されています。また言語でのフィルタリングも可能です。

下記のキャプチャですが、Mercariの販売価格予測チャレンジのカーネルとなります。リストの2番目の「Naive CatBoost」をご覧いただくとわかりやすいのですが、Jupyter Notebookの形式でCatBoostのモデルを利用した予測モデルのコードが公開されています。

このコードをまずはコピペして自分の環境で書きながら、1ライン1ライン理解をしていくと良い勉強になります。なぜ、このような処理をしたのか?なぜこの項目をFeatureとして使ったのか?などなどコードを真似しながら自分の中で噛み砕いていくことで、最先端のデータサイエンティストの考え方が身につけられます。

さらに、Kernels(カーネル)の嬉しいところは、実際に提出する予測ファイルまで完成できるところです。こちらの例のコードの全て処理すると、「0.60157」のスコアの予測データが出来上がります。

当然Kanerlsで公開されているので、この予測データを自分のデータとして投稿しても上位を狙えるわけではありませんが、それでも本当に予測ができているのか?スコアはつくのか?を試したいのであれば、実際に投稿をしてみるのもありかと思います。

参考までにですが、このCatBoostを使った予測モデルは11月22日時点で19位となっています。つまり、参加している予測モデルで19番目に精度が高いモデルを使って勉強が出来る訳です。

Mercariのコンペ以外にも、Kaggleでは多数のカーネルが公開されています。機械学習を始めたばかりで、データの処理の仕方がわからない、予測モデルも基本的なものの使い方しかわからないという方は、積極的にカーネルを勉強していきましょう!

色々なデータセット、予測モデル、さらにはデータの前処理を行うことにより、経験と知識が増えていきます!

ディスカッションで積極的に質問しよう

さて、最後の3つ目のコツですが「ディスカッション」へ参加することです。これは最低限の英語スキルが必要となりますが、英語の自信のない方でもやるべきだと思います。なぜディスカッションに参加すべきなのか?を説明します。

Kaggleのディスカッションの大きなカテゴリです。一般的なフォーラムや技術的なQ&Aなど議論の内容に応じて別れています。

冒頭でもお話をしましたが、Kaggleはアメリカのみのサービスではありません。全世界の最先端のデータサイエンティストが集まるコミュニティーとなります。実際にディスカッションで投稿されている質問を見てみると、英語が必ずしも正しく書かれている訳ではありません

自分の英語は完璧ではないから投稿に参加するのはちょっと・・と思っている方でも、大丈夫です!そのような方もたくさんいますので、むしろ利用しない方が損です!

また、自分は初心者だから・・質問の内容が拙いのでは?と考えるもの損です。Kaggleでは、初級者の方もたくさんいますし、実際に質問も初級から上級まで様々な質問/回答が投稿されているのが確認できます。

「自分は〇〇だから・・」と思う前に、まずはどっぷり、Kaggleのコミニティに浸りましょう!色々なスキルの方とコミュニケーションを取ることで、確実に自分の理解・スキルもアップします。

まとめ

全て英語のサービスというハードルはあるものの、データとコードは世界共通です!これから機械学習を学ぶ方、すでに学び始めている方はKaggleへ参加をすることで、確実にスキルアップできます!

またcodexaでも、常時、Kaggleコンペのハンズオンチュートリアルを更新していきますので、ぜひ最新の情報をフォローして頂けると幸いです。

  • このエントリーをはてなブックマークに追加

時代遅れと言われる前に・・・

人工知能エンジニアへスキルアップをしませんか?コデクサでは、機械学習を全く触ったことのない初心者を対象に、機械学習の初歩を学べるコンテンツを配信しています。

世界中で機械学習を扱えるエンジニアの人材獲得が過熱しており、機械学習の普及が進んでいるアメリカでは、機械学習の平均年収は約1350万円とも言われています(米Glassdoor調べ)。

機械学習エンジニアへキャリアアップをしましょう!

今すぐ無料講座を受講する

コメントを残す

*

CAPTCHA