2006/04/23
■ [tool] som_pak 日本語ラベル出力
以前 som_pak で国立大学 法人化 1 年目の財務諸表をマップにしてみましたが,オリジナルの som_pak では日本語のラベルが出力できないと言われたので変更方法を書いておきます.マップ出力のフォントの部分を日本語フォントに書換えたらできました.手順は下記のような感じです.
% wget http://www.cis.hut.fi/research/som_pak/som_pak-3.1.tar % tar xvf som_pak-3.1.tar % cd som_pak-3.1 % foreach i (*.c *.h) do sed -i.bak -e 's/Helvetica/GothicBBB-Medium-EUC-H/g' $i done % make -f makefile.unix
試しにここで書いてある 16 種類の動物のデータを日本語ラベルでマップにしてみます.
まず下記のデータファイル animal-ja.dat(日本語 euc コード)として用意します(1行目の 16 はベクトルの次元数).
16 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0.5 ハト 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0.5 キツネ 1 0 0 0 1 0 0 0 0 1 0.3 0 0 1 1 0.5 メンドリ 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0.5 ライオン 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 ガチョウ 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 ワシ 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 イヌ 0 1 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 オオカミ 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 シマウマ 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 アヒル 1 0 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 ネコ 1 0 1 0.5 0 1 1 0 0 0 1 1 1 0 0 0 フクロウ 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 トラ 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 ウマ 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 タカ 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 ウシ
そして下記の手順でマップファイル(uma)を作成します.
% ./randinit -din animal-ja.dat -cout animal-ja.cod \ -xdim 10 -ydim 10 -topol hexa -neigh bubble -rand 123 % ./vsom -din animal-ja.dat -cin animal-ja.cod \ -cout animal-ja.cod -rlen 1000 -alpha 0.05 -radius 10 -rand 1 % ./vsom -din animal-ja.dat -cin animal-ja.cod \ -cout animal-ja.cod -rlen 10000 -alpha 0.02 -radius 3 -rand 1 % ./vcal -numlabs 1 -din animal-ja.dat -cin animal-ja.cod -cout animal-ja.cod % ./visual -din animal-ja.dat -cin animal-ja.cod -dout animal-ja.vis % ./sammon -cin animal-ja.cod -cout animal-ja.sam -rlen 100 -ps % ./umat -numlabs 1 -cin animal-ja.cod -average 1 -eps -o animal-ja.uma
出来た animal-ja.uma がマップファイルで下記のようになると思います.
また SOM ノード間の距離を示したサモンマップは下記のような感じ.
その他 som_pak で参考になりそうなページ:
- SOM: som_pak のインストール,各コマンドの説明
- 自己組織化マップ(Self-Organizing Maps)の基礎: 仕組み+デモ
ただオリジナルの som_pak には仕組み的に batch som など少し改良した方が良いところもあるのかなと思います.このあたりはまた調べて書きます.