【勉強会】自己組織化マップ(SOM)
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 2,239 views

 

Statistics

Views

Total Views
2,239
Views on SlideShare
2,239
Embed Views
0

Actions

Likes
3
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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