スポンサーサイト

上記の広告は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) の学習メモ

Pythonのインストール

統計とかRの勉強をするも、どうもやる気が出てこないのでAndroidのアプリ開発と絡めて統計の勉強をしてみようと思う。
Web解析してアプリの情報を解析したいけど、RだけだとやりにくそうなのでPythonを使って解析することに。

ちなみにPythonを選んだ理由は
・統計用のライブラリが充実
・初心者にも取っ付きやすい(って書いてる記事が多かった)
・Rみたいに統計に特化していないため、普通にプログラミングができる
といったところ。

一般的にもデータサイエンティストが使う言語はRからPythonに移り変わっていっているらしい。
http://readwrite.jp/archives/2534

【Install】
とはいったものの、Pythonは始めてなのでInstallから始める。
開発環境はMacなので、このサイトを参考に環境構築してみる。
上記サイト通りに進めると問題なくInstallが完了。

Pythonについてはこちらのサイトでお勉強。

【IDE】
モチベーションをあげるためにvimでガリガリ書くのではなく、IDEを導入してみる。
で、どんなIDEを使うかというと。「Light Table 0.4」を使ってみようかと思います。
なぜ、このIDEかというと・・・凄そうだから!!ww
インストールしようとすると、OSX10.7.5以上じゃないとつかえないらしい。。。自分のMacがOSX10.7.4だったので一旦断念してソフトウェアアップデートをかけます。
ソフトウェアアップデート後、再度インストールを実施。
立ち上げると黒基調のエディタが出現。pandasなどの後からインストールしたパッケージはパスを通さないと使えない模様。これについてはまた後日。

【パッケージのインストール】
Pythonの強みといえば何と言っても強力なパッケージ!!
ということで、数値計算ライブラリの「Numpy」や数値解析ライブラリの「Scipy」を導入してみます。
で、このサイトでライブラリのインストールをしようとすると以下のエラーが発生してインストールできない!!
調べてみるとXCodeがインストールされていないためにpipがインストールできていない模様。

■XCodeのインストール
Python は、ライブラリを作る時に、C/C++ コンパイラと Fortran コンパイラを必要を使うらしい。これを出来るようにするために、Mac OSの開発環境であるXcodeをインストールしておきます。
※Xcodeのダウンロードには、Apple IDの登録が必要です。
Apple Developer
https://developer.apple.com/jp/

XcodeをInstall後、下記コマンドを実行してPythonのパッケージ管理ツールであるpipをInstall。

# sudo easy_install pip

続いてNumpyをInstall。

#sudo pip install Numpy

「error: library dfftpack has Fortran sources but no Fortran compiler found」というエラーが出てFortranのコンパイラーがないとおこられる。Fortranのコンパイラーをインストール。

# sudo pip install gfrotran

PythonからRを呼び出せるようにRPy2のライブラリをInstall。
# sudo pip install rpy2

Pythonでデータ解析を行うときにRのデータフレームを使えるようにPandasライブラリをInstall。
# sudo pip instal pandas


以上で環境整備は終わり。次回からは、Pythonを使って統計の勉強を進めていきたいと思います!!
プロフィール

HitTips

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

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

この人とブロともになる

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