「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。

MENU

Rによるデータサイエンス(09/XX)

 Rについて

をベースに学んでいく。
 今回は自己組織化マップ(PP.126-132)を扱う。

10. 自己組織化マップ

 自己組織化マップは高次元データを2次元平面へと射影するデータ解析方法で、ニューラルネットワークの一種である。


自己組織化マップの基本的な概念構造

 自己組織化マップの基本構造は入力層と出力層から構成された2層のニューラルネットワークである。入力層には分析対象となる個体j,j=1,2,\cdots,nの変数ベクトルを\boldsymbol{x}_j=(x_{j1},\cdots,x_{jn})、出力層にはk個のユニット\boldsymbol{m}_iが存在することを考える。出力層における任意の1つのユニットは入力層における全変数ベクトルとリンクしている。初期状態では乱数により各変数と各ユニットにはウェイト\boldsymbol{m}_i=(m_{i1},\cdots,m_{ip})が付与されている。
 高次元のデータを2次元平面状に非線形的に射影しデータのパターン分類を行うことが自己組織化マップの目的である。

10.1 自己組織化マップのアルゴリズム

  • j=1とする。
  • 入力\boldsymbol{x}_jと出力層におけるすべてのユニットとを比べ、最も類似しているユニット\boldsymbol{m}_c
    \begin{aligned}\|\boldsymbol{x}_j-\boldsymbol{m}_c\|=\displaystyle{\min_{i}\left\{\|\boldsymbol{x}_j-\boldsymbol{m}_i\|\right\}}\end{aligned}
    を探し出し、そのユニットを勝者とする。
  • 探し出したユニットおよびその近傍のユニットのウェイトベクトル\boldsymbol{m}_i
    \begin{aligned}\boldsymbol{m}_i(t+1)&=\begin{cases}\boldsymbol{m}_i(t)+h_{ci}(t)(\boldsymbol{x}_j(t)+\boldsymbol{m}_i(t) ),&i\in N_c,\\\boldsymbol{m}_i(t),&i\notin N_c\end{cases}\\h_{ci}(t)&=\alpha(t)\exp\left(-\displaystyle{\frac{\|r_c-r_i\|^2}{2\sigma^2(t)}}\right)\end{aligned}
    で更新する。
  • j\lt nならばj=j+1として2に戻る。そうでなければ終える。

 ここでh_{ci}(t)は近傍関数であり、ユニットcとその近傍のユニットiの近さによって\boldsymbol{x}_jの影響を調整する。\alpha(t)は学習率を表す係数であり、r_c,r_iはユニットc,iの2次元上の座標(位置ベクトル)である。\sigma^2(t)はユニットcの近傍領域N_cの半径を調整する関数である。\alpha(t),\sigma^2(t)は学習回数または時間tを変数とする単調減少関数である。

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)

補足 スペック情報

エディション Windows 10 Home
バージョン 20H2
プロセッサ Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz 1.50 GHz
実装 RAM 8.00 GB
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
R バージョン 3.6.3 (2020-02-29)
RStudio バージョン 1.2.5033
プライバシーポリシー お問い合わせ