Rで学ぶクラスタ解析

ケモインフォマティクス向けのRプログラミングとクラスタリングの書籍としてもよい。混合分布モデルでHTSデータ分けたりとか、スペクトラルクラスタリング、ファジークラスタリングを化合物クラスタリングに使ってみたくなった。

ProductName Rで学ぶクラスタ解析
新納 浩幸
オーム社 / 3360円 ( 2007-11 )


5章まで基礎的な内容で無難なんだけど、6章からが面白い。

  • 混合分布モデル
  • スペクトラルクラスタリング
  • 次元縮約
  • ファジークラスタリング

統計やるために「対話的っぽいツールとしてのR」を使いましょうという内容ではなくて、スクリプト言語としてRを使ったりとか、クラスタリングのためのアルゴリズムを実装していくという内容。章の最後に載っているプログラミングメモがお役立ち。「はじめに」にRはベクトルと行列の演算が本質と言い切っているように効率的なプログラミングのためにどう書くといいかとかかなり参考になった。

RでRandomForest

朝から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といった関数が重要そう。

Rによる医療統計学

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

ProductName Rによる医療統計学

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

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

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

macbookにRをいれた

yumみたいなのりで

sudo port install R

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

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

Rによる医療統計学

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

ProductName Rによる医療統計学

丸善 / ?円 ( 2007-01-27 )


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

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

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

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

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

ProductName プログラミングのための線形代数
平岡 和幸
オーム社 / 3150円 ( 2004-10 )


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

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

Rの基礎とプログラミング技法

最近R関連の本を多めに読んでいるが、実はOS自作入門にもちょっと脱線しかけている。その煽りをくらってiKnowがやれていない。

ProductName Rの基礎とプログラミング技法
U.リゲス
シュプリンガー・ジャパン(株) / ?円 ( 2006-10-22 )


中古本で安かったので購入。早速斜め読み。R言語に関して解説。特に4章あたりは言語としてのRを知るのに丁度よい。

  • クロージャ使える
  • 遅延評価
  • 名前空間が導入されている
  • (実は)オブジェクト指向言語

クロージャはこんな感じ

> a <- function (y) {return(function (x){return(x + y)})}
> b <- a(3)
> b(4)
[1] 7

多値は受け取れないのかな?

> mv <- function (x,y){return(list(x,y))}
> mv(1,2)
[[1]]
[1] 1

[[2]]
[1] 2

> list(r1,r2) <- mv(1,2)
 以下にエラー list(r1, r2) <- mv(1, 2) :  オブジェクト "r1" は存在しません

ESSモードの設定(ちょっとだけ)

Emacs/cperl-mode の設定 ( ちょっとだけ )が使いやすい。

というわけで、ESSでも似たようなことをやりたかったので自分の.emacsに追加。

(add-hook 'ess-mode-hook '(lambda ()
          (local-set-key "\C-j" (lambda () (interactive)(insert "<-")))
          ))

これでCtrl-jで<-が挿入されるので便利。

MeadowでESSを使う

使ったことないってのが謎なんだけど、Rはvanillaでスクリプトとして流すかRSOAPとかでしか使ってなかったので、あんま対話環境にこだわらなかったので。

Meadow で R-modeを参考にしてインストールしたけど、Rの起動画面が文字化け。

;;ESS
(load "C:/ess-5.3.6/lisp/ess-site")
(require 'ess-site)
(setq auto-mode-alist
     (cons (cons "\\.r$" 'R-mode) auto-mode-alist))

(setq inferior-R-program-name "C:/Program Files/R/R-2.6.1/bin/Rterm.exe") 
(setq ess-ask-for-ess-directory nil)
(setq ess-pre-run-hook
   '((lambda () (setq S-directory default-directory)
                (setq default-process-coding-system 
                 '(shift_jis-unix . shift_jis-unix))
    )))

と設定したら文字化け解消。

まだ、ESSの快適さは実感してないけど、これからかな。

MAWP14章はProbability

ProductName Mastering Algorithms With Perl
Jon Orwant,Jarkko Hietaniemi,John MacDonald
Oreilly & Associates Inc / ¥ 4,054 (1999-07)
通常3~5週間以内に発送

こういうのはRに任す。確率分布とか充実してる。

15章も統計なのでRで。

16章は微分とかsmoothingとかSICPな感じなので流し読みして終了。

ってことで、MAWPも終了。ソート、マトリックス、グラフ、文字列マッチング、暗号あたりが面白かった。