あさの畑

京都の大学生、自由気ままに雑記ブログを栽培中

Kaggleの日本版「SIGNATE」に初参戦。国立公園の観光宿泊者数予測コンペで124人中29位でした…。

12月13日まで日本のデータサイエンスコンペティションであるSIGNATEの「国立公園の観光宿泊者数予測」のコンペに参加していました。10月の終わりごろからこのコンペは開催されていたようですが、僕が参加したのは12月7日でかなり遅かったので締め切りまでの1週間は家でも学校でもこのコンペのことばかり考えていました。

 

この記事でKaggleという機械学習コンペを始めた!と書いているのですが、登録したもののどうしたらいいのかさっぱりわからなくて手つかずの状態でした…。

www.asanohatake.com

 

そんなときに見つけたのが「SIGNATE」という日本のデータ分析のコンペ。そしてちょうど「国立公園の観光宿泊者数予測」のコンペが開催されていたので挑戦してみたわけです。

f:id:gadada:20181216180800j:plain

 

結果は124人中29位!

初めてのコンペで、データの前処理の仕方とか時系列データの扱い方とかモデルの選択についてとか全くわからなかったので、めちゃくちゃ調べまくりました。そしてなんとか予測して投稿して124人中29位という結果でした。全然わかっていないにしてはまずまずかな?という感じです。(でもほんとはもっと上位にくいこみたかった…。)

f:id:gadada:20181216180757j:plain

 

感想

データの前処理が8割っていうのは本当だった…

よく、「データ分析の8割はデータの前処理だ。」的なことを耳にしていたのですが、これは本当でした。モデルは、「とりあえずランダムフォレストにしてみるか」、「なんかみんなXGBoost使ってるし使ってみよかな」とあまり考えなくても何とかなったのですが…(いや、なんとかなってないのかな、、、?)。データについては、どれをどのようにして使うのかを全部自分で考えないといけなかったので難しかったです。でも試行錯誤しているうちにデータの可視化の方法やプログラミングのスキルもかなり成長したと思うので良かったです。

 

とりあえず自己流でいくしかなかった(笑)

SNSのデータとか、路線データとか、気象データとか、いろんな種類のデータが提供されていてどれをどのように使ったらいいのか全く分かりませんでした。でも、「宿泊者数なんて土日と連休に一番左右されるんや!」と信じて、とりあえず曜日、祝日、長期休暇など僕が個人的に大事だと思った要因を考えてモデルを作りました。だから提供されたデータはほとんど使えてない、、、(泣)。使い方教えてください。時系列データの扱い方も知りたいです…。

 

Kaggleとは違って、公式サイトでの他の参加者との交流が全くないので、そこは残念でした。上位に入賞されている方々の分析手法を知れたらもっと勉強になるのになと思いました。

 

クロスバリデーションをたぶん間違えていた…

はじめは、train_test_splitでトレインデータとバリデーションデータに分けてから、そのトレインデータに対してcross_val_scoreでクロスバリデーションを行っていました。でもよく考えたら分ける前のデータに対してクロスバリデーションを行わないとちゃんとした汎化性能が測れないんじゃないかと思って…。結局、分ける前のデータに対してクロスバリデーションを行いました。

 

じゃあ学習はどのセットを使えばいいのかっていう疑問がでてきて、さっぱりわからなくなりました。ここらへんは今からちゃんと勉強します。たぶんこのへんの勉強不足によってちょっともったいないことをしてしまったのかなと思います。

f:id:gadada:20181216202327j:plain

 

選択するファイルを別のものしていたら順位が10位ぐらい上がったと考えると本当にもったいない。もちろん最終評価を完璧に予測することは誰にもできないので、こういった悔しさを感じられている方は他にもおられるかもしれませんが…。

 

データ分析は楽しい!

よくわからないことが本当にあって、知識も経験も何もかもが不足しているなと痛感した初コンペでした。でもデータ分析自体はめちゃくちゃ楽しかった!寝食を忘れて、、、というほどではありませんが、大学の課題は忘れて没頭していました。

 

もっと精度良く予測できるようになったり、データを自由自在に操れるようになったりしたら、もっともっと楽しくなると思うので、自由に使える時間が多い大学生のうちにもっともっともっと勉強しようと思いました!Kaggleも頑張ります。

 

他の参加者の方々がどのように分析されているのか知りたいです!!!