Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

27,434 views

Published on

  • Be the first to comment

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

  1. 1. 本日のアジェンダ  自己組織化マップとは  自己組織化マップのアルゴリズム  データ解析  パッケージkohonen 1
  2. 2. 自己組織化マップとは 自己組織化マップは、高次元データを2次元平面上へ非線形射影するデータ解析法であり、 多次元尺度法・クラスター分析法として用いられている。位相を考慮しつつ低次元空間に 写像する。 引用:マインドウェア総研 引用:九州工業大学 2
  3. 3. 自己組織化マップのアルゴリズム(もっとも基本/2次元の場合) (1) マップの縦横の大きさ・トポロジーを決める。 (2) マップを乱数によって初期化する (3) 入力 に最も近いマップ上のユニット (4) 選択した を選択する。 とその近傍のユニットを更新する。 縦サイズ 横サイズ 6角形のSOM 入力列 四角のSOM 3
  4. 4. 自己組織化マップのアルゴリズム(図解) 各ユニットのベクトルを色にたとえてアルゴリズムを例示する。簡単のため、ランダムに 初期化されたマップのうち、3色に注目してマップが更新される様子を図示する。 入力列からランダムにマップ上にユ ニットを配置する。 入力列 入力列から1つ選択し、最も近いユ ニットを選択する。近傍のユニット の値を更新する。 入力列 入力列 同様に、入力列から1つ選択し、最も 近いユニットと、その近傍を更新す る。このとき、少しずつ範囲と更新 割合を減らす。 以下同様に既定の回数まで繰り返す 入力列 4
  5. 5. データ解析 実際に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
  6. 6. データ解析(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
  7. 7. データ解析(データを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
  8. 8. データ解析(元のデータとの比較) 元の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
  9. 9. 実際の分析に使うときに留意すべきこと 実際の分析にあたっては、ここまで説明していなかった点で、結果に影響がでる留意すべ き点があります。 ここについて、 もう一歩踏み込 んでみます。 • 用途に応じた、オンラインSOM/バッチSOMの選択 • SOMのサイズの選び方 • マップの初期値の選び方 • Rのデフォルトは、入力値からのランダム選択 です • 主成分分析を使った合理的な選択方法がある ようです。 • マップ更新時の学習半径・学習率の選び方 • 値の設定で、結果が大きく変わる 9
  10. 10. オンラインSOM / オフラインSOM Kohonenの自己組織化マップは、データを入力するごとにユニットを更新するためマップが データの順序に依存してしまう。これに対してバッチ自己組織化マップが提案されている 。 オンラインSOM データ 利点 • 1つずつ入力 • 入力された順に学習 • データを収集しながら 学習可能 使用メモ リ • データを1つずつ読み込む ため省メモリ 学習時間 • 逐次更新のため1回の学習 時間が短い バッチSOM • 一括で入力 • すべてのデータを一気に 学習 • 順序によらない学習法の ため安定した結果が得ら れる。 • 学習率(アルファ)が不 要 • すべてのデータを読み込 むためメモリ使用量が多 い • すべてのデータを利用す るため更新時間が長い 10
  11. 11. オンラインSOMは入力順序に依存してしまう場合がある オンラインSOMは、初期のころのほうが更新範囲が広く、ステップが進むにつれて更新範囲 が狭くなっていく。オンラインSOMだと入力列の順序によってマップが変わってしまう。マ ーケティングなど順序に意味がない分析では、バッチSOMの方がよい。 ステップ`(t)が進むにつ れ 更新範囲が狭く、 割合も小さくなる 11
  12. 12. オンライン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
  13. 13. バッチSOMの順序による結果の差 RのclassパッケージのbatchSOM関数(バッチSOM)に対して、順序を変えたirisデータを入 力し、結果を図示した。マップが安定して得られていることがわかる。 irisデータを花弁の長さの昇順でソート irisデータを花弁の長さの降順でソート コマンド model <- batchSOM(liris, grid = layer, radii=seq(4,1,len=rlen), init=init) 13
  14. 14. まだ時間が余っていたら・・・・ SOMは高次元データを低次元空間に落とし込むだけでなく、NP問題を効率的に解くことにも 利用されている。 そのほかのSOMの例。低次元への マップ以外の使い方。 http://www.brain.kyutech.ac.jp/~fur ukawa/note/som/som.html 14
  15. 15. SOMまとめ SOMのポイント • 高次元データを低次元空間に落とし込む • 位相を考慮した写像 • NP問題など、計算量が膨大な問題の近似解を求めるのにも利用 可 SOMの検討事項(結果に影響する) • • • • マップのサイズの決め方 学習半径・学習率の決め方 マップの初期状態の決め方 オンライン学習/バッチ学習の使い分け 実際の応用に合わ せて検討する必要 あり。 15
  16. 16. Q&A Q&A 16
  17. 17. 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
  18. 18. Appendix • 添付:som_kohonen.R 教科書の自己組織化マップコード • 添付:som_online_batch.R オンラインSOMとバッチSOMの比較用のRコード 18

×