#freeze
* [[カーネル多変量解析ソフトウェア>K-NEL/software]] [#o2bfabd2]
-[[カーネル多変量解析トップ>K-NEL]]
* イントロダクション [#eb6fff81]
カーネル多変量解析の中の数値例の図を作るために,
カーネル法のソフトウェアとして R 上の kernlab, matlab 上の spider,
多様体あてはめの mani を参考にしています.
ここでは数値例を出力したプログラムやそれぞれのソフトウェアの利用法
などを順次紹介していきたいと思います.
- sesejun さんブログより
--[[線形回帰、カーネル線形回帰をRで実装する>http://d.hatena.ne.jp/sesejun/20090402/p1]]
- shuyo さんブログより
--[[カーネル主成分分析をRで実装>http://d.hatena.ne.jp/n_shuyo/20100528/kernel_pca]]
* kernlab [#h7915210]
--kernlab HP http://cran.r-project.org/web/packages/kernlab/index.html
- インストール法
+ RGui のメニューで、パッケージ>CRANミラーサイトの設定 を行う(設定済みなら不要)
+ パッケージ>パッケージのインストール... で表示される一覧から kernlab を選択して OKを押す
+ 完了
-- 注意: linux 版だと環境によってインストールが面倒な場合あり. 現在調査中.
- 使用法
-- 立ち上げた状態では kernlab パッケージは読み込まれていないので、RGui のメニューで、パッケージ>パッケージの読み込み で表示される一覧から kernlab を選択して OK を押す
-- library(kernlab) でも OK
- パッケージの内容
-- [[パッケージ一覧>http://www.okada.jp.org/RWiki/?kernlab%28%A5%AB%A1%BC%A5%CD%A5%EB%BC%EA%CB%A1%A5%E9%A5%DC%29%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%C3%E6%A4%CE%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%B0%EC%CD%F7]]
- トピック
- カーネル行列の計算
カーネル行列(グラム行列)を計算するのは kernlab を使うのが速いです。
kernlab のヘルプにある方法(RBFカーネルの場合):
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 [#h1978ad4]
--spider HP http://www.kyb.tuebingen.mpg.de/bs/people/spider
- インストール法
+ 上記HPより最新のファイル (zip) をダウンロードする
+ 適切なディレクトリに圧縮ファイルを展開する
- 使用法
-- matlab を立ち上げ、ファイルを展開したディレクトリにワーキングディレクトリを移動する。
-- use_spider とタイプする
* mani [#f6878ab1]
--mani HP http://www.math.umn.edu/~wittman/mani/
- インストール&使用法
-- mani.m という一つのファイルなので、上記HPより適当なワーキングディレクトリにダウンロードして mani とタイプして実行するだけ
* Rとmatlabの違い [#red1bce7]
-[[RWiki内の記述>http://www.okada.jp.org/RWiki/?%C2%BE%A4%CE%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%A4%C8%A4%CE%C8%E6%B3%D3]] にも詳しい情報があります.
-英語ですが http://germain.its.maine.edu/~hiebeler/comp/matlabR.pdf
にも詳しい情報があります.