RでSOM(自己組織化マップ)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
//尾野
//↑追記します by Tajika 2004.09.05
COLOR(red){SIZE(30){RでSOM(自己組織化マップ)}}
(工事中)
#contents
*Kohonenの自己組織化マップ(SOM : Self Organizing Map)につ...
自己組織化マップはニューラルネットの一種で、多次元データ...
非線形の主成分分析+クラスター分析とも言える。
詳細については Kohonen の著作である [[Self-Organizing Map...
[[アマゾン:http://www.amazon.co.jp/exec/obidos/ASIN/44317...
でも売っているので詳細を知りたい方はこちらを参照のほど。
*パッケージ [#d7a33ac0]
Rでは以下のパッケージでコホネンの自己組織化マップをサポー...
**class パッケージ [#wf203f73]
--[[class(各種の分類用関数)パッケージ中のオブジェクト一覧]]
**som パッケージ [#t42b8dac]
--[[som(旧名GeneSOM)(自己組織化マップ)パッケージ中のオ...
**sammon map [#ldeb25fc]
**kohonen: 教師付き・教師なし自己組織化マップ [#x01d72b9]
[[Kohonen(教師付き・教師なし自己組織化マップ)パッケージ...
**klaR パッケージ [#ad4484d8]
-SOM 図?の描画
**wccsom: ピークシフトを利用したパターン比較のための SOM ...
**soma: General-purpose optimisation with the Self-Organi...
*使い方(class パッケージ) [#ha90e5b1]
**パッケージのロード [#obd53446]
library(class)
** データ入力 [#q056c746]
コホネンの[[SOM_PAK:http://www.cis.hut.fi/research/som_lv...
この ex.dat は、[[som_pak:http://www.cis.hut.fi/research/...
ex.dat の構成は以下ようになっている。
5
13.575570 12.656892 -1.424328 -2.302774 404.921600
13.844373 12.610620 -1.435429 -1.964423 404.978180
13.996934 12.669785 -1.384147 -1.830788 405.187378
14.060876 12.755087 -1.378407 -2.020230 404.892548
(以下中略)
24.066832 22.776152 -0.371480 1.382585 409.522491
23.332212 22.386673 -0.440821 0.525516 406.918518
最初の行にある 5 は column number を示し、Rでは利用しない...
入力では scan("ex.dat",skip=1) とすることで最初の行をスキ...
ex <- matrix(scan("ex.dat",skip=1),ncol=5,byrow=T) #
** 実行 [#bb51bc00]
*** マップの初期化 [#o70788d0]
12x8 のマップ、近傍関係は hexagonal(六角形) と rectanglar...
ここでは hexagonalを選択する。
gr<-somgrid(xdim=12,ydim=8,topo = "hexagonal") #randinit
*** マップのトレーニング [#n62b7d77]
上記で設定した マップ上に多次元データ exを投影する。
以下のパラメータはそれぞれ、rlen:学習回数, alpha:学習係数...
test<-SOM(ex,gr,rlen=1000,alpha=0.02,radii=10) #vsom
** 結果出力 [#s44f6678]
*** レーダーチャート出力 + ラベル付け [#v2f10ce6]
SOMの教科書やアプリケーションでは正六角形を用いている。...
plot(test)
なお、どの値がどこに割り当てられるのかを知りたくなるかも...
この場合は以下を用いると良いだろう。
plot(test)
# 六角形配置にしたがって円を配置する (下記の 12*8は xdim...
symbols(test$grid$pts[,1],test$grid$pts[,2],circles=rep(...
# knn1を使って ex 中のデータが SOMで割り当てた test$code...
bins <- as.numeric(knn1(test$code,ex, 0:95));
# exから抜粋した値がどこに割り当てられるのかを示す。
# 全てをプロットすると収集がつかなくなるので seq(101, 10...
text(test$grid$pts[bins[seq(101,1000,by=25)],] + rnorm(3...
#ref(plotwith_classsom.jpg)
なお、図によれば751と701は同じ領域に(5値ともまんべんなく...
601と576も同じ領域(最後の変数(5時半の方向)だけが比較的高い)
にある。
以下の値で確認したところうまく分類できているようである。
> ex[701,]
[1] 24.788752 29.759186 -0.546825 0.164685 402.904144
> ex[751,]
[1] 24.40198 32.89207 -0.20661 -2.27529 404.54211
> ex[576,]
[1] -0.190742 5.562227 -15.627743 -15.601818 407.453247
> ex[601,]
[1] -2.853164 4.018708 -16.220818 -16.177996 405.366364
//*** ラベル付け
*** sammon map(押し花?) [#s0a44787]
*** hexagon [#h4a277a7]
maptree パッケージ利用
*使い方 (som パッケージ) [#u60d0297]
**パッケージのロード [#k8db7eec]
library(som);
**データ入力 [#j9041d53]
上記と同じex.datを使用する。ただし留意すべきは こちらのパ...
描画の際に都合が悪い。
以下のようにして標準化しておく
ex.sc <- scale(ex);
なお、som packageにも normalize(標準化するためのもの?)とf...
こちらを使ってみるのも一つの手である。
**実行 [#m2384d01]
10x10のマップ、近傍関係はhexa(六角形)とrect(四角形)の二つ...
今回は rectを選択する。
foo <- som(ex.sc, xdim=10,ydim=10,topol="rect");
**結果出力 [#zb2ee16b]
plot(foo);
値がどこに割り当てられるのかを知りたい場合は
# 対象の設定
obj <- seq(101, 1001,by=25);
n <- length(obj);
# 以下 rep(0.5, n*2) + rnorm(n*2, 0, 0.15)はラベルを微妙...
text(foo$visual[obj,c(1,2)] + rep(0.5, n*2)+ rnorm(n*2, ...
#ref(plotwith_som.jpg)
*使い方 (kohonen パッケージ) [#ic33e385]
**パッケージのロード [#t52b0462]
library(kohonen)
**データ入力 [#w4a1bb66]
*関連リンク [#kbd2ebe3]
-[[R News Volume 3/3:http://cran.r-project.org/doc/Rnews/...
-金明哲(2006):[[Rと自己組織化マップ:http://www1.doshisha....
----
-実例などを入れさせて頂きました。誤りなどありましたらご指...
-実例は大変ありがたいのですが、文章をもう少し工夫されたら...
-文章を工夫したほうがよいかどうかはわかりませんが、このペ...
#comment
終了行:
//尾野
//↑追記します by Tajika 2004.09.05
COLOR(red){SIZE(30){RでSOM(自己組織化マップ)}}
(工事中)
#contents
*Kohonenの自己組織化マップ(SOM : Self Organizing Map)につ...
自己組織化マップはニューラルネットの一種で、多次元データ...
非線形の主成分分析+クラスター分析とも言える。
詳細については Kohonen の著作である [[Self-Organizing Map...
[[アマゾン:http://www.amazon.co.jp/exec/obidos/ASIN/44317...
でも売っているので詳細を知りたい方はこちらを参照のほど。
*パッケージ [#d7a33ac0]
Rでは以下のパッケージでコホネンの自己組織化マップをサポー...
**class パッケージ [#wf203f73]
--[[class(各種の分類用関数)パッケージ中のオブジェクト一覧]]
**som パッケージ [#t42b8dac]
--[[som(旧名GeneSOM)(自己組織化マップ)パッケージ中のオ...
**sammon map [#ldeb25fc]
**kohonen: 教師付き・教師なし自己組織化マップ [#x01d72b9]
[[Kohonen(教師付き・教師なし自己組織化マップ)パッケージ...
**klaR パッケージ [#ad4484d8]
-SOM 図?の描画
**wccsom: ピークシフトを利用したパターン比較のための SOM ...
**soma: General-purpose optimisation with the Self-Organi...
*使い方(class パッケージ) [#ha90e5b1]
**パッケージのロード [#obd53446]
library(class)
** データ入力 [#q056c746]
コホネンの[[SOM_PAK:http://www.cis.hut.fi/research/som_lv...
この ex.dat は、[[som_pak:http://www.cis.hut.fi/research/...
ex.dat の構成は以下ようになっている。
5
13.575570 12.656892 -1.424328 -2.302774 404.921600
13.844373 12.610620 -1.435429 -1.964423 404.978180
13.996934 12.669785 -1.384147 -1.830788 405.187378
14.060876 12.755087 -1.378407 -2.020230 404.892548
(以下中略)
24.066832 22.776152 -0.371480 1.382585 409.522491
23.332212 22.386673 -0.440821 0.525516 406.918518
最初の行にある 5 は column number を示し、Rでは利用しない...
入力では scan("ex.dat",skip=1) とすることで最初の行をスキ...
ex <- matrix(scan("ex.dat",skip=1),ncol=5,byrow=T) #
** 実行 [#bb51bc00]
*** マップの初期化 [#o70788d0]
12x8 のマップ、近傍関係は hexagonal(六角形) と rectanglar...
ここでは hexagonalを選択する。
gr<-somgrid(xdim=12,ydim=8,topo = "hexagonal") #randinit
*** マップのトレーニング [#n62b7d77]
上記で設定した マップ上に多次元データ exを投影する。
以下のパラメータはそれぞれ、rlen:学習回数, alpha:学習係数...
test<-SOM(ex,gr,rlen=1000,alpha=0.02,radii=10) #vsom
** 結果出力 [#s44f6678]
*** レーダーチャート出力 + ラベル付け [#v2f10ce6]
SOMの教科書やアプリケーションでは正六角形を用いている。...
plot(test)
なお、どの値がどこに割り当てられるのかを知りたくなるかも...
この場合は以下を用いると良いだろう。
plot(test)
# 六角形配置にしたがって円を配置する (下記の 12*8は xdim...
symbols(test$grid$pts[,1],test$grid$pts[,2],circles=rep(...
# knn1を使って ex 中のデータが SOMで割り当てた test$code...
bins <- as.numeric(knn1(test$code,ex, 0:95));
# exから抜粋した値がどこに割り当てられるのかを示す。
# 全てをプロットすると収集がつかなくなるので seq(101, 10...
text(test$grid$pts[bins[seq(101,1000,by=25)],] + rnorm(3...
#ref(plotwith_classsom.jpg)
なお、図によれば751と701は同じ領域に(5値ともまんべんなく...
601と576も同じ領域(最後の変数(5時半の方向)だけが比較的高い)
にある。
以下の値で確認したところうまく分類できているようである。
> ex[701,]
[1] 24.788752 29.759186 -0.546825 0.164685 402.904144
> ex[751,]
[1] 24.40198 32.89207 -0.20661 -2.27529 404.54211
> ex[576,]
[1] -0.190742 5.562227 -15.627743 -15.601818 407.453247
> ex[601,]
[1] -2.853164 4.018708 -16.220818 -16.177996 405.366364
//*** ラベル付け
*** sammon map(押し花?) [#s0a44787]
*** hexagon [#h4a277a7]
maptree パッケージ利用
*使い方 (som パッケージ) [#u60d0297]
**パッケージのロード [#k8db7eec]
library(som);
**データ入力 [#j9041d53]
上記と同じex.datを使用する。ただし留意すべきは こちらのパ...
描画の際に都合が悪い。
以下のようにして標準化しておく
ex.sc <- scale(ex);
なお、som packageにも normalize(標準化するためのもの?)とf...
こちらを使ってみるのも一つの手である。
**実行 [#m2384d01]
10x10のマップ、近傍関係はhexa(六角形)とrect(四角形)の二つ...
今回は rectを選択する。
foo <- som(ex.sc, xdim=10,ydim=10,topol="rect");
**結果出力 [#zb2ee16b]
plot(foo);
値がどこに割り当てられるのかを知りたい場合は
# 対象の設定
obj <- seq(101, 1001,by=25);
n <- length(obj);
# 以下 rep(0.5, n*2) + rnorm(n*2, 0, 0.15)はラベルを微妙...
text(foo$visual[obj,c(1,2)] + rep(0.5, n*2)+ rnorm(n*2, ...
#ref(plotwith_som.jpg)
*使い方 (kohonen パッケージ) [#ic33e385]
**パッケージのロード [#t52b0462]
library(kohonen)
**データ入力 [#w4a1bb66]
*関連リンク [#kbd2ebe3]
-[[R News Volume 3/3:http://cran.r-project.org/doc/Rnews/...
-金明哲(2006):[[Rと自己組織化マップ:http://www1.doshisha....
----
-実例などを入れさせて頂きました。誤りなどありましたらご指...
-実例は大変ありがたいのですが、文章をもう少し工夫されたら...
-文章を工夫したほうがよいかどうかはわかりませんが、このペ...
#comment
ページ名: