Kaggle始めてみました

# Kaggleって何？

[Kaggle](https://www.kaggle.com/) が該当サイト。一番有名なイメージは、機械学習に関して賞金が出るコンペティションが多数開催され、世界中の手練れデータサイエンティストがしのぎを削って競争しているプラットフォーム、というものでしょうか。

この記事を開く人は、そんな事既に知っているという人が多いと思いますが、実際に試してみると結構イメージと違う部分あったので初心者的観点でそんな部分を紹介してみたいと思います。

※お前が妄想しすぎだというツッコミはご容赦を。

# 登録

Googleアカウントでもメールアドレスでも登録が可能です。私は個人Googleアカウントで登録しました。手順は説明するまでもないと思います。

# Learn

トップページからちょっと下の方に行くと [Learn](https://www.kaggle.com/learn/overview) という見出しがあり、ここをクリックすると、各種学習カテゴリがあり、その中に小さな学習コースがある形です。以下４カテゴリは人気があるのかトップページからのリンクがあります。

画像（2021-02-23現在）：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866006/497fe8d7-ec42-aeb9-b955-5aeb40a4a917.png)

- [Machine learning](https://www.kaggle.com/learn/intro-to-machine-learning)
- [Pandas](https://www.kaggle.com/learn/pandas)
- [Python](https://www.kaggle.com/learn/python)
- [Deep Learning](https://www.kaggle.com/learn/intro-to-deep-learning) ※リンク間違い？ホームからだとカテゴリ選択画面に飛びます。

機械学習の手練れでないと参加できない様なイメージでなく、機械学習やってみようという人にも門戸が開かれている感じです。チーム内とかでの勉強会のネタにいい感じです。

# Competition

上記Learnの下に [Competition](https://www.kaggle.com/competitions) という見出しがあり、同様にコンペ題材のリストに飛びます。その中で、基本的な題材が４つ紹介されています。それぞれの課題を勝手に推測すると以下の様になります。

 - [Titanic](https://www.kaggle.com/c/titanic)：生死（分類）予測問題
 - [House Prices](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)：値段（連続値）予測問題
 - [Predict Future Sales](https://www.kaggle.com/c/competitive-data-science-predict-future-sales)：時系列要素を持つ値段（連続値）予測問題
 - [Digit Recognizer](https://www.kaggle.com/c/digit-recognizer)：画像処理

# Titanic課題

上記Competitionのリストを開くと、有名（だと思う）なTitanic生存予測課題がサジェストされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866006/65af4a11-3c51-651b-e611-b26b1176b0ec.png)

[詳細ページ](https://www.kaggle.com/c/titanic)を開き、説明文を見ると豊富な情報が載っています。それらを順番にこなしていく事にします。３つの大きなコンテンツがあり、文章はそれの説明みたいな感じです。

## [YouTubeビデオ１](https://www.youtube.com/watch?v=8yZMXCaFshs&feature=youtu.be)

Kaggle自体や、課題の概要紹介です。

## [チュートリアル](https://www.kaggle.com/alexisbcook/titanic-tutorial)

今回の目的のメイン。冒頭に、十分な知識が無い人でもここから始めましょう的な事が記載されてます。
その後、実際に後述のKaggleNotebookを使ってTitanic課題を進める事にします。やってみると、Kaggleでの提出やロジック改善の流れが良く解ります。

1. KaggleNotebookを開く
1. KaggleNotebookを使って、コードをコピペしながら進める。
1. 女性か男性かで推測した結果を登録。
1. 順位確認
1. コピペでRandomForestClassifierを使って推測した結果を登録。
1. 順位確認（少し上がってる）

どんなデータを提出するのか、どうやって改善していくかの初歩を教えてくれます。ちなみにこの時点でスコアは0.77511です。順位の下の桁が見れなかったけど、101**/18197。半分ぐらいの所ですね。チュートリアルやらないで適当に予測したのを提出している人とか間違えてアップした人が多いのかもしれません。
あと有名な割には2万人弱って少ないような気がします。登録者自体は8万人いるっぽいのに。けどそれでも自分のイメージより少ないですね。何にせよ、Kaggleの事をよく知らない人には「俺、機械学習のコンペに参加して、そこそこの順位になった事あるんだよね」とかの見栄を張る事が可能です。よく知っている人はランク聞いてくると思うので、そこらへんはご自分の責任でお願いします。

## [YouTubeビデオ２](https://www.youtube.com/watch?v=sEJHyuWKd-s)

その他注意点、課題の種類、ランキングシステムに関して、課題によって賞金が出たり出なかったりする事の説明です。
細かくは間違いがあるといけないのでビデオを参照してもらうとして、課題をこなしたり、コミュニティに貢献すると良いランクがもらえる様です。Kaggleで良いランク持ってる人は多分良い感じで機械学習界で認知されると思います。

情報漏洩に対して説明している部分で、以下の英文の意味が何を意味しているのか良く解らなかった・・・隠喩しすぎ？

```Console
you are trying to predict if someone will get an illness. but you don't remove information about whether someone was treated for that illness.
```

# 用語解説：Notebook

データサイエンティストなど機械学習の研究をしている人たちが良く使う（はずの）ツールです。コード記述及び実行、結果確認、説明記入が可能で、まさに実験ノートです。JupyterNotebookというものが有名ですが機械学習は性能の良いマシンが必要なケースが多くお手軽という感じではなかったです。
しかし、最近はブラウザ上で同様な事が出来（るので自分のPCには影響なし）、しかも無料の GoogleColaboratory が有名になってきてます。そして、Kaggleでも同様にブラウザ上で動くNotebookを提供しています。こちらも無料。KaggleはGoogleに買収されたという事で、裏のエンジンは同じものを使っていると思われます。

# Code

[Titanic課題における他の人のソース](https://www.kaggle.com/c/titanic/code) を参照する事が可能になってます。他の好スコア出してる人はどうしているのだろう、という事を学ぶ事が出来ます。

# ポイントまとめ

 - データ分析にはJupyterNotebookとかGoogleColaboratoryというツールがありますが、Kaggleも無料で準備してくれている。
 - micro-course と名付けられた自己学習教材がそろってる
 - Titanic課題によるチュートリアルで提出までの流れが把握できる＆Kaggleやったという実績が得られる
 - 同一課題を手練れデータサイエンティストがどう処理しているか参考にする事が出来る（自分的にここが大きい）
 - コミュニティで相談できる（自分はまだやってないけど）

# 終わりに

最近はライブラリやサードパーティーサービスも充実しているので、自分で深いロジックを使って何かするという事は減ってるかもと思いますが、機械学習系人材は足りてないという話も聞くので、少なくとも基礎を理解しておく事は無駄にはならないと思います。
賞金を稼ぐという目的ではなく、実践経験を身に着けるという目的でも良いプラットフォームだと思います（まだ入り口に立った段階ですがｗ）。