Anaconda 環境の R を RStudio で使う方法(MacOS X 版)

Anaconda が R にも対応しているのを便利に使っているのだが、やはり RStudio の画面が見やすいということで、こちらの R を RStudio に読みにいかせる方法をメモ。

  • MacOS X 10.9.5
  • RStudio 0.99.489
  • Anaconda 2.4.0 (Python2.7, pyenv を利用)

上記の条件で、下記を .bashrc に追記してコマンドラインから RStudio を立ち上げればOK。

export RSTUDIO_WHICH_R=$HOME/.pyenv/versions/anaconda-2.4.0/bin/R
alias rstudio="open -a Rstudio"

参考:
Using Different Versions of R – RStudio Support
How to run Rstudio from the command-line on OSX?

データアナリスト駆け出しの今、レベルを記録しておく。

いよいよ明日(というか今日)が転職後初の勤務日となる。この記事を書いている時点での天気は雨、明日には大雪が予報されているから、まあ幸先の良いスタートとは言い難そうだ。

さて、今回の転職では、全くのデータ分析素人(実務経験なし)の状態ながらデータアナリスト職での採用を認めてもらえた。自分としてもすごく大きな挑戦の機会だし、現在のスタート地点からどのくらいの期間でどこまでいけるのか、ある種の実験として記録を残していきたいと思っている。

今回のエントリは、その第一弾だ。過去に取り組んだデータや課題については語りえないので、ひとまず持っている知識を文献ベースで残しておく。

統計学入門 (基礎統計学)

統計学入門 (基礎統計学)

 

こちらは全部読んだ。手計算で済む演習問題は大体解いたものの、数値的解法が必要なものはノータッチ。基礎的な理論面はおさえていると思っているが、おそらく、実務的には役立たないレベル。データを取得してパッと結果を出せるような気はしない。

多変量解析入門――線形から非線形へ

多変量解析入門――線形から非線形へ

 

こちらも全部読んである。世の中的にはあまり高く評価されていない一冊だと思うのだが、一般化線形モデルや主成分分析、サポートベクトルマシン、クラスタリングなど広い話題についてそこそこきちんと書かれているので、分野を俯瞰的に理解するのには役立った。

はじめてのパターン認識

はじめてのパターン認識

 

第10章までは読んだのだが、第11章(バギング、ブースティングなど)が未読状態。ν-SVMなどはscikit-learnを使って簡単にコードを書いてみた。以前の記事で取り上げたのだが、scikit-learnを使うにあたっては

Python Machine Learning

Python Machine Learning

 

こちらの本がとにかく役に立つ。

「みどりぼん」は今日第10章まで終わった。第10章は「この本のとりあえずのゴール」と著者も書いている通り、確かにここまででモデリングの基礎的な手法は学べた気がする。本書ではMCMCに関してWinBUGSが使われていたが、僕はPyMC3で書いた。結果はだいたい一致するのだが、まだ細かな数字の見方が理解しきれていない。あと、階層ベイズをやろうとするとTheanoがエラーを吐くので、第10章のデータは扱えていない状態だ。PyMC2を試してみたい。

 

他にもいくつか参考にしたものはあるが、大まかには以上4冊の知識がある程度で、100%血肉になっているわけでもない。これから、実務経験を積む中で徐々に分かることも増えていくのだろうと思う。

期待2割、不安8割。

GLMMのPythonライブラリ

一般化線形混合モデルは大変重要そうに思うのだが、該当するPythonライブラリって存在するのだろうか?(Rのglmerみたいなやつ)

ざっと調べたところ、Google Summer of Code 2015でどんぴしゃのテーマが扱われていた様子。GitHubにもissueが投げられているのだが、途中で更新が止まってしまっているように見える。PypeRを使うしかないのだろうか……

識別の次は回帰

先日から取り組んでいた『はじめてのパターン認識』(平井有三)を読み終えた。時間かかってしまった。

多くの識別手法が解説されており、確かに「はじめて」パターン認識を学ぶのには良い本だと思う。いくつかの実データに対して手法を適用した結果も図示されており、分析結果についてのイメージもつきやすい点は親切だった。

ただ、解析用のコードは掲載されていないので、試したい人は自力で書いてみる必要がある(R使いの場合は、ライブラリ名が示されているので助かるが、Python使いの場合は全くゼロから自分で調べてコーディングする必要あり。ある意味で教育的ではある)。

数式の展開は天下り的で、統計学的な議論には乏しいので、特に理論系出身の方は適宜参考書を用意した方が円滑だろう。7章のニューラルネットワークの記述は物足りなく感じたので、 

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

 

も脇において読み進めた。勾配消失問題などがよく分かるように書いてあるし、記号も整備されているので式展開も見通し良い。コーディング、特にPythonのライブラリ利用法については次の本が参考になった。

Python Machine Learning

Python Machine Learning

 

著者のSebastian RaschkaはMichigan State UniversityのPh.D学生(執筆時点)とのことだが、この分野への熟練を感じさせる、優れた一冊だ。

トピックの網羅性が高く(scikit-learnを用いた、データ整形、分類、回帰、次元縮約、モデル評価、NLTKを使った自然言語処理、Theanoによるニューラルネットワークの扱い等が収められている)、基本的な処理方法は本書をあたれば大体見つけられると思う。各々のトピックに対してはコードが充実しており、コメントも豊富なので解読に苦労する点はほぼ無いだろう。

また、理論的な背景や手法の有効性/限界もいくらかの数式を使って解説されており、『はじめてのパターン認識』で学んだ手法について、より実践的な理解を深める機会となった。発展的な手法・アルゴリズム等に関しては原論文も引用されているため、意欲ある読者にとっての価値ある情報源になるはずだ。Caffe、TensorFlowといったディープラーニング用のフレームワークは範囲外となるので、別途学習が必要であろう。

次は回帰分析ということで、

を読み始めた。平易で良いですね。また、読み終えたら感想ここに書きます。

2次元正規分布の最尤推定

機械学習で2次曲面を用いた判別をおこなう際に、パラメータを最尤推定したくなることもあると思う。正規分布に関しては解析的に公式が求まるが、意外と計算がきちんと書いてあるものがなかった気がしたので、ここにメモ。

平均はいいとして、共分散の方は以下の公式(と余因子の公式)を使うとすぐ分かる:
 {\displaystyle
(\Sigma^{-1})_{i\alpha}(\Sigma^{-1})_{\beta j}+\frac{\partial}{\partial s_{\alpha\beta}}(\Sigma^{-1})_{ij}=0.
}
 s_{\alpha\beta}は共分散行列\Sigmaの成分。導出に関しては、\Sigma\Sigma^{-1}=1の両辺を適宜成分ごとに書いて微分したらOK。

むかし一般相対性理論を勉強していた時には添字操作が好きだったのだが、ここで触れた式を書き下す間、なんとなく当時を思い出した。

機械学習、ここから。

転職に関連して、機械学習を勉強している。
いくつか参考図書を教えてもらったのだが、まずは

はじめてのパターン認識

はじめてのパターン認識

ということで、おとなしく読んでいる。
この本、様々な判別手法がよくまとまっているとは思うものの、理論的に綺麗に書かれてはいなくて(例えば、いきなりベイズの手法を採用することの正当化の議論とかは欲しかった)、何か抜粋のような印象すらあるなと感じていた。

で、自宅の蔵書をぱらぱらとめくっていてようやく気付いた。本書は、

パターン認識と機械学習 上

パターン認識と機械学習 上

に強すぎる影響を受けているのですね。バイアス・分散トレードオフの話なんて、記号もそのままだし。あまりありがたがる本でもなさそうなので、計算を追うだけ追って、Pythonコードに落としたらちゃっちゃと次に行こう。


まず始めてみた。

年明けに転職を控え、思うところもあって書き始めてみた。

みな、世界に何かを発したくて記事を残すのだろうが、
ここはどちらかといえば私的な空間となるだろう。
意図を持って思考を残すよりは、衝動的に気持ちをはき出すような、
そんな場になる気がする。

そろそろ寒くなってきたし、今日はもう寝よう。