Kaggleを始めてみる

Kaggleとは

Kaggleというサイトをご存知でしょうか?

Kaggleとは、データ分析のコンペに参加したり、勉強するためのサイトで、世界中のデータサイエンティストが参加して分析のアルゴリズムを競っています。参加している人のことをカグラー(Kaggler)と言ったりします。

Kaggle: The Home of Data Science

 

 

参加するメリット

ここに参加するメリットは、まず分析の進め方や手法が学べること分析とはなんぞやという人向けコンテンツも用意されていて、最初はチュートリアルの分析事例に沿って手を動かしながら学べるようになっているので(具体的な内容は、後述します)、やりながら分析を学べること。

あとは、企業や団体が実際に解いて欲しい分析の問題を、Kaggleを通して世界中のデータサイエンティストに公開していたりして、それを解くための一番精度の良い分析を提示した人に、賞金が用意されていたり、カグラーの世界ランキングが上位にあがるにつれて、データサイエンティスト業界で注目される存在になれたりします。

 

また、あくまでデータ分析の世界なので、参加するためのハードルとしてコーディングは必要最低限のみで大丈夫です。というか、極論必要無かったりします。というのは、例えばエクセルを使ったとしても、それで分析結果のアウトプットとしての予測精度が高ければ何でもよいのですから。

データ分析に興味のある日本人にとって、一番大きなKaggleへの参加ハードルは英語ですね。英語も簡単なものなので時間をかければ読めると思うのですが、全部英語なので取っ付きにくさはどうしてもあります。

 

Kaggleを始めてみた

カグラーになるべく、早速上記サイトでアカウントを作成して、とりあえず自分のアイコン画像を登録。形から入ります(笑)。

あと、これを見て始めようかと思っている人向けに、一応Kaggleを始めた自分のスペックを書いておきます。

分析:素人レベル。数学的素養はあり。統計学はちゃんと学んだことが無く、チャンスがあればちゃんと学びたいと思っている。とりあえず積分して1になるように係数掛けとけば確率分布になるというお決まりの進め方がまだしっくりきてない。

コーディング:素人レベル。分析っぽい言語だと、Python,Rはさわったことある、+Pythonは昔ちょっと勉強した。Pythonは作業的に無駄がなくコーディングしやすい印象があったので、今後Pythonを使って行きたいと思っている。

英語:ちょっと勉強したレベル。TOEIC700点強。必要な環境で必要なだけ勉強するしかないと思っているので、Kaggleが勉強再開するための良い機会だと思っている。

 

Kaggleを始めて良かったのは、最初、単に分析の進め方を実際に体験しながらイメージ出来ることです。

最初からやってみてたので、以下で、その流れを日本語で解説します。

 

 

まず、チュートリアルとしてKaggleが用意している分析問題を体験していきます。

Titanic: Machine Learning from Disaster | Kaggle

 

これはタイタニックの事故の生存者を予測するモデルを考えるというもの。

一般に、分析の問題は大体、①データを分析→②モデルを構築→③予測する、ということをやります。

具体的に、この場合には、タイタニックの乗客のtrainデータ(全乗客のうち一部のデータ)を使って、残りの乗客のデータ(testデータ)を予測するということをやります。

そして、このチュートリアルには、

エクセルを使った分析

Getting Started With Excel - Titanic: Machine Learning from Disaster | Kaggle

Pythonを使った分析

Getting Started With Python - Titanic: Machine Learning from Disaster | Kaggle

Rを使った分析

New: Getting Started with R - Titanic: Machine Learning from Disaster | Kaggle

 があり、コーディングに自身が無い人でもエクセルを使って分析の流れを理解出来るような内容になっています。もちろん、ちゃんと今後分析をやっていくためには、実際、ほとんどの場合コーディングは必要となるのですが、最初はまず分析のステップをはっきり認識しておく必要があり、それは当たり前ですが、分析においては、コーディングよりも重要なことです。

コーディングはあくまで手段なので、分析の初心者の方は、直感的にまず何をすればいいのかを理解するためには、エクセルを使った分析を見てみるのが有意義だと思います。

 

エクセルを使った分析

 このタイタニックの問題のデータには、各乗客毎の情報(性別年齢、宿泊した部屋のランク、チケットに払った金額、家族等が乗客としているかどうか)+その人が事故で亡くなったかどうかの情報が入っていて、まず、trainデータの中で、生存した人/亡くなった人にはそれぞれどのような傾向があるのかを探ります。

trainデータの集計(探索的分析)

例えば、子供や女性は、現場では優先的に助けられる傾向がありそうとだ思い、trainデータを集計してみると、男性と比較して、女性の方が生存している割合が実際に高いことがわかります。

集計にはpivotテーブルを活用しています。

ここで重要なのは、まず直感や何かの考えから結果を想定しながらデータを見てみること。闇雲にデータを片っ端から並べてみるというよりは、何でもいいので「仮説を立てる」→「データを見る」を繰り返すこと。これによって、生存するしないの、運命を分けた一番重要なファクターや、その次に重要なファクター、その組み合わせの関係等を探します。

 モデル化

 次に行う作業は、前ステップで見つけたファクターと生存するしないの関係を数式化することです。サイトのエクセルの例だと、極端ですが、女性は生存、男性は死亡として、数式化しています。エクセル上ではIF文を使うことになります。これも立派なモデル化であり、trainデータにおいては、70%程度の精度があり、それなりに有意義です。

testデータに当てはめる

 次は、testデータに前ステップで作った数式を当てはめます。つまり女性→生存、男性→死亡という関係をtestデータの全ての乗客に当てはめ、生存or死亡のフラグを立てます。これがアウトプットとなります。Kaggleでは、testデータの2列(乗客ID、生存or死亡のフラグ)の情報のみをファイルに記載して、サイトにアップします。そうすると、すぐ自分の予測モデルが評価され、その場で点数が表示されます。

予測モデルを改善する

 上記までのステップで分析の1サイクルが終わるのですが、予測モデルをもっと改善していくことで、点数が上がっていきます。女性は生存して男性は死亡するというモデルは、完全にランダムに生存/死亡を予測するよりは上手く行っていますが、それでも乱暴過ぎるので、さらに生存/死亡に関係しているファクターをpivotテーブルで集計しながら探します。サイトの例では、年齢のファクターを見ますが、男女のファクターを一部でも超える影響はないことが分かります(幼い少年と、年寄りの女性を比較した時に、年寄りの女性の方が生存割合が高い)。

そして、チケットに支払った金額のファクターが一部で、男女のファクターを超えることが分かり、これをモデルに適用して、改善することが出来ます。

 

これで、エクセルのチュートリアルは終了。

 

次はPythonを使った分析です。

本質的には、今回のエクセルを使った分析と同じことをやることになります。使うデータも同じですが、ツールが違うので、統計的な処理が自由に出来るようになるのが違うポイントです。統計的な処理を行うことで、複雑なモデル化ができたり、探索的なデータ分析でもいろいろ出来たりします。

 

長くなったので、Pythonの分析はまた次回。