データ解析

【徹底比較】データ分析コンペそれぞれの特徴とトレーニング実装

ウマたん
ウマたん
本記事では、データ分析コンペそれぞれの特徴について徹底的に見ていきます。実はデータ分析コンペのサービスはKaggleだけではなく、いくつかの種類があるので是非色んなコンペに参加してみてください!

こんにちは!

消費財メーカーでデータ分析・デジタルマーケティングをやっているウマたん(@statistics1012)です!

データ分析をある程度できるようになるとぜひ挑戦してほしいのがデータ分析コンペ!

データ分析コンペを開催するサービスといえばKaggleが有名ですが、それ以外にもデータ分析コンペはNishikaSignateなどたくさんあるんです。

ロボたん
ロボたん
え!?データ分析コンペってKaggleくらいしかないのかと思ってたー!
ウマたん
ウマたん
実は他のコンペもいくつかあって、そちらのほうがデータが扱いやすかったり入賞しやすかったりするんだよー!

そこでこの記事では、データ分析コンペの特徴についてまとめていきたいと思います!

また、いくつかのコンペのトレーニングデータのテスト実装もしていきます。

各データ分析コンペの特徴

python

さてまずは、各データ分析コンペの特徴について比較していきましょう!

ここで紹介するのは以下の3つです。

サイト名オススメ度入賞のしやすさレベル公式HP
Kaggle中級者〜上級者Kaggle
Nishika初級者〜Nishika
Signate中級者〜Signate

やっぱりKaggleが圧倒的な知名度を誇るのですが、NishikaやSignateといった国産のデータ分析コンペもあるので是非チェックしてみてください!

Kaggle

kaggle overview

公式HP:https://www.kaggle.com/

【オススメ度】
【入賞のしやすさ】
【レベル】中級者〜上級者

Kaggleとはデータサイエンティスト40万人を超える世界中のデータサイエンティストがひしめき合うコミュニティ

そんなKaggleの基本構造は、企業が与えた課題に対して腕に自信のあるデータサイエンティストたちが挑む。

数か月の期間、与えられたデータを基に試行錯誤して最適なモデルを構築したチームにはあらかじめ決められていた賞金が付与されるというもの。

Kaggleにはランクがあり、10以内入賞するとゴールドメダルがもらえるのですがゴールドメダルを5回手に入れるとグランドマスターという最高位の称号を得ることができます。

Kaggleを生業にしているKagglerと呼ばれる人たちもいるくらい、Kaggleは非常に盛り上がりを見せています。

企業は賞金というインセンティブを用意することで、自社のデータ活用を世界的な水準まで押し上げることが可能です。

そして、活躍の場が制限されていたデータサイエンティストがKaggleによって日の目を浴びることになりました。

企業にとっても個人にとってもWin-Winな場になっているんです!

ロボたん
ロボたん
素晴らしいコミュニティだね!!
ウマたん
ウマたん
データサイエンティスト同士で交流も生まれて刺激も与えあえるしねー!

ただ年々レベルが上がっていて、上位に入賞するのは厳しくなりつつあります。

そしてデータセットも非常に膨大なものが多く初心者が扱うにはあまりにも時間がかかってしまうケースが多いです。

もちろんKaggleはオススメのデータ分析コンペサービスですが、なかなか取り組み続けるのには気概がいるのも事実。

ぜひ他のデータ分析コンペサービスも覗いてみるとよいでしょう!

以下の記事でKaggleの説明とKaggleへサブミットする準備などについてまとめていますので是非チェックしてみてください!

【初心者向けKaggle入門】Kaggleサブミットの前準備と勉強法!当サイト【スタビジ】の本記事では、Kaggleについて解説していきKaggleに挑戦するまでにどのようなことを勉強しておいたらよいのか丁寧に解説していきます。ある程度データサイエンスの土台が出来た後はKaggleに挑戦し、世界各国の猛者と凌ぎを削りましょう!...

Nishika

Nishika

公式HP:https://www.nishika.com/

【オススメ度】
【入賞のしやすさ】
【レベル】初級者〜

Nishikaは国産のデータ分析コンペサービスで比較的新しいです。

海外ではKaggleなどのデータ分析コンペが有名ですが、国産のデータ分析コンペもいくつかあります。

データ分析コンペを、日本の当たり前に」をコンセプトにデータ分析コンペの開催を中心にデータサイエンスで様々な課題を解決するための事業を展開しています。

画像認識自然言語処理・需要予測・時系列分析など分野も網羅的に用意してくれているので最初に力試しとして取り組んでみることをオススメします!

世界的に有名なKaggleというデータ分析コンペももちろん有用ですが、データセットが煩雑でデータ量も爆発的に多くそもそもデータ分析のプロセスを1回まわすのにものすごく時間がかかってしまうコンペが多いです。

Kaggleで有名なタイタニックのデータは逆にサンプルが少なすぎて実践には不向きです・・・

その点、Nishikaは比較的扱いやすくかつ実践的なデータを基にデータ分析コンペが開催されているので初心者の人でも取り組みやすくオススメです。

以下のトレーニングコンペがちょうどよくオススメです。

またKaggleは海外のプラットフォームなのでほとんど英語なのに対して国産のプラットフォームは日本語なのもよいところですね。

のちほど、このNishikaが提供しているトレーニングのデータ分析コンペのデータを題材に機械学習の実装をしていきます。

Signate

Signate

公式HP:https://signate.jp/

【オススメ度】
【入賞のしやすさ】
【レベル】中級者〜

Signateという国産のデータ分析コンペもあります。

知名度はNishikaよりもSignateの方が圧倒的に高く、データコンペの開催数や参加人数もまだまだ多いです。

レベルはKaggleとNishikaの中間くらいのイメージです。

データ分析コンペのトレーニングデータを使って実装していく

ここまでで、データ分析コンペを比較してきましたが、実際にどんなものなのかNishikaの「中古マンション価格予測」というトレーニングコンペのデータに対してLight gbmを実装してみたいと思います。

まずNishikaに会員登録し中古マンション価格予測のデータから学習データとテストデータをダウンロードしてください(※会員登録をしないとデータをダウンロードできません)。

Nishika_estate

コンペティションのデータの箇所からダウンロードできます。

学習データには複数CSVが入っているので、それらをglobで結合させてデータフレーム化していきます。

Matplotlib
import glob
import pandas as pd
import numpy as np
import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error as mae

files = glob.glob("train/*.csv")
data_list = []
for file in files:
    data_list.append(pd.read_csv(file, index_col=0))
df = pd.concat(data_list)

カラムを見てみると・・・

Nishika data2

欠損値があったり、数値型で欲しいデータが文字列型になっていたりするので前処理を施していきます!

def data_pre(df):
    nonnull_list = []
    for col in df.columns:
        nonnull = df[col].count()
        if nonnull == 0:
            nonnull_list.append(col)
    df = df.drop(nonnull_list, axis=1)

    df = df.drop("市区町村名", axis=1)

    df = df.drop("種類", axis=1)

    dis = {
        "30分?60分":45,
        "1H?1H30":75,
        "2H?":120,
        "1H30?2H":105
    }
    df["最寄駅:距離(分)"] = df["最寄駅:距離(分)"].replace(dis).astype(float)

    df["面積(㎡)"] = df["面積(㎡)"].replace("2000㎡以上", 2000).astype(float)


    y_list = {}
    for i in df["建築年"].value_counts().keys():
        if "平成" in i:
            num = float(i.split("平成").split("年")[0])
            year = 33 - num
        if "令和" in i:
            num = float(i.split("令和").split("年")[0])
            year = 3 - num
        if "昭和" in i:
            num = float(i.split("昭和").split("年")[0])
            year = 96 - num
        y_list[i] = year
    y_list["戦前"] = 76
    df["建築年"] = df["建築年"].replace(y_list)

    year = {
        "年第1四半期": ".25",
        "年第2四半期": ".50",
        "年第3四半期": ".75",
        "年第4四半期": ".99"
    }
    year_list = {}
    for i in df["取引時点"].value_counts().keys():
        for k, j in year.items():
            if k in i:
                year_rep = i.replace(k, j)
        year_list[i] = year_rep
    df["取引時点"] = df["取引時点"].replace(year_list).astype(float)
    
    for col in ["都道府県名", "地区名", "最寄駅:名称", "間取り", "建物の構造", "用途", "今後の利用目的", "都市計画", "改装", "取引の事情等"]:
                df[col] = df[col].astype("category")
    
    return df
    
df = data_pre(df)

この前処理に関してここでは詳細は省きますが、全てが欠損値になっているカラムを削除して、「最寄り駅・面積・建築年・取引時点」に関して変換をおこなっています。

そして前処理をおこなったデータに対してLight gbm を実装!

df_train, df_val =train_test_split(df, test_size=0.2)

col = "取引価格(総額)_log"
train_y = df_train[col]
train_x = df_train.drop(col, axis=1)

val_y = df_val[col]
val_x = df_val.drop(col, axis=1)

trains = lgb.Dataset(train_x, train_y)
valids = lgb.Dataset(val_x, val_y)

params = {
    "objective": "regression",
    "metrics": "mae"
}

model = lgb.train(params, trains, valid_sets=valids, num_boost_round=1000, early_stopping_rounds=100)

簡単ですね!

このタスクでは評価指標がMAE(平均絶対誤差)であり、Validationデータでの結果は

0.0764となりました!

データコンペですのでテストデータで予測値を算出し提出するところまでやってみましょう!

df_test = pd.read_csv("test.csv", index_col=0)
df_test = data_pre(df_test)

predict = model.predict(df_test)
df_test["取引価格(総額)_log"] = predict
df_test[["取引価格(総額)_log"]].to_csv("submit_test.csv")

これでサブミット用のファイルを作成することができましたー!

簡単に実装できましたねー!

作成したファイルはサブミットしていきましょうー!

コンペティションの結果を投稿のボタンからサブミットすることが出来ます。

Nishika submit

テストデータでの結果は0.0792となりましたー!

全コードは以下になります!

パラメータチューニング特徴量エンジニアリングによってさらに精度が上がりますので是非色々と手を動かしてみてください!

今回扱ったデータは中古マンションの価格データということで比較的扱いやすいデータセットになっています。

他にも画像認識や自然言語処理のデータなどがあるので是非挑戦してみてください!

データ分析コンペに臨む上での勉強法

pc python

トレーニングコンペでの実装をおこなってきましたが、完全に初心者の方にとってはなかなか難しいと思います。

そこでここではデータ分析コンペに臨む上でおすすめの勉強法や勉強教材についてまとめていきます。

大きく分けてやってほしいことは以下の2つです。

・機械学習の基礎知識を身に付ける
・Pythonでの実装

機械学習の基礎知識を身に付ける

機械学習の理論を理解しておく上でおさえておくべきは微分と線形代数の知識!

そんな知識を分かりやすく身につけるためには以下のUdemyコースがオススメです!

Udemy コース アルゴリズム
\30日間全額返金可能/

教育サービスを提供するキカガクの代表取締役の方が丁寧に機械学習のアルゴリズムについて教えてくれます。

まあ機械学習の基本・土台となる単回帰分析を数式から学んでいくもの。

ビックリしたんですが、パワポではなく紙に手書きで進んでいくんです!

Udemy コース ブラックボックス中級
\30日間全額返金可能/

本コースでは線形代数を学びながら重回帰分析まで展開していきます。

線形代数を学びながら微分も用いて定式化していきますよー!

実際に手計算で重回帰分析を行い、その後Pythonのscikit-learnを使って分析を行っていきます。

Udemyは世界最大の教育プラットフォームで非常におすすめ!

買い切りなので自分のペースで自分のレベルに合った教材を楽しめます。

僕自身めっちゃお世話になってます笑

Udemy レビュー
【体験談】評判の良いUdemyを30コース以上受けている僕が徹底レビュー!当サイト【スタビジ】の本記事では、世界最大のオンライン学習プラットフォームであるUdemyのメリット・デメリット・評判・口コミについてまとめていきます!実際にプログラミングやデータサイエンス、Webマーケ関連のコースを30個以上受講している体験談をもとにお伝えしていきます。...

これら微分・線形代数の基本を学んだあと、さらに深く理論を学びたい人は以下の書籍を読み込んでみてください。

created by Rinker
¥3,190
(2021/10/25 16:32:21時点 Amazon調べ-詳細)

めちゃくちゃエッセンスが詰め込まれています。

AI・機械学習を学ぶ前手の数学勉強法については以下の記事で詳しくまとめています!

AI 数学
AI(人工知能)や機械学習に必要な数学のレベルと勉強方法を5分で解説!当サイト【スタビジ】本記事では、AIを理解する上で必要な数学の知識についてまとめていきます。AI理解に必要な数学は難しくありません。高校数学レベルの微積・線形代数・確率統計が分かっていれば問題なし。それらの数学をどのように勉強していけばよいのかについてもまとめていきますよー!...

Pythonでの実装

Pythonでの実装をするならこれまた以下のUdemyコースがオススメです!

簡単な機械学習手法をPythonで実装して実際にデータ分析コンペに提出していくのでオススメです!

Udemy コース データサイエンス
\30日間全額返金可能/

簡単な単回帰分析から機械学習(決定木)を使って回帰と分類問題を解いていくコース!

Signateのデータセットを題材に使っていきます。

課題定義や分析において気を付けるべきところについても学べるので実務においても役立つ内容です。

また手前味噌ですが、以下の僕の講座もオススメです。

【初学者向け】データ分析コンペで楽しみながら学べるPython×データ分析講座

Udemy-course
【オススメ度】
【講師】僕!
【時間】4時間
【レベル】初級~中級
\30日間全額返金可能/

このコースは、なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように作成しています。

アニメーションを使った概要編ハンズオン形式で進む実践編に分かれており、概要編ではYoutubeの内容をより体系的にデータ分析・機械学習導入の文脈でまとめています。

データサイエンスの基礎について基本のキから学びつつ、なるべく堅苦しい説明は抜きにしてイメージを掴んでいきます。

統計学・機械学習の基本的な内容を学び各手法の詳細についてもなるべく概念的に分かりやすく理解できるように学んでいきます。

そしてデータ分析の流れについては実務に即したCRISP-DMというフレームワークに沿って体系的に学んでいきます!

データ分析というと機械学習でモデル構築する部分にスポットがあたりがちですが、それ以外の工程についてもしっかりおさえておきましょう!

続いて実践編ではデータコンペの中古マンションのデータを題材にして、実際に手を動かしながら機械学習手法を実装していきます。

ここでは、探索的にデータを見ていきながらデータを加工し、その上でLight gbm という機械学習手法を使ってモデル構築までおこなっていきます。

是非興味のある方は受講してみてください!

Twitterアカウント(@statistics1012)にメンションいただければ最低価格の1200円になる講師クーポンを発行いたします!

また、PythonでオススメのUdemyコースについて以下でまとめています!

Udemy Python
【20コース以上受講】UdemyのおすすめPythonコースを徹底レビュー!当サイト【スタビジ】の本記事では、世界最大の教育プラットフォーム「Udemy」のPython講座を20コース以上受講した僕がそれぞれのコースを徹底的にレビューしていきます!ぜひムダな時間を費やさず目的に沿った効率の良いPython学習を進めてくださいね!...

Pythonの勉強に関しては以下の記事で詳しく解説していますので是非チェックしてみてください!

Python 勉強
【Python独学勉強法】初心者が3か月で習得できるロードマップ!当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

結局どのデータ分析コンペを選べばよい?

quiz

さて、結局いくつかのデータ分析コンペがあることは分かりましたが、どのコンペを選べばよいのでしょう?

結論から言うと、サービスで選ぶのではなくコンペで選ぶことをオススメします。

コンペの内容は色んなものがあるので、自分が得意な領域だったり自分が取り組んでみたい領域のコンペティションを探して挑戦してみることをオススメします。

そのためには、KaggleNishikaSignateもとりあえず全て登録しておいて、定期的にコンペティションをチェックすることをオススメします。

初心者におすすめなのはNishikaですが、ぜひ自分の取り組みたいコンペを色々と探してみてください!

データ分析コンペ まとめ

ここまででデータ分析コンペについて見てきました。

データ分析コンペといってもKaggleだけではなく、いくつかのコンペティションがあることがご理解いただけたでしょうか?

データ分析コンペティションは実践力を積むのに非常にオススメな場で、ぜひぜひ取り組んで欲しいです。

KaggleNishikaSignateの中から自分に合ったコンペを探して挑戦してみましょう!

サイト名オススメ度入賞のしやすさレベル公式HP
Kaggle中級者〜上級者Kaggle
Nishika初級者〜Nishika
Signate中級者〜Signate

データサイエンティストへの勉強法や機械学習・Pythonの勉強法については以下の記事で解説しています。

【入門者向け】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...
機械学習独学勉強ロードマップ
【5分で分かる】機械学習の独学勉強ロードマップを徹底的にまとめていく!当サイト【スタビジ】の本記事では、機械学習の独学勉強ロードマップについて徹底的にまとめていきます。機械学習をいきなり理論からしっかり勉強しようとすると挫折しかねません。そこで、この記事ではなるべく挫折しないロードマップをお伝えしてきますよ!...
Python 勉強
【Python独学勉強法】初心者が3か月で習得できるロードマップ!当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!