MacでPythonの機械学習環境構築(2014年5月版)
この記事は古くなっています。
最新版の記事はこちらになります。
MacでPythonの機械学習環境構築(2015年2月版) - old school magic
概要
MacでPythonの管理と環境構築の備忘録です。
色々試してみて今の形に落ち着いたのですが、コロコロ変わりそうな気もするので日付をつけときます。
簡単にまとめるとこんな感じです。
前回はこんな感じだったのでだいぶ変わりました。
前準備
バージョン管理システムはhomebrewを用います。
ソフトウェアをまとめて管理(インストールやアップデート、削除等)するためのソフトです。
homebrewについては次の解説が参考になります。
- 公式
Homebrew — The missing package manager for OS X
- インストール、使い方
MacOSX - パッケージ管理システム Homebrew - Qiita
# homebrewのインストール ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Pythonの導入・管理
pyenvを用います。
yyuu/pyenv · GitHub
Pythonをバージョンごとに個別に管理するためのソフトです。
Pythonに関して言えば、一つのPythonをアップデートして使うより、バージョンごとにPythonの環境を構築したほうが良いと思います。*1
# pyenv のインストール brew install pyenv
pyenvを使う前に環境変数を設定してあげる必要があります。
.bash_profileに次のコマンドを書き足します。
# 環境変数の設定 export PATH="$HOME/.pyenv/shims:$PATH"
pyenvは様々なバージョンのPython(やサードパーティ)に対応しています。
次のコマンドでインストールできるPythonの種類を確認できます。
# pyenvでインストールできるPythonの確認 pyenv install -l
例えば、(2014年5月時点で)最新版のPython 3.4.0は、
pyenv install 3.4.0
でインストールできます。
デフォルトではユーザディレクトリの.pyenv以下にインストールされます。
機械学習ライブラリの構築
機械学習ライブラリとして、Anacondaを使います。
Anaconda Scientific Python Distribution
- numpy
- scipy
- matplotlib
- scikit-learn
あたりが定番なのですが、Anacondaはここらへんをひとまとめにしてインストールしてくれます。個別にインストールするよりすごい楽です。iPythonとか便利ツールもインストールしてくれます。
Anacondaはpyenvでインストールできます。
# Anacondaのインストール # 数百Mあるので結構時間かかります。10分くらい? # バージョンは適宜最新版に書き換えてください pyenv install anaconda-1.9.1
インストールしたらおまじない(再ハッシュ)しましょう。
pyenv rehash
pyenvでは使用するバージョンのPythonを選択できます。
先程インストールしたAnacondaに設定する場合は、
# 使用するPythonの選択 pyenv local anaconda-1.9.1 pyenv global anaconda-1.9.1
といった感じです。
ローカル環境とグローバル環境で使い分けられます。が、とりあえずは両方同じPythonに設定しておきます。
その他、pyenvでよく使うコマンドは
# 現在使ってるPythonの確認 pyenv version # インストールされてるPythonの確認 pyenv versions # Pythonのアンインストール pyenv uninstall
あたりです。詳しくはここに。
pyenv/COMMANDS.md at master · yyuu/pyenv · GitHub
AnacondaでインストールされるPythonは2系です。
3系を使いたい場合はここから一手間入ります。
# Anaconda自体のアップデート conda update conda # Python3なAnacondaのインストール conda create -n py33 python=3.3 anaconda # 現在のターミナルをPython3+Anacondaに設定 source ~/anaconda/bin/activate py33
py33というのは環境名というもので、好きな名前を付けても大丈夫です。
なお、このままだとAnaconda+Python3を使用したい時、毎回
source ~/anaconda/bin/activate py33
とコマンドを打たなければいけません。
解決策ですが、私はiPythonを使う派なので、こんな感じでエイリアスしました。*2
# ipython3 で Python3+Anaconda+iPythonを起動できるように設定 # .bash_profileに書き加えてあげてください alias ipython3="source ~/.pyenv/versions/anaconda-1.9.1/bin/activate py33; ipython"
参考
Python 3 support in Anaconda
AnacondaでPython3.3 - Qiita
これでPython3+機械学習環境が整いました。
余談
開発環境はSublime Text 3 + iPython (+ iTerm2)を使用してます。
*1:Pythonをアップデートするとpipでインストールしたソフトがまるまる死んで面倒なので。
*2:直接パスを通すという手もありますが、それだとpyenvで切り替えられなくなるので...
「パターン認識と機械学習」への遠回り 幕間 「統計を学ぶ際に心がけること」
統計学の目的の一つとして、「確率分布を推測する」というものがあります。
その確率分布を予測する方法として、最尤推定やベイズ推定などがあります。
統計を学んでいると、
と出てきます(それぞれ最尤推定法とベイズ推定の一種である変分ベイズ法)。
そんな時ふいに、
などと、迷ったり色々と勘違いしてしまうことがあると思います。*2
ですが、最尤推定とベイズ推定の比較は相当難しい話*3で、少なくとも統計学初学者がいきなりやれるような難易度ではないと思います。
個人的な意見ですが、分からないことがあった時、将来きっと分かると信じて勉強を進めていくのは大切な姿勢だと思います。
ですが、分からないことが勘違いの種にならないよう、用心しておいたほうがいいでしょう。
なので、最尤推定とベイズ推定の定義の違いをしっかりと理解し、どういった量を最適化しようとしているのか意識すれば、統計を学ぶ道中、とりあえず迷子にならずに済むのではないかと思います。
ちなみに、渡辺先生の本に、確率分布の推測方法やその精度の違いなどについて、詳しい説明が載っています。
- 作者: 渡辺澄夫
- 出版社/メーカー: コロナ社
- 発売日: 2012/03
- メディア: 単行本
- 購入: 1人 クリック: 4回
- この商品を含むブログ (2件) を見る
素晴らしい本なのですが、ものすごい難しいです(特に数学的な部分が)。3章くらいで一旦ギブアップしました。もうちょっと勉強が進んでからこの本に再挑戦したいと思います。
「パターン認識と機械学習」への遠回り その6 「図解・ベイズ統計「超」入門」
その1 フリーソフトで作る音声認識システム
その2 自然言語処理のための機械学習入門
その3 はじめてのパターン認識
その4 キーポイント線形代数
幕間 機械学習と統計学
その5 キーポイント確率・統計
図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術 (サイエンス・アイ新書)
- 作者: 涌井貞美
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2013/12/18
- メディア: 新書
- この商品を含むブログ (8件) を見る
統計学には大きく分けて二つの考え方があります。フィッシャー主義とラプラス主義です。
フィッシャー主義が前回学んだいわゆる「従来の統計学」で、ラプラス主義が「ベイズ統計学」にあたります。
どちらの考え方にも利点・欠点があり、問題に適した考え方を選ぶべきらしいです。つまり両方勉強しろってことですね。
ということで今回はベイズ統計学について勉強しようと思います。
良いところ
イラスト多めの会話形式で分かりやすいです。ノリが軽くて取っ付き易いです。
非常にコンパクトな本ですが、ベイズ統計の基礎となる考え方をしっかりカバーしていると感じました。
「従来の統計学とどう考え方が違うのか」という視点で説明が進みます。
(例えば「統計量ではなく確率や確率分布が前面に出てくる」とか)
章ごとにしっかりまとめたり、登場人物が学んだことを振り返って気になったところをピックアップしたりと細かいフォローもしっかりしています。
ベイズ統計学のイメージをしっかり掴めるので、この本を読んでからベイズ統計学の本格的な入門書に進むと読みやすいのでは、と思います。
悪いところ
しいてあげるなら説明が丁寧すぎて、ちょっと冗長に感じるところです。
追記
こういったノリの本が苦手という方には、同じ著者の次の本をオススメします。
- 作者: 涌井良幸,涌井貞美
- 出版社/メーカー: ナツメ社
- 発売日: 2012/02/21
- メディア: 単行本
- 購入: 19人 クリック: 40回
- この商品を含むブログを見る
言い換えると、上記の本はこちらの本に対してよくまとまっていると思います。
「パターン認識と機械学習」への遠回り その5 「キーポイント確率・統計」
その1 フリーソフトで作る音声認識システム
その2 自然言語処理のための機械学習入門
その3 はじめてのパターン認識
その4 キーポイント線形代数
幕間 機械学習と統計学
- 作者: 和達三樹,十河清
- 出版社/メーカー: 岩波書店
- 発売日: 1993/02/22
- メディア: 単行本
- 購入: 1人 クリック: 38回
- この商品を含むブログ (5件) を見る
読んだ動機
統計学を学ぶ理由は「幕間 機械学習と統計学」に書いた通りです。
この本を選んだ理由は、前回読んだキーポイント線形代数がとても良かったので、キーポイントシリーズを読んでみたくなったからです。
良いところ
確率・統計について、学ぶ意義や確率・統計の基礎、検定や確率過程といったことついて幅広くおさえています。
「キーポイント線形代数」と同じく図や例題が多く、イメージしやすかったです。
学ぶ上でのフローチャートや、数多い確率分布などを表で整理しているのが読む助けになりました。
やはりキーポイントシリーズは良書が多いな、と改めて感じました。
悪いところ
全体的に分かりやすかったのですが、細かい数式で結構躓くところが多いかもしれません。
特性関数などが出てくるので、微積分を噛ってから読んだほうが良いと思います。
本のコンセプト(厳密な数学書に誘うこと)からしてしょうがないことではありますが、証明を略したり厳密でないところがあったりします。これに関しては統計学の本格的な入門書を読むことで対応しようと思います。
学べること
統計学を学ぶ意義、確率・統計の基礎、代表的な確率分布の説明、検定や推定の実際、確率過程
追記
他の統計学の入門書として、こんな本も読みました。
- 作者: 上田修功
- 出版社/メーカー: 丸善出版
- 発売日: 2014/01/25
- メディア: 新書
- この商品を含むブログを見る
入門書としても良いとは思いますが、統計学を少し勉強した後の知識の整理に役立つと思います。
「パターン認識と機械学習」への遠回り 幕間 「機械学習と統計学」
機械学習の勉強を始めた当初、統計学を学ぶ必要性をあまり感じていませんでした。
というのも、統計学自体をほとんど知らなかったので、統計学についてちょっと変なイメージを持っていたからだと思います。
しかし、機械学習を勉強するにつれ、統計学と機械学習が非常に似ている、というかほぼ同じ何じゃないかという考えを持つようになりました。
機械学習や統計学、またデータマイニングには、「データを集め、目的を持って処理し、結果を考察する」という考え方が根幹にあるのだと思います。
これらを区別して考えるより、それぞれの立場からこの「根幹にある考え」へアプローチしたほうが有意義なのではないかと今は感じています。
また、機械学習には大きく分けて「識別モデル」と「生成モデル」の二つがあり、特に「生成モデル」と統計学に高い親和性があると思います。
しかし、機械学習やパターン認識の入門書だと、紙面の都合上、どうしても「識別モデル」の説明が多いと感じました。*1
なら生成モデルの勉強の一環として、いっそ統計学を基礎から学んでしまおう!と考えました。
「パターン認識と機械学習」への遠回り その4 「キーポイント線形代数」
その1 フリーソフトで作る音声認識システム
その2 自然言語処理のための機械学習入門
その3 はじめてのパターン認識
- 作者: 薩摩順吉,四ツ谷晶二
- 出版社/メーカー: 岩波書店
- 発売日: 1992/10/22
- メディア: 単行本
- 購入: 5人 クリック: 30回
- この商品を含むブログ (26件) を見る
読んだ動機
前回までの三冊を読み、数学力に不安を覚えました。
特に主成分分析のあたりで固有値問題が出てきた時、固有値や固有ベクトルについてはなんとなく覚えていたのですが、どういう意味を持っているのか良く分かっていないことに気付いたので、この本を読むことにしました。
良いところ
非常に分かりやすいです。図や例題を豊富に用いてるので非常にイメージしやすく、スムーズに読むことができました。
特に固有値や固有ベクトルの持つ意味をイメージできるようになったのが大きい収穫でした。
この本を読んだ後にはじめてのパターン認識の主成分分析の項を読みなおしたのですが、この本が理解の助けになったと感じました。
悪いところ
しいてあげるなあら、あまり厳密な本ではないことかもしれません。
しかし、本の意図が「厳密な数学書に誘うこと」なので、厳密でないのは意図通りなのだと思います。
【書評】統計学 (サイエンス・パレット)
- 作者: 上田修功
- 出版社/メーカー: 丸善出版
- 発売日: 2014/01/25
- メディア: 新書
- この商品を含むブログを見る
統計学について、数式を用いないで説明した一冊です。
統計(と確率)の基礎からデータの集め方・実験・結果の考察といった、統計学の一連の流れを簡単に説明しています。
その中でも特に「どういった心構え・手順で統計処理をするべきか」について重点的に説明している印象を受けました。
統計モデルの説明もしていますが、個人的には(数式を用いていない*1ので)ちょっと分かり辛かったです。*2
統計学を学びたいけど数式が苦手な人*3や、統計学を一度学び、知識の整理をしたい人などにおすすめできると思います。
私は統計学を多少勉強してからこの本を読んだので、統計の考え方や全体像を俯瞰できてとても有意義でした。
あとがき含めて150ページくらいなので、通勤中や待ち時間などに読むことができると思います。