はじめに
こんにちは、教育業界に就職した新米データサイエンティストです。
入社して2ヶ月が経過し、今月が終われば試用期間も終了します。
新人研修プログラムを継続して進めています。
入社して間もない頃と比べると、段々と社内のキャッチアップも進み研修に割く時間は少なくなって来ていますが、1Q内でプログラムを完遂できるよう頑張ってます。
先週CouseraのMachine Learningコースを修了したのですが、このコースがいろんな方々がレビューされている通り、とてもわかりやすく素晴らしいコースだったので自分なりの思いをまとめておければと思い、この記事を書かせていただきます!
ざっとコース概要
- 講師:Andrew Ng (スタンフォード大学、機械学習関連で有名な先生らしい)
- 費用:無料(コース修了証の発行は8000円くらいかかる)
- 期間:11週間分(4~5[h/week] × 11 → 44~55h) プログラミング課題をどれだけ早く完了できるかで変動する
- コンテンツ:
- Week1:イントロ、単回帰、軽い線形代数
- Week2:重回帰、Octaveチュートリアル
- Week3:ロジスティック回帰、正則化
- Week4:ニューラルネットワーク(表現)
- Week5:ニューラルネットワーク(学習)
- Week6:機械学習モデルの改良方法、評価指標
- Week7:SVM
- Week8:クラスタリング、PCA
- Week9:異常検知、レコメンドシステム
- Week10:データが大きい場合の機械学習
- Week11:画像認識
各週映像授業 + ドキュメント(映像授業のサマリ) + 最後にクイズ、プログラミング課題という流れで進んで行きました。
自分の場合は就業時間の3時間程を研修時間に回しているので、修了までに約一ヶ月程要しました。(時間のある学生の方ならもっと早く終わらせられると思います。)
とにかく良かった
良かったポイントを3つまとめました。
・敷居が低く設定されている
この講座を受ける前は機械学習の講座ということで、数学の知識が必要だったり、プログラミング課題があったりと敷居が高い印象を持っていて、研修プログラムの中でも中盤に配置していましたが、実際そんなに敷居は高くありませんでした。
必要な前提知識はほとんどなく、使用する知識は講座内カバーされています。使用する言語がOctaveという言語で自分にとってもあまり馴染みはありませんでしたが、プログラミング課題の導入がかなり丁寧にされていて、ほとんどドキュメントで調べることなく課題も終わらせることができました。
講座内でも先生自身が、「ここから先の詳細な数学にはこの講座で踏み込む気はない」などとカバー範囲を明確にされていて、気を張らずに学べました。
さらに、日本語の字幕があったり、映像授業の後にまとめのドキュメントを見ることができたので、動画で理解できなかった部分も動画を見返すことなく理解でき、効率的に学習を進めることができたと思います。英語の聞き取りが得意でない僕のような人でも学びやすかったです。
・実装しながら中身を理解できる
各週の最後にプログラミング課題が配置されていて、その週に学んだことをOctaveで実装する内容のものが出題されます。
自分はpythonをかじった程度のプログラミングスキルだったので、全然違う言語でついていけるのか不安でしたが、講座内での導入が丁寧にされていて、挫折することなく終了できました。
また、実際に出題されるのは目的関数の実装とか勾配の算出とかを一部埋めるという感じなのですが、簡単にでも自分でコードを書いて実装することで、どのようにモデルが動いているのか理解する助けになりました。
あらかじめ書いてあるコードで、学習が進むにしたがって線形回帰が最適なものに落ち着く様子などが可視化されるので、上手く行った時は「おおー」となります。(コードが間違っていると、トンチンカンな回帰直線が引かれたりして、学習が上手く行っていないとどうなるのかという例も学べましたw)
・王道的なコンテンツが詰め込まれている
ランダムフォレストは取り上げられていませんでしたが、ロジスティック回帰やK-means, PCAなどの分類、クラスタリング、次元削減などの1つのカテゴリで最も主要なものを学べるような構成になっていたと思います。(講座内で先生がよく「シリコンバレーで最も使われているアルゴリズム」みたいなことを言っていて、やる気が出る)
さらに、この講座の冒頭でも述べられているのですが「道具を教えるのではなく、道具の使い方を教えることにフォーカスする」ということで、そのアルゴリズムがどのようん場面で用いられているのかであったり、どうやってモデルを改良していけば良いのかという部分に関してもかなり詳しく取り上げられていた印象を受けました。
例えば、学習曲線を描いてそのモデルに足りないのは特徴量なのか、学習データなのか問題を特定するという内容や、偏ったデータに対しては正解率ではなく、再現率やF1値で見る必要があるという内容はとても参考になり、今後の実務に活用できるなと思いました。
終わりに
必要とする前提知識がほとんどなく、王道的な機械学習アルゴリズム(ロジスティック回帰、K-meansとか)を学べ、実装しながらその動き方を理解できる、機械学習を学ぶ上でここをスタートにして良かったと思える講座でした!
今の所、自分のできる範囲としてSQL集計ベースの分析が多いですが、今後学んだ機械学習の知識も業務にフィードバックしていきたいです。
先週からGCPの講座に入り、研修も終盤に差し掛かっています。完遂できるよう今後も頑張ります。