データとエンジニアリングのよもやま話

データ活用が推進できるためのエンジニアリングに関するブログの筈..

No.18 Let's start Machine Learning with coursera.

実は、今年の3月上旬から5月下旬まで、courseraのML(Machine Learning;機械学習)のコースを受講していました。


元々は、こちら(↓)のブログに触発を受け、日本語訳の間違いをしようかな~的なノリで受講していたのですが、

南よ! 海の見える方! - Courseraの機械学習のコースに日本語字幕をつけました

内容がよくまとまっていたので、結局、最後まで受講していました!(笑)

コースの内容は以下の通りです。

https://www.coursera.org/course/ml

[概要]
○講師:Andrew Ng(スタンフォード大学)
○内容:機械学習(アルゴリズム、実装)
○言語:英語 *日本語等の訳あり(但し、クイズや演習は全て英語)
○期間:10週間

以前のMongoDB University受講時は、状況をレポートできなかったので、その反省を活かして(?)、
今回は、どういう内容なのか軽く紹介していきたいと思います。

受講形式は、週で決められたテーマに沿ったビデオ講義(講義途中にクイズ:quizあり)を受講し、
振返りの確認テスト(quizzes)、プログラミング演習(programming assignments)で構成されています。
1つのビデオ講義は、8~15分前後といった具合ですね。(15分を超過することもありましたが)

コースのレジュメは、だいたいこんな感じです。(本来は英語ですが、敢えて翻訳してます。)
ちなみに、第1、10週以外は、全てプログラミング演習がつきます!
○第1週
 ・イントロダクション
 ・1変数の線形回帰
○第2週
 ・多変数の線形回帰
 ・Octaveチュートリアル
○第3週
 ・ロジステッィク回帰
 ・正則化
○第4週
 ・ニューラルネットワーク(モデル説明)
○第5週
 ・ニューラルネットワーク(学習アルゴリズム;誤差逆伝播法)
○第6週
 ・機械学習の適用におけるアドバイス
 ・機械学習のシステムデザイン
○第7週
 ・サポートベクトルマシン
○第8週
 ・クラスタリング(非階層的クラスタリング;k-means)
 ・次元圧縮(PCA;主成分分析)
○第9週
 ・アノマリー検出(異常値検出)
 ・レコメンデーションシステム(協調フィルタリング)
○第10週
 ・大規模機械学習
 ・機械学習活用の事例

ちなみに、こちらのコースでのプログラミング演習では、言語は、Octave(MATLABのフリー版だったけ?)を推奨しています。他の言語(R、Python)でもOKだけどね、とは講義中に説明がありますが、
課題提出は、Octaveスクリプトを提出することになります。
# 修了証取得まで目指す方は、Octaveで課題を実施することになります。

さて、こちらのコースを受講する利点は何でしょうか?
機械学習(教師有り/無し)について、網羅的に基礎を学べる。(かなりカバーしているかと)
・各週には、プログラミング演習があるので、実際にモデルを実装して動きを確かめられる。
 [自分で行列演算を書いてみるので、良い勉強になります。←行列の復習にもなります。笑]
機械学習の学習アルゴリズムだけではなく、実際に適用する際のアドバイスもあり!(第6週)
 [自分が思うような結果が出なかったらどうすべきか?のレクチャーは、実際に取組む時の指標となるかと思います。]

少し残念かな、と思う点としては、、
・後半の教師無し学習は、前半の教師有り学習よりもコンテンツが薄く感じる..
・決定木のコンテンツも欲しかったな..
・Random forestも欲しかったな~[無いものねだり。笑]
機械学習のライブラリ/フレームワークの説明がもう少しあったら良かったかな..

とは言え、初心者から中級者まで学べるコースとなっているので、おススメです!
なにより、ビデオ講義の日本語訳の語調が色々あって、面白かったり。笑
←← そこは本題じゃないですが。。

今後は、折角なので、学んだ知識をもとに、他の言語での機械学習の実装なども書いていけたらなーと思っています。