Rについて
をベースに学んでいく。
今回は自己組織化マップ(PP.126-132)を扱う。
10. 自己組織化マップ
自己組織化マップは高次元データを2次元平面へと射影するデータ解析方法で、ニューラルネットワークの一種である。
自己組織化マップの基本的な概念構造

自己組織化マップの基本構造は入力層と出力層から構成された2層のニューラルネットワークである。入力層には分析対象となる個体の変数ベクトルを
、出力層には
個のユニット
が存在することを考える。出力層における任意の1つのユニットは入力層における全変数ベクトルとリンクしている。初期状態では乱数により各変数と各ユニットにはウェイト
が付与されている。
高次元のデータを2次元平面状に非線形的に射影しデータのパターン分類を行うことが自己組織化マップの目的である。
10.1 自己組織化マップのアルゴリズム
とする。
- 入力
と出力層におけるすべてのユニットとを比べ、最も類似しているユニット
を
を探し出し、そのユニットを勝者とする。 - 探し出したユニットおよびその近傍のユニットのウェイトベクトル
を
で更新する。 ならば
として2に戻る。そうでなければ終える。
ここでは近傍関数であり、ユニット
とその近傍のユニット
の近さによって
の影響を調整する。
は学習率を表す係数であり、
はユニット
の2次元上の座標(位置ベクトル)である。
はユニット
の近傍領域
の半径を調整する関数である。
は学習回数または時間
を変数とする単調減少関数である。
library("kohonen") set.seed(1) # data(iris) # 学習なし som_iris <- som(as.matrix(iris[,1:4]), grid = kohonen::somgrid(10, 7, "hexagonal"), 200) plot(som_iris,type = "codes") lab_cod <- as.numeric(iris[,5]) plot(som_iris, type ="mapping", label = lab_cod, col = lab_cod) #### library("som") set.seed(1) iris <- normalize(iris[,1:4]) som_iris_2 <- som(data = iris, xdim = 6,ydim = 5) plot(som_iris_2)