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)