RandomForestの解説

R

R newsにRandomForestの解説が載っていると教えてもらったので、早速読んだ。

Classification and Regression by randomForest

Some notes for practical useは一回読んでおくと吉。

ICAからモデルベースのクラスタリング

昨日気になったので、とりあえずどんな感じか確かめようと。

> library("fastICA")
> library("mclust")
> data("iris")
> b <- fastICA(iris[1:4],2)
> mc <- Mclust(b$S,G=3,modelNames="VVV")
> plot(mc,b$S)

gc

gu

混合分布はクラスタリングの本にも載っているが、PRMLの下巻のほうがK-meansからEM,混合モデルの導入の流れがスムーズで分かりやすかったかな。

ProductName Rで学ぶクラスタ解析
新納 浩幸
オーム社 / ¥ 3,360 ()
通常24時間以内に発送

ProductName パターン認識と機械学習 下 - ベイズ理論による統計的予測
C. M. ビショップ
シュプリンガー・ジャパン株式会社 / ¥ 8,190 ()
通常24時間以内に発送

RでPCAとICA

R

出典がちょっとどこだかわすれたが。

  • PCA 分散の大きな成分を抽出
  • ICA 非正規性を最大にする成分を抽出

独立って、直交しないといけないんじゃないかなんて思っていたがこの資料みて納得。

その上で主成分分析、独立成分分析を読んだらさくっと理解できた。

> data("iris")
> a <- prcomp(iris[1:4])
>biplot()

PCA

> library("fastICA")
> data("iris")
> b <- fastICA(iris[1:4],2)
> plot(b$S)

ICA

ある種のデータを二次元のプロットとして見たい場合、PCAだと変に鎖上になってしまうものもICAだともうちょっと広がって見えてくれるかな。単にマップして見たいってだけだったらこういうやり方でもいいか。

あとPCAとかICAで次元を圧縮してから混合ガウス分布みたいなのでクラスタリングするってのはダメなのだろうか?

RでNMF

R

Rで学ぶクラスタ解析に書いてあったので、これを見るべし的。

ProductName Rで学ぶクラスタ解析
新納 浩幸
オーム社 / ¥ 3,360 ()
通常24時間以内に発送

8章が次元縮約の章で特異値分解,pLSI,NMFのコードが載ってる。

やはり、この本面白いですねぇ。

RでRandomForest

R

朝からRをいじりたくなって、「あーそういえば2.8出たんだっけ」とか言いながら、ソース落としてきてmacbookでコンパイルをしてみたがこけた。まぁ、2.7.1でRpy動くのでとりあえずいまのところはそっとしておいてやろうということで負けを認めない方向で。

で、RandomForestは好きな時に使えるようになっておかないといけないなぁといつもお世話になっている連載を読み直した。というより、いままで上っ面を押さえただけでわかった気になっていただけだったので、ちゃんと読んだ。

  1. 与えられたデータセットからN組のブートストラップサンプルを作成する。
  2. 各々のブートストラップサンプルデータを用いて未剪定の最大の決定・回帰木を作成する。ただし、分岐のノードはランダムサンプリングされた変数の中の最善のものを用いる。
  3. 全ての結果を統合・組み合わせ(回帰の問題では平均、分類の問題では多数決)、新しい予測・分類器を構築する。

BaggingとRFの大きい違いは、Baggingは全ての変数用いるが、RFでは変数をランダムサンプリングしたサブセットを用いることができるので、高次元データの計算が容易であるである。ランダムサンプリングする変数の数Mはユーザが自由に設定することができる。Breimanは、Mは変数の数の正の平方根をと取ることを勧めている。

あとはこっちも参考になった。

RandomForests とは?

Random Forests では、個々のコンポーネントモデルを生成するのに全く新しい方法を利用する点が異なります。逆説的ですが、「強い」独立モデル同士では、モデルが全体として高いパフォーマンスを引き出すよう有効に結合しません。むしろ「弱い」独立モデル同士の方が効果的な結果をもたらす傾向があるのです。この理由として挙げられるのは次の 2点です:

まずひとつは、複数のモデルを組合せたり平均化を行っても、個々のモデルがお互いに非常に類似している場合には際立った精度の改善が見られないという点があります。極端な場合、各モデルが全く同一のコピーだとすると、平均化することによってそこから得られる利益(ベネフィット)は全く何もありません。組合せ技術で何らかの利益をもたらすためには、組合せるモデル同士はお互いに異なっている必要がある訳です。

要するに予測精度はある程度弱くてもよいからできるだけ直交するようなモデルを組み合わせることが大切ということか。

Rで使う

CRANにrandomForestというパッケージがあるのでそれを利用する。unsupervisedで遊んでみた。

> library("randomForest")
randomForest 4.5-28
Type rfNews() to see new features/changes/bug fixes.
> data("iris")
> set.seed(17) 
> iris.urf <- randomForest(iris[, -5]) 
> MDSplot(iris.urf, iris$Species)
### plot ###
> importance(iris.urf)
             MeanDecreaseGini
Sepal.Length         17.33820
Sepal.Width          15.19356
Petal.Length         17.30337
Petal.Width          12.92124

iris<em>unsupervised</em>randomForest

こっちはsupervised

> data(iris) 
> iris.rf <- randomForest(Species ~ ., iris, proximity=TRUE, 
+ keep.forest=FALSE)
> MDSplot(iris.rf, iris$Species)

iris<em>supervised</em>randomForest

他にもimportanceとかgetTreeといった関数が重要そう。

macbookでRpyを利用できるようにしたのでメモ

python2.5,R-2.7.1,rpy1.0.3という組み合わせで。rpy2-alphaはコンパイルが通らなかった。

Rのインストール

Rはソースからコンパイル。enable-R-shlibオプションをつけるのを忘れずに、というより配布されていたバイナリはこれつきでコンパイルされてないようなのでそのままではrpyが入らないはず。

R CMD config --ldflags

とか打つとOKかどうかわかる。 ダメげな場合は潔くソースから。

./configure --enable-R-shlib
make

ここでまた、make installするとshlibがなんかみつからなくなるという現象に悩まされた。そのため、ユーザー領域でコンパイルしたバイナリを使う事にした。/Users/kzfm/R-2.7.1/bin/Rが実体で/opt/local/bin/Rにシンボリックリンクを張って使っている。

Rpyのインストール

export R_HOME=/Users/kzfm/R-2.7.1
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$R_HOME/lib

これが重要。あとmacのgccでもコンパイルできなくてmacportのgcc使ってコンパイルする必要があるかもしれない。

あとは普通に

sudo python setup.py install

でいけるはず。

Rによる医療統計学

一通り読んだ。分かりやすくてお薦めの一冊。

ProductName Rによる医療統計学

丸善 / ¥ 2,940 ()
通常24時間以内に発送

まぁ、なんというか僕はクラスタリングとかPLS,PCRなんかのほうに偏っていて検定とか苦手(というよりもあまり使わない)のでこういったタイプの本は勉強するによいし、手元においておくと何かと便利(なはず)

練習問題もたまに解いている

macbookにRをいれた

yumみたいなのりで

sudo port install R

ってやったら、GCCがインストールされ始めてなんか危険な香りがしたのでキャンセル。CRANを見に行ったらmac用のバイナリがあったのでそれをインストールした。

でもこれって、rpyでつかえるんだろうか?

Rによる医療統計学

R

暇を見つけて演習問題を解いていこうかなと。

ProductName Rによる医療統計学

丸善 / ¥ 2,940 ()
通常24時間以内に発送

と思ったけど、一章の問題は後回しでよいんではなかろうかと。

だらだらすると続かない病だからなー。集中してやり遂げたほうがいいのかな。

プログラミングのための線形代数

R

先週末から読んでいて、5章以外は読んだ。5章はJacobi法とQR法の話。カバーデザインからこの本はCGのための何かか?などと思わされるが線形代数の入門書だ。

特にプログラミングのためのと銘打っているが、コードはほとんど出てこない。むしろ行列の意味を説明することに重点をおいているので、行列というものが空間とかでどういう挙動をしめすのかイメージできるようになって楽しい。直感がちょっと働くようになるっていうか。

ProductName プログラミングのための線形代数
平岡 和幸,堀 玄
オーム社 / ¥ 3,150 ()
通常24時間以内に発送

  • LU分解
  • 固有値
  • 対角化
  • Jordan標準形

といったあたりは知っているという人でも、改めてそれらがどういうイメージを持つのかとかを解説されると、(岩波の)数式だけの本とか論文ばかり読んで唸っていても分からないあたりがあーなるほどと思える。もうちょっと早く知っておくべきだった。さらに、枠囲みのプチコラムというかプチQ&Aが面白かった。

Next Page