2018.10.13 Sat |

Pythonでの機械学習の勉強方法

この記事は鈴木瑞人が執筆します。
最近データサイエンスや機械学習を学びたいが何から学べばよいかわからないという相談を多く受けるので、
それの答えについて書きたいと思います。

正直最終的に何をやりたいのか、どのレベルを求めるのかで答えは変わってきますが、
一般的な、最低限のPythonプログラミング、データサイエンス、DeepLearningを学ぶのであれば、以下が最短の学習方法かと思います。

1, みんなのPython 第4版 柴田 淳 (著)
https://www.amazon.co.jp/%E3%81%BF%E3%82%93%E3%81%AA%E3%81%AEPython-%E7%AC%AC4%E7%89%88-%E6%9F%B4%E7%94%B0-%E6%B7%B3/dp/479738946X

4, 5年以上前からあるPythonの入門書です。
版を重ねるごとに、内容は充実し続け、今ではかなり網羅性が高くなり、よく質問がでるところに関して、解説が親切になっています。
個人的には、どんな言語でも、基礎は数冊やったほうが良いと思いますが、もし一冊だけと言われたらこれを指定します。
あと一冊薦めるとしたら、
実践力を身につける Pythonの教科書 クジラ飛行机(著)です。
二冊こなすことで、重要なところとそうでないところがわかると思います。

2, Pythonによるデータ分析入門 第2版―NumPy、pandasを使ったデータ処理 Wes McKinney(著)
https://www.oreilly.co.jp/books/9784873118451/

Pythonにおけるデータサイエンスで非常によく使う、Pandasライブラリの作者が書いた本です。
Pandasだけでなく、Numpyについても詳しく書いてあります。
Pythonでのデータサイエンスは、PandasとNumpyをメインで使います。しかし、この二つのライブラリを集中的に扱った書籍はほとんどありません。Pythonでのデータサイエンスを学ぶ上で必須の本と言えるでしょう。

ただ、量は非常に多く、あまり使わない事柄も多々あり、実務を意識した学習を素人が行うのは難しい気もします。
僕は、データサイエンスの基礎が一通り身についてからこの本を読んだのですごく役に立ちましたが、Pythonしか知らない人にとって、「レベルが高い」「量が多い」「実際にどの知識をどういう場面で使えばよいか想像できない」という声はあるでしょう。
僕は、ぼくの後輩には、1ページ1ページ、どの部分を覚えればよいか、実際にどんな場面で使うか、を個別に教えています。

Python, Pandas, Numpyでよく使うところに関しては、Udemyでまとめて講義動画にしています。
ゼロからはじめるR言語とPython言語でのデータ集計・可視化・多変量解析・機械学習・テキスト解析
https://www.udemy.com/r-data-visualization/
学生さんとリツアンの社員の方には無料でアカウントを配布しているので、
必要な方いましたら、machine.learning.r@gmail.com までご連絡ください。

PandasとNumpyに関しては、上記「Pythonによるデータ分析入門 第2版」に並ぶ本はないので、二冊目はご紹介できません。
あとは、公式ドキュメントを見るか、DataCampやCoursera、edXで学ぶくらいかなと思います。

PandasとNumpyを学び終わったら、次はDeepLearningに行ってしまってよいと思います。

3,ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装  斎藤 康毅(著)
https://www.oreilly.co.jp/books/9784873117584/

Stanford大学で、cs231n(http://cs231n.stanford.edu/)という素晴らしいdeeplearningの講義がありますが、その内容をわかりやすくかみ砕いて、説明を大幅に加筆した本です。
Pythonでの実装が書いてありますが、Pythonコードや、難しい数式は、飛ばし読みしてよく(最低限を目指すなら)、とりあえず、40%くらいの理解度で、全体をさらってもらえば結構です。

英語を読めて聞ける人は、この後に、Stanford231nの2017年度の講義を聞くとよいでしょう。
slideも講義動画もアップロードされています。2018年度からは、講義動画がアップロードされなくなりました。
http://cs231n.stanford.edu/2017/syllabus.html

4, PythonとKerasによるディープラーニング Francois Chollet(著)
https://book.mynavi.jp/ec/products/detail/id=90124

deeplearningのフレームワークtensoflowのwrapperである、kerasの作者が書いた本です。
現状、よく使うdeeplearningの大部分がkerasで書けます。
日本国内で有名なデータサイエンス企業の株式会社ブレインパッドでも、基本的にはkerasで書いているそうです。
この本では、単にkerasの基礎から応用までを解説するだけでなく、DeepLearningは、世間で言われているほど、ブラックボックスではないと、具体例を用いて示しています。
Francois Cholletは、非常に頭がよく、彼のTwitterでは日々有用なつぶやきを見ることができます。

5, 現場で使える!TensorFlow開発入門 Kerasによる深層学習モデル構築手法 太田満久,須藤広大,黒澤匠雅,小田大輔 (著)
https://www.shoeisha.co.jp/book/detail/9784798154121

国内で有名なデータサイエンス企業である、株式会社ブレインパッドのメンバーにより書かれた本です。
主にkerasを用いて、様々なdeeplearningのモデルを記述しています。
上記Francois Cholletで学んだことの上に、積み重なる知識を得られるかと思います。
本の題名にある通り、「現場で使える」実践的な知識が得られます。

知識的には、上記で最低限かなと思います。

ただ、実際にビジネスをするとか、新しい論文を読めるようにする、研究をする、といった場合、上記本では足りません。

例えば、ビジネスをすることを考えた場合、
「DeepLearningを用いたレコメンドシステムの作り方」や「マッチングエンジンの作り方」などを記述している本は一冊もありません。基本的にお金になるものは本には書かれません。
ネットでも、みんな書きません。ライブラリとしても公開されていません。
基礎を網羅的に学んだうえで、自分で何と何を組み合わせれば、目的のものができるか、発想し、発明する必要があります。

また、機械学習のコードをクラウド上に実装するとき、現状のPythonコードをどう分割し、数ある機械学習コンポーネントの中でどれに実装し、どうつなげて、それぞれをどういう順番で実行させるかについては、そもそも日本で知っている人が本当に数少ない状態(2018年10月13日現在)で、ドキュメントがほぼないということも多々あります。

多くの企業は、実験的に機械学習ソリューションを取り入れようとしていますが、成果を上げたものが少なく(Proof of Conceptで終わる)、実運用にまで到達した事例が少なく、機械学習のコードをクラウド実装した例があまりありなく、したがってその経験を積んだ人も数少ないです。

新しい論文を読めるようにするには、かなり幅広く、深い知識が必要になります。
パターン認識と機械学習 上下 C.M. ビショップ(著)など
https://www.amazon.co.jp/%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E8%AA%8D%E8%AD%98%E3%81%A8%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E4%B8%8A-C-M-%E3%83%93%E3%82%B7%E3%83%A7%E3%83%83%E3%83%97/dp/4621061224

研究で使えるようにするには、もっと深いところまで理解する必要があります。

大変ですが、機械学習が、将来明るい技術であることは間違いないので、勉強に時間を割くことは賢明な判断かと思います。

今日はここまで。

鈴木瑞人
株式会社パッパーレ
東京大学大学院新領域創成科学研究科 メディカル情報生命専攻 博士課程
NPO法人Bizjapan テクノロジー部門 BizXチームリーダー

entry! page top