44
33

More than 1 year has passed since last update.

【Kaggle挫折しそうな方向け】AtCoderのススメ

Last updated at Posted at 2020-12-09

はじめに

この記事は、Kaggle Advent Calendar 2020のアドベントカレンダー9日目の記事です。

Kaggle楽しそうだけど、コーディングが難しくて挫折しそうな方向けに、1つのTipsをご紹介するポエムです(あらかじめご了承ください)

Kaggleがうまく楽しめない・・・

突然ですが、Kaggle楽しんでいますか?

私も昨年Kaggleを知って、プログラミング未経験ながらPythonも覚えて1~2つコンペに参加して、Kaggle楽しいなあと思いながら、頑張って続けていました。昨年のKaggle Advent Calendarでは、こんな記事も書いて、Kaggleやろうぜ!と息巻いていたり。

ゼロからsubmit出来なくても、世界中のデータサイエンティストたちが公開しているNotebookを見れば、分かりやすくソリューションやアイディアが公開されているところがKaggleの素晴らしいところ。それらを読んで写経していくことでメキメキと力がつく、そう信じながら取り組んでいました。

が、しかし。
vote数の多いBeginner向けNotebookの写経に取り組んでいたのですが、いろいろと問題があることが分かりました。

  • Beginner向けの割にコードが難しい(class、defの多用)
  • EDAまでは着いていけるが、モデリング部分でコードの難度UP(入り組んだfor文、dictなど)
  • コード量の長いものが多く、理解しながら読んでいるだけで日が暮れる
  • 何より、自分で考えてコードを書いていないので、成長実感が持てない…

単純にコーディング力が足りない、という現実

上記の問題をあらためて見つめてみた結果、悲しいことに、単純にPythonのコーディング力が足りていないことが分かりました。具体的には、以下のようなスキルです。

  • かんたんな処理を、あたまで考えて1から書ける
  • Pythonの基本的な文法は手で覚えている(list,dict,for,if,try-except,map,リスト内包表記)
  • 単純に、Pythonを毎日書くという習慣

これはどうにかしないとKaggleを楽しめない、といろいろ試行錯誤した結果、「AtCoder」をやるのが良いのでは、という結論に達しました。

Kaggleを離れてAtCoderをやってみた

AtCoderとは、競技プログラミングのコンテストを運営しているサイトです。
競技プログラミングとは、「プログラミングを使って、パズル的な問題を制限時間内に出来るだけ多く解くスポーツ」のことです。

ds.PNG

上記と同じような悩みのある方は、とりあえず、こちらの記事を読んで、「過去問精選10問」を解いてみることを、激しくオススメします。

Kaggleでは、Notebook上のコードが分からずうんうん唸っていた時とは比べ物にならないほど、コードを書くことが楽しいなと思えてくるはずです。以下、具体的なメリットを書いていきます。

【AtCoderをやるメリット➀】Pythonの基本的な文法をマスターできる

AtCoderでは、プログラミング言語の基本的な文法・関数をつかって、問題文に沿ったアルゴリズムをなるべく速く正確にコーディングすることが求められます。なので、どんどん問題を解いていくと、必然的に文法は手になじむように書けてくるようになります。具体的には、Kaggleでも見かける、以下のようなことは気づいたらサラサラと書けるようになります。

  • データ型(int,float,str)
  • if文
  • for文(多重ループも)
  • while文
  • break,continue,else
  • list,tuple,dictionary,set
  • 多重list(多次元配列)
  • リスト内包表記
  • map関数、lambda関数、enumerate関数

※Pandasまわりは身につかないので、別途キャッチアップする必要あり。個人的には、データサイエンティスト協会の出している100本ノックがおすすめ。

【AtCoderをやるメリット②】自己肯定感が高まる

Kaggleは長期戦です。コンペ期間は2~3か月ほどで、最終結果が出るまでは時間がかかります。また、コンペを戦い切ったとしても、メダル対象が上位10%以上となるため、なかなか初心者が「やったー!」と喜べる瞬間が少ないのが現状です(学びは深いです)

一方で、AtCoderは1つのコンテストは100分ほどと超短期戦です。開催タイミングが土日なのが少し難点ですが、サクッとコンテストに出ることができ、かつ自分のレベルがレーティングというかたちで可視化されるので、実力や成長がすぐに実感できます。ご参考までに、以下が私のレーティング推移なのですが、右肩上がりとなっていて、見ていてとても気持ちよいです。笑

FireShot Capture 118 - rinascimento - AtCoder - atcoder.jp.png

コンテストの詳細や参加方法は、先ほどもご紹介した記事に分かりやすく書いてあるので、参考にしてみてください。

【AtCoderをやるメリット③】コードを書いている実感が持てて、楽しい!

AtCoderでは、問題に対してそれを解決するコードを、ゼロから自分のあたまで考えてコーディングします。自分がこれなら問題に答えられる、と考えて書いたコードがうまく動いて正解(AC)だったときの嬉しさは、正直Kaggleをやっていたときには味わえなかった感覚でした。

私がKaggle初心者で、Notebookを読んで写経して少しチューニングすることで手いっぱい、またコーディング経験もあまり多くない状態だったこともありますが、「ゼロから自分のあたまで考えたコード」がうまく動くことは、とても楽しい体験です。

さいごに

こんなかたちで、昨年10月からの約1年間、Kaggleを離れてAtCoderでコーディング力をこつこつ磨いてきて、ようやく目標とする「緑ランク(Rating:800~)」に到達しそうな状況です。「緑ランク」になった暁には、Kaggleにあらためて戻って、またKaggleライフを楽しみたいなと思っています。

最後になりましたが、Kaggle初心者の皆さん、AtCoderもいいぞ…!

※レーティングランクについての参考記事
AtCoder(競技プログラミング)の色・ランクと実力評価、問題例

余談(緑色になりました!)

2020/12/19のコンテストで、目標としていた緑色(Rate:800〜)になりました!
2021年はKaggleに戻って、Competition Expertを目標に引き続きがんばりたいです^ ^

FireShot Capture 269 - rinascimento - AtCoder - atcoder.jp.png

44
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
33