スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

自己組織化マップ(SOM)

今日はSOMについて。

SOM(Self Organizing Map)はニューラルネットワークの一種で高次元データを2次元平面上に非線形射影する教師なしのデータ解析手法。非線形の主成分分析+クラスター分析みたいなものらしい。
このサイトの巡回セールスマン問題のデモが非常にわかりやすい。

多次元データをSOM解析することによって下記の結果を得ることが出来る。
● 多次元野データを2次元空間上にマッピング
● 似た特徴のデータは近い場所にマッピング
● 異なる特徴のデータは遠い場所にマッピング
● 視覚的に理解しやすい

【SOMの処理ステップ】
1.入力ベクトルと出力層のすべてのユニットを比較し、最も類似しているユニットを勝者ユニットとする
2.勝者ユニットとその近傍のユニットの重みベクトルを更新
3.すべての入力ベクトルに対して1〜2を繰り返す

【RでSOM】
では早速、RでSOMを使ってみる。


library(som)

# サンプルデータをロードします
rm(chooseData)
chooseData <- read.csv(file.choose())
val <- chooseData[, 1:9] # 数値データ
lab <- chooseData[, 10] # 分類(正解)
tag <- as.numeric(lab) # 正解データをプロットするための識別タグ

# 数値データを利用して10 X 10ピクセルの出力層を用意します
model <- som(val, xdim = 10, ydim = 10)

# 出力層をプロットします
lab.cod <- as.numeric(chooseData[,10])
plot(model)

# 実際のデータがどの座標にプロットされているかを表示させます
points(model$visual$x, model$visual$y, pch = tag, col = tag, cex = 2)
text(x=model$visual$x, y=model$visual$y, labels=lab)

# 重なりすぎてわからないので、ラベルだけをプロット
out.new <- model$visual[,1:2]
plot(out.new[,1:2], pch=unclass(lab))
text(x=model$visual$x, y=model$visual$y, labels=lab)




【応用】
実データでは、データ数が多くなってしまうため、計算時間やマップ上での表現が難しくなる。また、SOM自体は統計額をもとにして作られたアルゴリズムではないので、統計的な観点を取り入れた手法で様々な応用がされているらいいs。
プロセス解析,制御,検索システム,顧客セグメンテーション、経営のための情報分析などに応用されているらしい。

【参考】
子供でもわかる「自己組織化マップ」
Miyazawa’s Pukiwiki 公開版
Rで行うSOM解析
http://www.brain.kyutech.ac.jp/~furukawa/note/som/som.html#6
自己組織化マップ Self-Organizing Map(SOM) の学習メモ
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

HitTips

Author:HitTips
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。