ブック・インサイド―『Python機械学習プログラミング』学び方ガイド

2016年6月30日(木)
福島 真太朗(ふくしま しんたろう)
本記事では、書籍『Python機械学習プログラミング』を読むために必要な知識、読み方等について説明します。
『Python Machine Learning』が2015年9月に米国などで発売。「機械学習の考え方」と「Pythonプログラミングによる実践」をバランスよく解説していると評価され、米国Amazon.comでベストセラー。その日本語訳はコラムや脚注、付録が追加され、2016年6月に発売されました。ここでは、本書のより効果的な活用法について監訳者が解説します。

『Python機械学習プログラミング』とは

書籍『Python機械学習プログラミング』は、Sebastian Raschka氏によるPythonを用いた機械学習の入門書"Python Machine Learning"の翻訳書です。著者はミシガン州立大学の博士課程で生物統計学(計算生物学)の研究を行っており、scikit-learnなど多数の機械学習やデータサイエンスのライブラリの開発にも携わっています。

本書の特徴は、Pythonによる実装、ライブラリの使用方法、機械学習の考え方の説明をバランスよく織り交ぜ、機械学習の登山口から実務で使用できるレベルまで連れて行ってくれる点にあります。以降では、本書を通してより効果的に機械学習を学べるように、必要な前提知識、本書の構成と読み方のプラン等について説明します。

なお、著者はデータ解析に用いる言語についてエッセイを執筆しており、言語間に優劣はないとしながらも著者にとってはPythonがベストだったと説明しています。読み物として面白いので、お時間のあるときに一読されるとよいのではないかと思います。

■著者によるエッセイ
◎Python, Machine Learning, and Language Wars. A Highly Subjective Point of View
http://sebastianraschka.com/blog/2015/why-python.html

◎和訳版: Pythonや機械学習、そして言語の競争について – 極めて主観的な見地から
http://postd.cc/python-machine-learning-and-language-wars-a-highly-subjective-point-of-view/

本書の前提知識

本書を読むのに必要な基礎知識は、Pythonの基礎的な文法、データ解析ライブラリの基本的な使用方法、数学の基礎(微積分、線形代数)の3つです。

Pythonの基礎的な文法

Pythonの文法については、リスト、タプル、ディクショナリなどの基本的なデータ構造、forループ、print関数、zip関数、enumerate関数、関数やクラスの作成方法などが理解できていれば十分です。例えば以下の書籍の該当箇所を読んでおくとよいでしょう。

■『みんなのPython 第3版』(ソフトバンククリエイティブ、2012年)

データ解析ライブラリの基本的な使用方法

本書の複数箇所で使用されているPythonのデータ解析ライブラリは、主にNumPy/SciPy、pandas、matplotlib、seaborn、scikit-learnです。これらをタスクで大別すると表1のようになります。

表1:本書で使用するライブラリとそのタスク
表1:本書で使用するライブラリとそのタスク

これらのライブラリのうち、SciPy、pandas、seabornは使用する機能が多くなく、該当箇所で丁寧に説明されています。そのため、前提知識はほとんど必要ないと思います。また、scikit-learnも丁寧な説明があるので、予備知識は特に不要でしょう。

残りのNumPy、matplotlibについては多少の知識が必要です。matplotlibの基本的な使用方法は付録Bに追加していますので、必要があれば参照してください。NumPyについては、知識があまりなくても通読できるようになっていますが、以下の資料等を読んであらかじめ知識をつけておくと理解が深まるでしょう。

◎朱鷺の杜Wiki「Numpyの概要」
http://ibisforest.org/index.php?python%2Fnumpy#q38168ab

◎機械学習のPythonとの出会い
http://www.kamishima.net/mlmpyja/

なお、NumPy/SciPy、matplotlib、scikit-learnの導入的な説明は以下の書籍がまとまっています。一読しておくと本書の理解が深まると思います。

■『データサイエンティスト養成読本 機械学習入門編 (Software Design plus)』(技術評論社、2015年)
第II部 特集2 Pythonによる機械学習入門

この書籍は機械学習の入門に適しているので、他の章も合わせてお読みください。
以下の書籍は、NumPy/SciPy、pandas、matplotlibについて詳しく説明しています。

■『Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理』(オライリー・ジャパン、2013年)

数学の基礎

数学の基礎知識として、微積分と線形代数が必要になります。

微積分については偏微分や連鎖律、ヤコビ行列等の知識が必要になります。以下の書籍等で学習するとよいと思います。

■『キーポイント微分積分 (理工系数学のキーポイント 1))』(岩波書店、1996年)
■『キーポイント多変数の微分積分 (理工系数学のキーポイント (7))』(岩波書店、1996年)

線形代数については、行列の積、逆行列、固有値と固有ベクトル(固有分解または固有値分解)などの知識が必要になります。本書内でも挙げましたが、以下の書籍がまとまっていてわかりやすいので一読をお勧めします。

■『プログラミングのための線形代数』(オーム社、2004年)

本書を読み進めるうえでは、以下の箇所を読めば十分です。

第0章 動機
第1章 ベクトル・行列・行列式
第2章 ランク・逆行列・一次方程式
第4章 固有値・対角化・Jordan標準形
「4.5 固有値・固有ベクトル」まで

また、行列の積、固有値と固有ベクトル(固有分解)については導入的な内容になりますが、それぞれ本書の2章、付録Cに説明があるので適宜参照して下さい。

著者
福島 真太朗(ふくしま しんたろう)
1981年生まれ。株式会社トヨタIT開発センターのリサーチャー。2004年に東京大学理学部物理学科卒業。2006年東京大学大学院新領域創成科学研究科修士課程修了。専攻は物理学・応用数学。

連載バックナンバー

開発言語書籍・書評

ブック・インサイド『Python機械学習プログラミング』―単純な例でADALINEのイメージをつかむ

2016/9/16
今回も前回に引き続き、書籍『Python機械学習プログラミング』の2章の内容についてより分かりやすく理解するためのヒントを解説していきます。今回は、ADALINEのイメージがつかめるように、ADALINEのシンプルな例を取り上げます。
開発言語書籍・書評

ブック・インサイド『Python機械学習プログラミング』―パーセプトロンを読み解く

2016/8/8
前回は、書籍『Python機械学習プログラミング』を読むために必要な知識、読み方等について説明しました。今回は、2章の内容についてより分かりやすく理解するためのヒントを解説していきます。
開発言語書籍・書評

ブック・インサイド―『Python機械学習プログラミング』学び方ガイド

2016/6/30
本記事では、書籍『Python機械学習プログラミング』を読むために必要な知識、読み方等について説明します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています