Photo by Borja Calvo
こんにちは。谷口です。
最近「機械学習に興味がある」「いつかやろうと思ってるんだよね……」と言うエンジニアの方をよく目にします。また、その倍ぐらい「機械学習難しすぎて挫折した」という方も見ます。
弊社のITエンジニアにも機械学習を勉強中という人がいますが、特に最初は難しすぎて何から手を付けたらいいのかよく分からず、とても悩んだと言っていました。そこで同じような悩みを抱えている方の参考になればと思い、初心者の頃に参考になった機械学習入門者の方に役立ちそうな記事やスライドを聞いてきました。
また、Pythonには機械学習のためにデータを処理するライブラリ(数値演算をするためのライブラリや図を作成するためのライブラリなど……)がそろっていて、呼び出したり組み合わせて処理したり……といったことがしやすいため、多くの人が機械学習で使っています。コードも短くて読みやすいですし。(※Pythonはバージョン2系と3系があり、3系には後方互換性がない変更が入れられていますので「実務でPythonを使うことになった/なりそう」という方は、確認してから学習を始められるとよいかと思います。)
というわけで今回は、機械学習とPythonプログラミングに入門するときになるべくとっつきやすくて役に立つコンテンツ、そして機械学習によく使われているPythonライブラリを20件ご紹介していきます。
■機械学習入門
◆1.機械学習をこれから始める人に押さえておいてほしいこと
http://qiita.com/IshitaTakeshi/items/4607d9f729babd273960
「趣味で機械学習に手を出してみたい」という方に向けて、まずは丁寧なアドバイスや考え方が書かれている記事です。「やってみたいんだよな~」という方は、入門前にこういった記事を読んでみてはいかがでしょうか。
◆2.Machine Learning Advent Calendar 2015
http://qiita.com/advent-calendar/2015/machinelearning
今年の機械学習のアドベントカレンダーです!2013年から続けられているので、以前のものを読んでみるのもよいかと思いますし、「いつかやろう……」と思っていた方は気持ちを新たに今年更新される記事を読んでみるのもよいかと思います。
◆3.機械学習チュートリアル
www.slideshare.net
「入門したいけどまだ入口すら見えない……」「数学に明るくない自分でもできるかな……」という方向けに、機械学習の概要が丁寧に説明されたスライドです。こちらは本当に「分かっている人」が「まだ分からない人」のために噛み砕いて説明している……という感じでありがたいです。
◆4.機械学習入門以前
www.slideshare.net
個人的にこのスライドとても好きです……。こちらも「入門すら難しい、入門以前の超入門編をくれ」というような我々向けのスライドです。機械学習の種類や体験の手順等についても触れられています。
◆5.機械学習の Python との出会い
http://www.kamishima.net/mlmpyja/
いろいろな機械学習の手法を、Pythonで実装しながら学ぶことができるチュートリアルサイトです。科学技術計算モジュール(NumPyやSciPy等)の使い方が具体的に勉強できます。PDF化もされていまして、本当に無料でいいのかな……と思ってしまいます。
どちらかというと既にPythonが使えて機械学習の初歩も多少は分かっている人向けなので、勉強してみて「そろそろ入門者向けは脱出できるかな」というレベルに来た方におすすめです。
◆6.CourseraのMachine Learningコース
https://www.coursera.org/learn/machine-learning
Courseraというオンライン講座でスタンフォード大学の先生によるMachine Learningコースが受講できます。もちろん英語なのですが、無料で受講できる上、機械学習初心者の方にも好評です。英語OK!という方はぜひ!!
■Pythonプログラミングが学べるコンテンツ
◆8.Python公式ドキュメント(日本語訳)
料金:無料
http://www.python.jp/
Python公式ドキュメントを、有志の方々が順次日本語に翻訳してくださっています。これはありがたいですね、
環境構築の段階から、各OSごとにしっかりした解説があります。「いきなり公式ドキュメントなんて、ハードルが高そう」と思われるかもしれませんが、pythonのチュートリアルはかなり親切です。
Python のセットアップと利用 — Python 3.4.3 ドキュメント
◆9.Python公式ドキュメント(本家)
料金:無料
https://www.python.org/
先にご紹介したのは有志の方々による日本語訳ですが、こちらはその原文、本家の公式ドキュメントです。翻訳される前の最新情報等も見ることができますので、英語がOKな方はこちらからご覧になってもよいかと思います。
◆10.ドットインストール
【Python2系】
料金:無料(プレミアム会員は月額880円)
http://dotinstall.com
動画でPythonプログラムの書き方や実行環境の作り方等が学べるドットインストールです。実際に独学でプログラミングを始めたという人の中には、とりあえずドットインストールから学習を始めたという方も多いです。「Python2系を学びたい」という方は、一度ドットインストールの動画を見てみてはいかがでしょうか。
◆11.Think Python
【Python2系】(3系の補足もあり)
料金:無料
http://manga.crocro.com/?cat=java&pg=index
英語OKな方にはThink Pythonもお勧めです。O'Reillyから紙の書籍としても出版されており、Kindle版もあります。(残念ながら日本語版はありません)
◆12.paiza.IO
【Python2系・3系に対応】
料金:無料
https://paiza.io/
paiza.IOは、ブラウザ上でコードが書け、書いたコードをその場で実行出来るオンラインプログラム実行環境です。面倒な環境構築なしに、例えば本に載っていたコード、ネット上で他の人が公開していたコード等をオンラインで実行して結果を見ることができます。ブログパーツとして使えたり、GitHub(Gist)連携なんかもできますので、ぜひpaiza.IOでどんどんコードを書いてみてください!
詳しくはこちらの記事をごらんください。
◆13.paizaのスキルチェック問題
【Python2系】
料金:無料
http://paiza.jp
paizaでは、コーディングスキルをはかるコーディング問題の結果により、S・A・B・C・D・Eの6段階でランクが分かります。ぜひ問題を解いて、ランクアップを目指してみてください!プログラミング業務経験のない方でも、Dランクが取得できると、プログラミングの基礎的な概要は理解できているということになります。
■機械学習に役立つPythonライブラリ
機械学習に使えるPythonのライブラリはものすごくたくさんありますが、それぞれ実装している機能が異なり、向いている処理等も違いますので、やりたいことによって使い分ける必要があります。ここでは主なもの、開発が活発なものをいくつかご紹介しておきます。
◆14.scikit-learn
http://scikit-learn.org/stable/documentation.html
scikit-learnは分類や回帰、クラスタリングなどの機能が実装されており、機械学習における定番となっています。
◆15.Theano
http://www.deeplearning.net/software/theano/
Theanoはディープラーニングライブラリの決定版?と言われております。行列演算などを行う関数が実装されています。
◆16.TensorFlow
https://www.tensorflow.org/
TensorFlowは、2015年11月にオープンソース化されたGoogleの機械学習ライブラリです。
◆17.chainer
http://chainer.org/
chainerはニューラルネットワークを実装するためのライブラリです。日本人の方が中心となって開発されています。
◆18.PyML
http://pyml.sourceforge.net/
MLはMachineLearningの略です。SVM、再近傍法、リッジ回帰等が向いています。
◆19.Pylearn2
http://deeplearning.net/software/pylearn2/
機械学習向けライブラリのPylearn2は、画像の認識処理等が得意なライブラリです。
◆20.PyBrain
http://pybrain.org/
ニューラルネットワーク系に強いライブラリです。
■まとめ
機械学習を学ぶことは決して簡単なことではありませんが、例えばGoogleの情報検索やFacebookの友達かもしれない人を教えてくれる機能、Amazonの利用者が好きそうな商品を紹介してくれる機能は機械学習に基づいて作られています。自動車の自動運転などもそうですね。
今後も商業的システムにはますます機械学習が使われ、世の中をよりよくするためには必要不可欠な技術となっていくでしょう。そして、現時点では想像もつかないようなよりよいサービスが生まれていくことを期待しています。興味のわいた方はぜひ学んでみてください。
paizaではITエンジニアとしてのスキルレベル測定(9言語に対応)や、プログラミング問題による学習コンテンツ(paiza Learning)を提供(こちらは21言語に対応)しています。テストの結果によりS・A・B・C・D・Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。
また、paizaのオンラインでプログラミング学習ができるパイザ・ラーニングに、この度動画で学習できるレッスンが追加されました。動画を見たり補足テキストを読んだりしながら、自由にコーディングをして実行結果まで確認することができます!レッスンは今後どんどん追加されていく予定ですので、ぜひプログラミング学習に、教育に、お気軽にご活用いただければと思います!