カーネル多変量解析ソフトウェア

イントロダクション

カーネル多変量解析の中の数値例の図を作るために, カーネル法のソフトウェアとして R 上の kernlab, matlab 上の spider, 多様体あてはめの mani を参考にしています.

ここでは数値例を出力したプログラムやそれぞれのソフトウェアの利用法 などを順次紹介していきたいと思います.

kernlab

  • インストール法
  1. RGui のメニューで、パッケージ>CRANミラーサイトの設定 を行う(設定済みなら不要)
  2. パッケージ>パッケージのインストール... で表示される一覧から kernlab を選択して OKを押す
  3. 完了
    • 注意: linux 版だと環境によってインストールが面倒な場合あり. 現在調査中.
  • 使用法
    • 立ち上げた状態では kernlab パッケージは読み込まれていないので、RGui のメニューで、パッケージ>パッケージの読み込み で表示される一覧から kernlab を選択して OK を押す
    • library(kernlab) でも OK
 rbf <- rbfdot(sigma=1)
 k <- kernelMatrix(rbf, x)
  • なお,rbfdot の引数の sigma は標準偏差ではなく,逆温度(分散の逆数の1/2)なので注意!

テストサンプルなどに関しては &mimetex(k(x_i, x^{test}_j)); というカーネル行列を作る必要がありますが、それも

 k <- kernelMatrix(rbf, x, xtest)

でOK.

kernlab が使えない場合、自分で作る必要がありますが、最近は R もだいぶ速いので 以下のような関数で比較的速く計算できます。 なお、簡単のため x は 1 次元実数値データで、固定した RBF カーネルを仮定します。

 gmat <- function(x, y) {
   nx <- length(x) # 行列なら nx <- nrow(as.matrix(x)) などと変更
   ny <- length(y)
   m <- matrix(0, nrow=nx, ncol=ny)
   for (i in 1:nx) {
     m[i, ] <- exp(-(x[i]-y)^2) # ここでカーネル関数を計算
   }
   return(m)
 }

このほか dist 関数を使う方法も考えられるのですが少し試したところループを使った上のプログラムの方が若干速いようです。

実際には、すごく大規模な場合などスパース行列にしたり、グラム行列を全部保持しないやり方(枝刈りや低ランク因子近似など)を工夫することが多いです。

spider

  • インストール法
  1. 上記HPより最新のファイル (zip) をダウンロードする
  2. 適切なディレクトリに圧縮ファイルを展開する
  • 使用法
    • matlab を立ち上げ、ファイルを展開したディレクトリにワーキングディレクトリを移動する。
    • use_spider とタイプする

mani

  • インストール&使用法
    • mani.m という一つのファイルなので、上記HPより適当なワーキングディレクトリにダウンロードして mani とタイプして実行するだけ

Rとmatlabの違い


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-04 (水) 14:10:47 (2317d)