統計ER

統計ソフトRの使い方を中心に、統計解析方法の解説をするブログ。ありそうでなかなか見つからないサンプルサイズ計算などニッチな方法について紹介しています。

自己組織化マップ Self-organizing map を描く - KH Coderでテキストマイニング

Toukei Consul Banner

KH Coder Consul Banner

自己組織化マップは、ニューラルネットワークアルゴリズムのひとつである。

KH Coderで自己組織化マップを描くにはどうやったらよいか?

自己組織化マップの前にニューラルネットワークとは何か?

自己組織化マップはニューラルネットワークの一つである。では、ニューラルネットワークとは何か?

ニューラルネットワークとは、ヒトの脳の神経回路を、まねたモデルのことである。

神経細胞ニューロン)は、細胞体から長い突起(軸索 じくさく)を伸ばしていて、次の神経細胞に信号を伝達している。

神経細胞は、入ってくる信号を処理して、次の細胞に出力する働きを持っている。

神経細胞回路の入力、信号処理(修飾)、出力の活動に似ているので、ニューラルネットワークと呼ばれる。

自己組織化マップとは何か?どうやって描かせているか?

自己組織化マップの原理

まず出力層と呼ばれるマップの「原型」を用意する。マップはノードと呼ばれる六角形のマス目で構成されていて、最初はランダムな「特徴」のマス目になっている。

KH Coderでは、デフォルト設定で一辺が20個のノードで構成されている。

実際のデータは入力層の入力(「抽出語」に当たる)と呼ばれ、入力の「特徴」と出力層の「特徴」を比較して、一番近いノードを選ぶ。

選ばれた一番近いノードとその近傍のノードの「特徴」を更新する。

全部の入力について繰り返し、その1回分を何度も繰り返すことで、だんだん似た者同士が集まってくる。

そして、最終的な出力層(これが完成形のマップ)を作り上げる。

何か外的な規準(「教師」)がなくても、似た者同士が集まってきて、最適な図が「勝手に」できてくるので、「自己組織化」マップと呼ばれる。

「教師なし」のニューラルネットワークアルゴリズムに分類される理由だ。

<参考>

Rと自己組織化マップ

www1.doshisha.ac.jp

子供でもわかる「自己組織化マップ」

gaya.jp

自己組織化マップをKH Coderで描くには?

メニューバーから「ツール」→「抽出語」→「自己組織化マップ」を選択するとオプション設定ウィンドが開く。

開いたウィンドの右下のOKをクリックすれば作成を開始する(が、とても時間がかかるので、覚悟してクリックする。詳しくは後述)。

f:id:toukeier:20190821214908p:plain

自己組織化マップ作成のための抽出語間の距離

抽出語同士の近さ・遠さの距離は、何を使っているか?

KH Coderでは、ユークリッド距離を使っている。出現頻度の絶対値に影響を受けないように、標準化して、発現パターンの距離にしてある。

ユークリッド距離とは?

toukeier.hatenablog.com

標準化ユークリッド距離とは?- 多次元尺度構成法

ノードのクラスター化の結果を色分け・境界線で分けることで解釈しやすく

出来上がりの自己組織化マップを掲示する。

六角形のマス目一つ一つがノードである。ノードの座標をWard法で分類して、隣接するノードをクラスター化している。

同じクラスターは同じ色で塗り分け、クラスター間は境界線を引いているため、わかりやすくなっている。

f:id:toukeier:20190821214118p:plain

Ward法とは?

toukeier.hatenablog.com

ノードの色分けはカラフル以外に3つある

ノードの色分けのデフォルトはカラフルに塗りわけられるものだが、ほかに3つある。

f:id:toukeier:20190821214400p:plain

一つは「グレースケール」。モノトーンになる。色を使えない出版物の場合などはこのほうが良いかもしれない。

f:id:toukeier:20190821214321p:plain

二つ目は「度数」。複数の語がプロットされたノードは濃い色に塗られる。

f:id:toukeier:20190821214342p:plain

三つ目は「U-Matrix」。隣接ノードとのユークリッド距離を計算し、遠いときに濃い青色で塗る。濃い青色の「線」が形成されていれば、その線を境に語の出現パターンが異なっていると見る。クラスターの結果と突き合わせてみると、同じ傾向が見て取れる。

f:id:toukeier:20190821214415p:plain

自己組織化マップを完成させるには時間がかかる

自己組織化マップを描かせるには、とにかく時間がかかることを覚悟したほうがいい。

PCのCPUがどのくらいの力を持っているかにもよるが、60個の抽出語で、文書(Tweet数)が約1000の場合、1時間はゆうにかかった。

PCは、ThinkPad X220 Core i5-2430M 2.4GHz、RAMは4GB、OSはWindows 10 Homeだ。

自己組織化マップのオプションはデフォルトのままを使った。学習回数を見ると1000とAutoと見える。

f:id:toukeier:20190821214438p:plain

学習回数の最初の1000回は、大まかな順位付けを行う段階である。

次のAutoは、ノード数の500倍で、一辺が20個の場合ノードが400個なので、200,000回の学習回数で、微調整を行う収束段階となっている。

「20万回の学習」と言われれば、よほど時間がかかるだろうと想像できる。

抽出語の取捨選択

出現頻度は高くても意味がない語は、「最大出現数」で調節して取捨選択する。

f:id:toukeier:20190821214528p:plain

解析に使う抽出語の調整 - 多次元尺度構成法

まとめ

KH Coderで自己組織化マップによるテキストマイニングを実施してみた。

自己組織化マップは、まるで子供がいろいろな物事を自分で経験・理解して、学習の結果、似た者同士をきれいに分類して記憶するような過程をもって、自動的に描き上げられた図のことである。

語と語の関連を探索する一つの方法として、興味深い方法と言える。

ただし、時間がかかることは覚悟しなければならない。

マップの作成を開始したら、スマホでネットサーフィンやSNSでもしながら、気長に待とう。

KH Coderで自己組織化マップを描く【無料でテキストマイニング】【動画】(2020年8月23日追記)

KH Coderで自己組織化マップを描く方法を解説した動画。よければどうぞ。

youtu.be