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

イントロダクション

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

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

kernlab

  1. RGui のメニューで、パッケージ>CRANミラーサイトの設定 を行う(設定済みなら不要)
  2. パッケージ>パッケージのインストール... で表示される一覧から kernlab を選択して OKを押す
  3. 完了
    • 注意: linux 版だと環境によってインストールが面倒な場合あり. 現在調査中.
 rbf <- rbfdot(sigma=1)
 k <- kernelMatrix(rbf, x)

テストサンプルなどに関しては &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. 適切なディレクトリに圧縮ファイルを展開する

mani

Rとmatlabの違い


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