本日のアジェンダ


自己組織化マップとは



自己組織化マップのアルゴリズム



データ解析
 パッケージkohonen

1
自己組織化マップとは
自己組織化マップは、高次元データを2次元平面上へ非線形射影するデータ解析法であり、
多次元尺度法・クラスター分析法として用いられている。位相を考慮しつつ低次元空間に
写像する。

引用:マインドウェア総研
引用:九州工業大学

2
自己組織化マップのアルゴリズム(もっとも基本/2次元の場合)
(1) マップの縦横の大きさ・トポロジーを決める。
(2) マップを乱数によって初期化する
(3) 入力

に最も近いマップ上のユニット

(4) 選択した

を選択する。

とその近傍のユニットを更新する。

縦サイズ

横サイズ

6角形のSOM

入力列

四角のSOM

3
自己組織化マップのアルゴリズム(図解)
各ユニットのベクトルを色にたとえてアルゴリズムを例示する。簡単のため、ランダムに
初期化されたマップのうち、3色に注目してマップが更新される様子を図示する。
入力列からランダムにマップ上にユ
ニットを配置する。
入力列
入力列から1つ選択し、最も近いユ
ニットを選択する。近傍のユニット
の値を更新する。
入力列

入力列

同様に、入力列から1つ選択し、最も
近いユニットと、その近傍を更新す
る。このとき、少しずつ範囲と更新
割合を減らす。

以下同様に既定の回数まで繰り返す

入力列
4
データ解析
実際にRを用いて、データirisをSOM上にプロットする。手順は(1)SOMの作成、(2)データを
SOM上にプロットの2段階。irisデータのうち4つのアヤメの特徴からアヤメをクラスタリン
グし、品種の判別を試みる。

Mapping plot
1
1

1
11

11
1

2
2
2
22
2
2

1

Petal.Length
Petal.Width

(1)作成したSOM

2
22

2

2
2

2
2

2

2
2
2

2
22

2
2

3

3
3

2
33

2
2
2

3

3

2
3
3

3
3
3

3
3
3

3

3

3
3

3 3
3
3
2
3
3
2
2
3
3

2
2

333
33

3
3
3

3

2

2

2
2
2

Sepal.Length
Sepal.Width

22

1
1

2
22

2
2

1
1
1

11
1
11
11 1
11

1
111

11
1
1
1
1

11
1

1
11
1

1

1
1
1

3

3
3
3

33
3
3

3
3
33

(2)SOMへのプロット

5
データ解析(SOMの作成)
somgridでSOMのサイズ・形状を指定。SOM関数でSOMを作成しplotで作成したSOMを図示する
。傾向の似たユニットが近くに配置されていることがわかる。

Sepal.Length
Sepal.Width

Petal.Length
Petal.Width

somgrid(xdim=8, ydim=6, topo=“hexagonal”)
som(as.matrix(iris[,1:4]),…)
plot(….type=“codes”…)

6
データ解析(データをSOMへプロットする)
作成したSOMに対して、データをプロットしていく。大体近いところに同じ品種がプロット
されていることがわかる。

Mapping plot
1
1

1
11

11
1

2
2
2
22
2
2

1
2

2
2

2
2

2
2
2
2

2
22

2
2

3

3
3

2
33

2
2
2

3

3

2
3
3

3
3
3

3
3
3

3

3

3
3

3 3
3
3
2
3
3
2
2
3
3

2
2

333
33

3
3
3

3

2

2

2
2
2

2
22

22

1
1

2
22

2
2

1
1
1

11
1
11
11 1
11

1
111

11
1
1
1
1

11
1

1
11
1

1

1
1
1

3

作成したSOMの
一番近いところに
配置

3
3

3

33
3
3

3
3
33

somgrid(xdim=8, ydim=6, topo=“hexagonal”)
som(as.matrix(iris[,1:4]),…)
plot(….type=“mapping”…)
7
データ解析(元のデータとの比較)
元のirisは4次元空間上にあるデータだったが、SOMによって二次元空間に落とし込むこと
ができたことがわかる。
3.0

4.0

0.5

1.5

2.5
6.5

2.0

3.5

4.5

Sepal.Length

7

2.0

Sepal.Width

5

Mapping plot

2.0

1

3

Petal.Length

0.5

3.0
2.0
1.0

Species
6.0

7.5

1

3

5

7

1.0

2.0

11
1

3.0

11
1

2
2
2
22
2
2

1
2

2
2

2
2

2
2
2
2

2
22

2
2

3

3
3

2
33

2
2
2

3

3

2
3
3

3
3
3

3
3
3

3

3

3
3

3 3
3
3
2
3
3
2
2
3
3

2
2

333
33

3
3
3

3

2

2

2
2
2

2
22

22

1
1
1

1
1

2
22

2
2

1
1
1

11
1
11
11 1
11

1
111

1
1
1

11
1

1
1
11

1

4.5

1
1

1
11

Petal.Width

3

3
3
3

33
3
3

3
3
33
8
実際の分析に使うときに留意すべきこと
実際の分析にあたっては、ここまで説明していなかった点で、結果に影響がでる留意すべ
き点があります。
ここについて、
もう一歩踏み込
んでみます。

• 用途に応じた、オンラインSOM/バッチSOMの選択
• SOMのサイズの選び方
• マップの初期値の選び方
• Rのデフォルトは、入力値からのランダム選択
です
• 主成分分析を使った合理的な選択方法がある
ようです。
• マップ更新時の学習半径・学習率の選び方
• 値の設定で、結果が大きく変わる
9
オンラインSOM / オフラインSOM
Kohonenの自己組織化マップは、データを入力するごとにユニットを更新するためマップが
データの順序に依存してしまう。これに対してバッチ自己組織化マップが提案されている
。

オンラインSOM

データ

利点

• 1つずつ入力
• 入力された順に学習

• データを収集しながら
学習可能

使用メモ
リ

• データを1つずつ読み込む
ため省メモリ

学習時間

• 逐次更新のため1回の学習
時間が短い

バッチSOM
• 一括で入力
• すべてのデータを一気に
学習
• 順序によらない学習法の
ため安定した結果が得ら
れる。
• 学習率(アルファ)が不
要
• すべてのデータを読み込
むためメモリ使用量が多
い
• すべてのデータを利用す
るため更新時間が長い
10
オンラインSOMは入力順序に依存してしまう場合がある
オンラインSOMは、初期のころのほうが更新範囲が広く、ステップが進むにつれて更新範囲
が狭くなっていく。オンラインSOMだと入力列の順序によってマップが変わってしまう。マ
ーケティングなど順序に意味がない分析では、バッチSOMの方がよい。

ステップ`(t)が進むにつ
れ
更新範囲が狭く、
割合も小さくなる

11
オンラインSOMのデータ順序による結果の差
RのclassパッケージのSOM関数(オンラインSOM)に対して、順序を変えたirisデータを入
力し、結果を図示した。マップの様子が順序で異なることがわかる
※わざと大きな学習率(アルファ)を指定しているので変な出力です。

irisデータを花弁の長さの昇順でソート

irisデータを花弁の長さの降順でソート

コマンド
model <- SOM(liris, grid =
layer, alpha=seq(10,0,len=rlen), radii=seq(4,1,len=rlen), init
=init)
12
バッチSOMの順序による結果の差
RのclassパッケージのbatchSOM関数(バッチSOM)に対して、順序を変えたirisデータを入
力し、結果を図示した。マップが安定して得られていることがわかる。

irisデータを花弁の長さの昇順でソート

irisデータを花弁の長さの降順でソート

コマンド
model <- batchSOM(liris, grid =
layer, radii=seq(4,1,len=rlen), init=init)
13
まだ時間が余っていたら・・・・
SOMは高次元データを低次元空間に落とし込むだけでなく、NP問題を効率的に解くことにも
利用されている。

そのほかのSOMの例。低次元への
マップ以外の使い方。
http://www.brain.kyutech.ac.jp/~fur
ukawa/note/som/som.html

14
SOMまとめ

SOMのポイント
• 高次元データを低次元空間に落とし込む
• 位相を考慮した写像
• NP問題など、計算量が膨大な問題の近似解を求めるのにも利用
可

SOMの検討事項(結果に影響する)
•
•
•
•

マップのサイズの決め方
学習半径・学習率の決め方
マップの初期状態の決め方
オンライン学習/バッチ学習の使い分け

実際の応用に合わ
せて検討する必要
あり。

15
Q&A

Q&A

16
References

• 九州工科大学、古川研究室
http://www.brain.kyutech.ac.jp/~furukawa/note/som/so
m.html
• 同志社大学
http://www1.doshisha.ac.jp/~mjin/R/30/30.html
• WikiPedia
http://en.wikipedia.org/wiki/Self-organizing_map
• マインドウェア総研
http://www.mindware-jp.com/basic/somward.html
• 新潟大学
• http://bioinfo.ie.niigatau.ac.jp/?SOM%E3%81%A8%E3%81%AF#oed7b8fd
17
Appendix

• 添付:som_kohonen.R
教科書の自己組織化マップコード
• 添付:som_online_batch.R
オンラインSOMとバッチSOMの比較用のRコード

18

【勉強会】自己組織化マップ(SOM)