Student-Business

プログラミング・フィリピン留学・海外旅行など自分の体験を記事にしています

プログラミング

Pythonで機械学習するための本・参考書と勉強方法など独学した手順でまとめ(随時更新)

2017/05/22

black-and-white-man-person-hands

Pythonでデータ解析をする際にやはり必要となってくる機械学習ですが、自分で学ぼうとなると情報の波に溺れ、かつ学習記録なんてものはあまりないので、途方にくれる方が多いことかと思われます。

ですので、この記事では、完全素人の僕がやった勉強の手順を一から、使った参考書・サービスとともに紹介していこうかと思います。

今現在は時間が取れず、ボリュームのある記事にはなっていませんが、今まで書いてきたPython関連の勉強法記事のようにしていこうと思います。

参考ド素人学生がPython独学!上達の軌跡・参考書を詳しくまとめてみた。

参考Pythonでデータ分析入門のための本・参考書を独学した僕がまとめてみた

はじめに

初期スペック

この記事にあるような勉強を始める前に、僕がどれくらい機械学習について知っていたか気になる方も多いでしょう。

しかし、機械学習に関して言えば、残念ながら「Pythonでデータ分析入門のための本・参考書を独学した僕がまとめてみた」で書いたように、Udemyの「Python&データサイエンスオンライン講座」の機械学習の章で、たまたま得たような基礎的な知識しかありませんでした。

記事を読む前に

 

Pythonやデータ分析に使われるライブラリーを使った事がない方は、まずは簡単に勉強をしてから、以下の記事を読んでいただいた方がいいかもしれないです。また、機械学習の勉強はかなり広範囲に渡るので、一朝一夕で身につくものでは決してありませんので、その覚悟も必要です。

 

学習手順

Udemyの一押し講座で学習をスタート

データ分析を勉強しようとした際に、Udemyの講座と出会い活用するようになりました。動画講座ではやはり、コードが打たれて実行結果が出てくる過程が一から十まで見て学習できるのが強みです。

講義の質が高すぎてウハウハなので、実は誰にも教えたくないのだけど、Udemyで日本語で提供している講座なら、これ一選。

講座の内容に関して

この講座では、広島大学准教授の方が解説してくれます。本だと言及されてないところも、簡単にですが説明してくれているのが、助かりました。

コースの目標は、「機械学習でデータを識別するための一連の流れ(データの準備・前処理・識別器・評価など)を理解すること」だそうです。

そして、9時間に及ぶ動画で「機械学習における識別(分類・認識)の基礎」をPythonを使って学習できます。

注意点は、機械学習ライブラリscikit-learnを用いての解説となるのが、Numpy, Pandas, Matplotlibなどの知識も必須だということ。あとは、主成分分析とかは必要に応じてググって、イメージをつかむ程度のことは必要。

有料になってしまいますが、「9時間の機械学習のオンライン講座(識別に関して)と同等なもの(講師に教わる・有料セミナーなど)を得ようとしたら、数万は越すだろうことを考えると格安。大学教授の解説講義が、この質でこの値段はかなり安いですよね。放送大学でも塾だとしても、一通りの講義を受けようとなると高くてとてもじゃないけど僕はお金を出せません。

Pythonで機械学習:scikit-learnで学ぶ識別入門」のリンク先でレビューを見れますが、評価も高いです。良い情報は金を出してでも買って自己投資にする時代、そしてそれを容易に実現できるサービスがあるのはやはり素晴らしいですね。

勉強の指針

機械学習/sckit-learn.orgより

機械学習ガイド/sckit-learn.orgより

広範囲に渡る機械学習をどうやって学んでいけばいいか、その指針を上の講義を受けた後に決めました。

で、とりあえずはこのチートシート(大きい画像はこちら)の緑色の四角で囲われたものに関して学ぼうと決定。というのも、上記の講義で「識別するための一連の流れ」に関しての知識は固まったのですが、識別器に関しては特に勉強しないといけないとわかったからです。

学習の際には、自分が学習した知識が、どういった場面で使われるのかなど、意識すると体系的にやはり理解しやすかったです(まだ全然終わってないですが・・・)。

なので、基本的には、

  1. まずは、コードを実行しながら感覚的に理解してみて、
  2. この知識はむずいなとなったら、
  3. 理論書読みながら、実践的な本+誰かのコードをやる。

といった流れでやっています。

おすすめ 勉強効率を高める便利な文房具などを紹介!暗記に役立つ!

ちなみに、運動すると勉強がすごく捗る!

おすすめ運動だけで、集中力倍増!意識は高いけど勉強ができない人への最高のサプリ

機械学習の勉強

ともあれ、勉強初期段階は、知識が浅すぎて困りました。

機械学習のPRMLを当面の最終目標に設定して、やろうという方針はおそらく機械学習を勉強しようとする人に共通すると思われます。

ただ、初期段階がやはりわからなすぎる・・・。

まあ、おそらくこれは仕方ないことなのでしょう。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

(追記です)
Pythonでの機械学習の入門書的な本が実はなかったのですが、最近良さそうな本がオライリーから出版されました。上記で紹介したUdemyの講座とも相性がよく、次で紹介する「はじめてのパターン認識」とも範囲的にも被っていて今後の定番書籍になりそうです。

1冊目 はじめてのパターン認識

機械学習をはじめて学習する人は必ずこの本から入って欲しいです。定番の入門書籍なのは他のブログ等を見てもわかると思いますが、内容も明瞭で平易です。そのため、確固たる基礎を作るのに役立ってくれます。

筆舌に尽くしがたいのですが(説明が得意ではないので)、僕はこれ以外の本で機械学習に入門するのは危険だと考えていて、全くお勧めできません。これは、内容が少しずれている入門書、難易度が高い本、数式ばかりで展開されて行く本などにあたりやすいからです。

しかし、この本で勉強していただければ、最初の一冊は間違いありません。きちんと、次のステップの本に繋がります。

※身近に機械学習を独学した人がいれば、その人も9割がた持っていると思うので確認して見てください。

2冊目 わかりやすいパターン認識

いろいろググって次にたどり着いた本がこれ、「わかりやすいパターン認識」です。(わかパタ)

PRMLはむずくて挫折したけど、この本からやったらできたという人がいたので、なら遠回りだけどこれをやろうということで購入しました。

初心者にもわかりやすい入門書とのことなのですが、「大学初年度の線形代数は理解していて、統計の勉強でよく出てくる数式展開も最低限できなくては読めない」というのが第一印象。

例えば、「〜の張る〜次元の空間」などは、線形代数の知識が無くても想像はできるが、あれば理解が違う。(超平面とかいう言葉も序盤よく出てくるが、ググる程度で理解できる。)加えて、大したことではないですが、偏微分や∇(ナブラ演算子)とかは最低限知っておくべきかも。レビューで、低評価の人はおそらくここで躓いてる。

数学については、詳しくは書かないが「プログラミングのための線形代数」で線形代数は大まかな勉強をするといい。(サンプルコードはRuby)

僕は、この記事「Pythonでデータ分析入門のための本・参考書を独学した僕がまとめてみた」に書いた通り、最低限の統計の本をやり、その際に少し数学もやった。その上でいうなら、この本「わかりやすいパターン認識」はかなり親切です。読者がついて来られるようにもしていると思う。

ただ、この本で、確率的降下法やベイズ関連の導入部がすんなり吸収できたのは、「Pythonで機械学習:scikit-learnで学ぶ識別入門」、「ベイズ推定とグラフィカルモデル1(こっちは無料)」でイメージできたのが一助になっている。特に無料の「ベイズ推定とグラフィカルモデル1」は学習の定番になるかもしれない。

しかしながら、多くの人にとって、この本は「機械学習を勉強したいなら超えなくてはいけない最初の壁」になるでしょう。教科書ということを考えれば確かに入門書ですし、上記の知識があればパターン認識理論をしっかり学ぶことができますが、結構むずかしいだからです。

本当に勉強というものは大変ですが、「おそらくこの第一関門を越える努力ができるかが、量産型エンジニアとそうでない者を分ける要因になるのでは?」と思い馳せながら頑張ってみてください。。SlideShareで輪読や勉強会をされた方が、スライドを共有してくれているので、ぜひ参考に。

Udemyの「Pythonで機械学習:scikit-learnで学ぶ識別入門」終えてる人で、簡単な統計本読めるくらいの数学の知識あるなら、4冊目の「Python機械学習プログラミング 達人データサイエンティストによる理論と実践」が実用的でなので先にやるのもありです。

追記:4冊目の「言語処理のための機械学習入門」や、「はじめてのパターン認識」の方が、わかパタより難易度的に先。

3冊目 続・わかりやすいパターン認識

先ほどの続編の「続・わかりやすいパターン認識」という本を、2冊目というか上記本と同時期に買いました。厚さが上の本の2倍になっていっているのですが、文字の間隔を広げて見やすくしたり、解説を分かりやすくしていたためでした。

この調子で「わかりやすいパターン認識」も大幅に改訂してくれたらいいのに・・・。

Udemyで無料で公開されている「ベイズ推定とグラフィカルモデル1」という講座と並列してやると最強に理解がはかどります。

4冊目 言語処理のための機械学習入門

これも機械学習の入門書の定番にもなりそうな本。絶対にこれを1・2冊目にやるべきだったが、後悔先に立たず。

5冊目 Python機械学習プログラミング

機械学習を学んだのち、深層学習のさわりまでをPythonで実装しながら学べる本。米国の機械学習関連ランキング1位の本が翻訳されたものなので、内容的は申し分ない。

コードもがっつり掲載されて実装にもかなり役立ちそう。9章では、映画レビュー分類をFlask使って実装したり、表紙にて理論と実践が絶妙と謳うだけはある。

ただこの本、中級者向けらしいので、先に何かしらの入門書をやっておくという選択肢も一考の余地あり。

はじめてのパターン認識」(読んでない)、言語処理のための機械学習入門などのよく読まれる理論本か、Amazonのよく一緒に購入されるものに掲載されていた「ITエンジニアのための機械学習理論入門」(読んでない)が良さげです。

ちなみに、ここまで来て「わかりやすいパターン認識」、「続・わかりやすいパターン認識」が難易度的には比較的高いものだったと気付かされる。あと、機械学習むずかしい・・・

読み物・動画まとめ

機械学習関連の良さげな資料を、自分用にまとめておく。

▼この人は、機械学習、Django、その他のチュートリアルもある

Pythonで機械学習:scikit-learnで学ぶ識別入門の人が作っておいてくれた再生リスト

 

▼まだやってないが、素晴らしいらしい

https://simons.berkeley.edu/workshops/schedule/316

http://videolectures.net/mlss2012_lapalma/

http://videolectures.net/mlss2011_bordeaux/

Python Scientific Lecture Notes — Scipy lecture notes

プログラマーのための確率プログラミングとベイズ推定

深層学習の勉強

機械学習の一分野なれど、深層学習は分けて書いておきます

タイトル通りディープラーニングの本です。

ちなみにこの本、恐ろしい勢いで売れている。そして友人から、「読んだ方なら絶賛する、まぎれもない良書!」との異様に熱の入った解説に折れて購入。

結果としては、「理論だけでもなくコードだけでもない、絶妙なバランス配分で書かれているだけでなく、図解もすんなりと腑に落ちる感じ」という、まさに求めていた本がこれだったので満足でした。

この本くらいまでやると、実務で必要な知識や今後やるべき勉強に関して、だいぶ見えてくることかと思います。僕自身も、このような勉強過程を得て、速習でしたがかなり豊富な知識を得ることができました。

大学2年以下のレベルの線型代数,微分積分や確率・統計が要求されるが、初学者でも読みやすいので上記の本と並列が望ましい本。 厚い本ではないので、実装するにはこれだけでは足りないですが、浅くも深くもない程度の知識をすぐに学習するのに役立ちます。このシリーズの本は、適宜読んでいきたい。

おわりに

もっと書いてきたい本や学習手順などが色々あるのですが、ひとまず手元にある本を片付けてから記事を書きたいので、更新まで少々お待ち下さい。

追記:記事の更新が全然できていなくて、申し訳ありません。Ruby on Railsの勉強を始めて記事を書いているのと、自然言語処理に興味が向いているのと(勉強してはいない)、専攻が全く違うために時間が足りていません。Ruby on Railsはチュートリアルを独学でやって挫折した経験があり、悔しくてリトライ中です。他の方が挫折しないためにも、最優先で記事を書いています。

後々読みたいもの+復習するもの(購入してあるもの○)

▼「そもそも統計学も一から学ばなくちゃ!」という方は、一から詳しく勉強方法を書きましたので参考にして見てください。

入門・基礎レベルから統計学を学べて成長できる本・参考書・サイトとやり方を完全紹介!|数学が苦手な初心者にもおすすめな勉強方法

-プログラミング

おすすめ記事

giftcard 1
Amazonのギフトカードが格安で買えるサービスが発足!密林での買い物がよりお得に!

最近始まったギフトカードの個人間取引ができるサービス「ギフル」ってご存知ですか? ...

71-iFIHKV6L._SL1500_ 2
【Aukey PL-WD06】スマートフォン用カメラレンズなら旅行で風景写真が綺麗にとれる!

いい写真を撮りたくて、一眼レフやコンデジを買いたいと思う方は多いでしょう。しかし ...

StockSnap / Pixabay 3
【在宅ワーク】在宅で記事を書くライターになり1文字1円以上の収入を得る方法

最近、文章を書く力・文章構成力にオシャレさを見出してきました。 文章を書くのにも ...

2 4
初心者のためのWebデザイン独学の方法と参考書を現役エンジニアに聞いてみた

今回は、htmlとcssといったWebデザインに関してどうやって学べば良いかを、 ...