ギークなエンジニアを目指す男

機械学習系の知識を蓄えようとするブログ

機械学習初心者が約10ヶ月でメダルより大切なものを獲得できた話【kaggle Advent Calendar 17日目】

f:id:taxa_program:20181225003129p:plain

本記事は、kaggle Advent Calendar 2018の17日目の記事です。

qiita.com

何を書くか直前まで悩んでいましたが、16日に参加したAIもくもく会の中で、
機械学習に興味はあるけど、どのような手順で、何から勉強していったら良いかわからない
という方が数名いたので、自分が今年の3月くらい〜今日に至るまで勉強してきた中から
今の自分ならこのような手順で勉強することをオススメする!という記事を書いてみようと思います。

※自分の勉強した教材の中からのオススメになるので、偏った内容になることをご了承ください。
※これもオススメ!というものがありましたら、ぜひ教えていただけると嬉しいです。

タイトルにあるメダルより大切なものについては最後に記載しております。

対象読者

以下の読者を想定して記事を作成しています。

  • 機械学習に興味はあるんだけれども、何から勉強して良いか分からないor悩んでいる人
  • kaggleでタイタニックやって満足して終わってしまった人
  • カーネルFork→submit(ッターーーーン)で終わってしまっている人

2018年3月時点の筆者スペック

大学は工学部の情報学科でしたが、機械学習の字も知らない学生でした。
pythonを勉強し始めたのも2018年3月からです。
kaggle初心者というどころか、機械学習初心者でした。

2018年3月〜今日に至るまで勉強したこと羅列

カテゴリに分けて羅列します。
(現在進行形で勉強している教材も載せています)

書籍

ネットで検索して、いわゆる良書であろう本を買って勉強したつもりです。

動画

動画はudemyとcourseraを利用しました。
udemyは頻繁に割引セール(1万円の講座が1300円とかになる)をやっているので、そのときにまとめての購入をオススメします。

ここで紹介しているcourseraの動画は英語音声で、日本語は字幕のみです。(この字幕もgoogle翻訳した日本語ぐらいの精度です) 機械学習も英語も勉強できてお得という人もいますが、機械学習だけでもそんなに優しい内容ではないのに、 それを英語で説明されたときに挫折しない程の英語力もしくは鋼の心が必要だと思いますので、初心者の方にはudemyをオススメします。

もちろん、ここで紹介しているcourseraの動画はとてもわかりやすく、機械学習を一通り学んだ後に見るとより理解が深まるかと思います。

udemy

coursera

kaggle

kaggleではチュートリアル含め下記データセットで学びました。

その他

初学者に伝えたいオレオレ勉強ルート

ここが本題です。

先に掲載した中から、どの順番でどの教材を用いれば良さそうか、私なりの勉強ルートをお伝えできればと思います。

STAGE1:機械学習の土台作り

まずは機械学習の基礎の数学を学ぶことで、今後様々なモデルを学ぶときに、理解しやすくなります。
そこで、下記書籍と動画をオススメします。

STAGE2:ライブラリの使い方や一般的なモデルを理解する

土台づくりが終了したら、pythonを用いながら機械学習に触れていきます。
ここでは、基本的なモデルから各種ライブラリの使い方を体系的に学ぶことを意識し、かつ、実際のkaggleデータセット等を用いて仮説検証することで、ある程度実力がつくと思います。

まずは、

こちらの書籍で機械学習を体系的に学び、下記kaggleのデータセットで実際に予測モデルを作成してみるのが良いと思います。

STAGE3:深層学習を学ぶ

ある程度機械学習に慣れてきた頃に、深層学習というワードに興味を持つようになると思います。
(実際にSTAGE2で挙げた書籍でもディープラーニングの話が載っています)

そこでオススメしたいのが下記書籍です。

このシリーズは、ライブラリに極力頼らずに、ゼロからニューラルネットワークを構築してみる、という内容で、図解も多く大変わかりやすいです。

初版無印(画像処理編)が大変人気で、続編である2部(自然言語処理編)が発売されました。

まずは、初版無印(画像処理編)の方でCNN等を学び、下記データセットなどで学んだ技術を試してみるのが良いと思います。

そのあと、2部(自然言語処理編)でRNN等を学び、下記データセットなどで学んだ技術を試してみるのが良いと思います。(こちらは私自身現在進行形で取り組んでいます)

ここで紹介しているデータセットは、あくまで自分がチャレンジしたことのあるものを挙げているだけなので、 kaggleなどでいろいろ探してみて、自分のやりたいデータで取り組むのがモチベーション維持にも繋がると思います。

STAGE4:やりたい分野に特化して学習する

これ以降は、自分のやりたい分野に特化して取り組むのが良いのではないでしょうか。(自分もそうしていく予定です)

今までも紹介してきましたが、kaggleには様々なデータセットが転がっており、その中でもコンペが開催されたデータセットであれば、世界中の強いデータサイエンティストの人がさいつよカーネルを公開してくれているので、それを眺めて実行するだけでも多くの知見が得られると思います。

勉強のモチベーション維持方法

勉強していく上で、モチベーションを維持することはとても重要だと思います。
そこで、いくつか自分が実践していたモチベーション維持方法をお伝えします。

Twitter

kaggleに毒されている積極的に取り組んでいる方が大勢います。
そういった方々をフォローしておくだけでも、モチベーションは無限大になるかと。
本記事もそうですが、kaggle Advent Calendar 2018に投稿している方々はフォローしておくことをオススメします。

私もフォローお待ちしております。
twitter.com

ブログ

アウトプットは正義です。
ブログの開設が面倒臭いという方にはQiitaをオススメします。
いいねが付きやすいですし、多くの人の目に触れる確率が高いです。

ここではアウトプットすることのメリットについての言及は控えますが、記事を書いて誰かから反応が貰えると、とてもモチベーションになります。

kaggle-ja slack

kaggleをやっている日本人が日々意見を交換し合うコミュニティがあります。
ここへ参加しているだけで、様々な知見が流れてきます。

yutori-datascience.hatenablog.com

勉強会

自分はconnpassTECH PLAYから気になる勉強会やイベントに参加して、いろんな人から刺激を受けることでモチベーションの維持も行うことができました。 (住んでいる場所的に新宿、渋谷界隈が多め)

最後に

以上、少し長文となりましたが、本記事が機械学習初心者にとって有意義な記事となってくれれば幸いです。

そして本当の最後に。

タイトルにも書いているメダルより大切なものですが・・・

それは

内定です。

これはこれで別記事として書こうと思いますが、2019年3月よりMLエンジニアとして仕事をさせて頂くことになりました!

本当に楽しみで仕方ありません。

これまで転職活動に使っていたエネルギーを、スキルアップの方に惜しみなく使っていきたい所存です。