Yonoseko's Working Diary

主にiPadでPythonを勉強したり、kaggleを趣味にすべく機械学習を勉強したり、ケーナの演奏をしたりする人の活動日誌です。

【かつて数学の偏差値50切ってたけど機械学習したくてkaggle参入を目標に勉強始めてみた】学習計画Ver 1.0

そのタイトル、Blogのタイトルにすれば良いんじゃないの、と思いつつ…

(このBlogは機械学習以外の作業も書くので、迷いながらタイトルつけたらこんなになりました。)

 

学習の記録だけだとアレなので、どんな学習計画を立てたのか記録しておきたいと思います。去年Pythonの学習を開始したところからどうぞ。

 

事前情報

開始時スキル

数学
SQL
  • RedshiftやPostgreSQLの経験がふんだんにある。普段もりもり書いている。大好き。環境構築とかはよく知らない。
データ分析 / 機械学習
  • 最初の仕事と現職がデータアナリストなので単純集計やグラフにしたりするのは慣れている。
  • 機械学習は最初の仕事の時に簡易ツールを使ったり、モデル構築から業務利用まで落とし込む先輩たちの後ろ姿を見ていた。しかし、本格的に自分でやる前に脱落。
  • 多数の入門書籍が年単位で積読
Python
  • Python 3 Tutorial | SoloLearn: Learn to code for FREE! というアプリがiOSでできたので、一通りやって変数の使い方や関数の定義などを覚えた。

  • 業務の中でPlotlyを使ってダッシュボードを作ってみたくなり、見よう見まねで挑戦。体系的に習得していないPandasで四苦八苦する。
  • plot.ly

  • 多数の入門書籍が年単位で積読

 

学習スタイル / 勉強する上で考慮すべき性格

  • 長時間同じものを見続けたり、読み続けたりするのは苦手。
  • 長い動画教材とは相性が良くない。
  • 音声よりも視覚情報、特に文字が入りやすいので読み物とは相性が良い。
  • 長い読み物などは書きながらじゃないと頭に入らない。
  • 手を動かす方が好き。試験勉強のときはむしろ最初から問題集に突撃してバツばっかりつけてからスタートするタイプだった。
  • iPadを持ち歩いて、気が向いた時にやって、集中力切れたら移動して…みたいなのが相性が良い。

 

学習計画

方針

業務で使いたい、副業で必要になりそう、過去にドロップアウトしたトラウマを払拭したいなどの理由で、学習を始めることにしました。kaggleのことは元から知っていて、高嶺の花でございました。しかし、夢見る少女じゃいられないお年頃にもなってきたし、とりあえず飛び込んでみるのを目標にしたら良いのではと思って、以下の通り方針を立てました。

  1. とりあえずPythonでpandasやmatplotlib、scikit-learnを扱えるようになるための基本教材に取り組む。
  2. kaggleでTitanicしてみる。
  3. TitanicからKernelを一つ選んで写経する。
  4. 応用編の教材に取り組んでみる。 ←今ここ
  5. kaggleの他のコンペに挑戦してみる。
  6. 並行して数学のことを勉強してみる。

これなら、手を動かしながらできるんじゃないかということで進めています。

 

教材: 1. とりあえずPythonでpandasやmatplotlib、scikit-learnを扱えるようになるための基本教材に取り組む。(PyQ, Aidemy)

PyQ

最初は知り合いのエンジニアさんから教えてもらって、PyQからはじめました。

pyq.jp

 これまで、Udemyの動画教材や、いくつかの関連書籍を買ったりもしてたのですが、学習スタイルのところで書いたとおり、手を動かさない教材なのでもちませんでした。

PyQは実際に手を動かして、採点できるということで取り組みやすそうだったので試しました。お手本コードの書き写しである写経を基本に、演習問題もガツガツ書いて進めるタイプの教材です。Python初級のコースが大充実で、プログラマー向けということもあって、設計に関する部分までカバーできたのは良かったです。UIも使いやすく、iPadでもなんとか動く(日本語が入力できない、というのはありましたが…)ので気に入っていました。

ただ、初級編が大充実の300以上の講座で構成されていて、最後のタスクが重かったので分析まで辿り着けずに終わってしまいました…。機械学習までさくっとたどり着かないとまたドロップアウトしそうと思い、もう少し軽めの教材を探すことにしました。

(一通りの機械学習のお作法を覚えたら、また戻ってくるかも?)

Aidemy

aidemy.net

AIプログラミングに寄せた学習サイト。

 

いろいろ 探した結果、こちらのAidemyに辿り着きました。Aidemyは1講座あたり1〜4時間と短めで、さくさく進められるのが良かったです。PyQと同じく、コードを書き進める系です。コンパクトに纏まっている文、情報量も多いので横でマインドマップを作りながら知識をまとめたりしました。事前知識として少しでも機械学習のことを知ってるのであればAidemy直行でも良いかな、という気がしました。

(特に「概論」系のコンテンツがよくまとまってます!)

わたしの取ったコースは、

ディープラーニングで画像認識にトライ」のようなモデルコースがいくつか用意されているので、興味のあるお題からすんなり入れるのが良いです。

(ちなみにスクールもあるみたいです。)

教材: 2. kaggleでTitanicしてみる。(Kaggle)

ということで、ここまで来たところでKaggleに突撃しました。

Kaggle: Your Home for Data Science

 

チュートリアルエスト的存在である「Titanic: Machine Learning from Dissaster」に全知識を投入してチャレンジ↓

f:id:yonoseko:20180927000038p:plain

 

途中、

「あれStrで入ってるカテゴリ変数そのまま突っ込んだら怒られるんだ…え、どうするの?」

「あ、なんかアドバイス出てきた…One-hot coding?え、なにそれ美味しいの?」

「submitするCSVどこに出力されたの…」

 

などいろいろありつつ、とりあえず投稿!

正解率0.71!上位97%!

 

…はい、上から数えて97%番目ということです。めっちゃ後ろの方です。

英会話の先生に話したら

「確認なんだけど、君の下に3%しかいないってことだよね」

と聞かれました。そうだよ、ジョン

 

というのは、今回はとりあえず頂いたCSVをモデルに突っ込める形にして投入して出しただけという感じだったので、必要なデータの前処理や丁寧な吟味をしていなかったのです。

 

でも!

 

形はどうあれ、憧れのkaggleにわたしはたどり着いた!!!

 

教材: 3. TitanicからKernelを一つ選んで写経する。(Kaggle)

Kaggleでは、他の人が公開しているKernel(実際の作業ファイル。Jupyter Notebookのファイル)を閲覧することができます。これまでの学習から「やっぱ写経よね」となったわたしは、とりあえず人気がありそうなKernelを写経することにしました。

 

f:id:yonoseko:20180927001008p:plain

あ、なんかすごい人気そうなやつある!(Ensembling/Stackingって何?)

 

ということで写経。

途中新出関数などもありながらも、わかる…わかるぞ…!ムスカの気持ち丸わかりな感じでとても楽しい写経でした。また、一部の処理は「こうした方が効率良いんじゃない?」というようなのも思いつき、実際に動いたときはとても嬉しかったです。

そして、件の「Ensembling/Stacking」にたどり着いた時、Aidemyに出てきたのでアンサンブル学習という概念はわかりつつも(Stackingは進出単語)、最初は何やってるのかさっぱりわからないのでいくつか記事を検索。ああ、そういうことだったのかー、と学びもありました。

 

教材: 4. とりあえずPythonでpandasやmatplotlib、scikit-learnを扱えるようになるための基本教材に取り組む。(書籍, Coursera)

そんなこんなで写経を終えたわたしは、「機械学習する上で必要な手順」がわかってきました。そして、どうやらKaggle界ではアンサンブル学習やスタッキングは常識らしいということを何となく感じ取り、もう少し体系的に学べる教材は無いかな、と探しました。見つけたのがこちらの本。

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

 

 やばい!オライリー!!!

オライリー頭から読む日が来ると思わなかった!

でも、中読んだらちゃんとわかる!嬉しい!

 

というような感じで読み始めました。

また、同じ時期にオンラインで大学の授業を学べる「Coursera」にkaggleの講座があると聞いて、たどり着いたのがこちら。

How to Win a Data Science Competition: Learn from Top Kagglers | Coursera

この講座、Kaggleに寄せた実践的な内容で、最終課題は実際にこのクラスの受講者が参加するコンペに提出するものになっています。聴講だけなら無料、課題の提出や修了証が欲しい方は月額課金(5600円ぐらい)が必要です。

ちなみに全編英語です。ロシア語訛り?初体験。英語字幕はつけられるので、英語教材頑張ってみようかなという方には大変おすすめです。

課題に挑戦する場合は、毎週締切があるので大変励みになります…。わー、最後までできるかな、がんばろ。

旅は続く

そんな訳で、KaggleのTitanicまでは

  • Sololearn:1ヶ月
  • (実務でPlotly+Pandasを1ヶ月ほどごりごり)
  • PyQ:2ヶ月ぐらい
  • Aidemy:1ヶ月
  • KaggleのTitanic:1日

こんな感じ。Courseraの今のコースがWeek5までで、10月末までに終わらせることができたら、と思っています。

 

(Coursera終わって、もう1コンペ取り組んでみたら、改めてまとめるかも。)