Tech Blog

Information Technology / Machine Learning / Data Analysis / Big Data / System Integration

Rで複数のテキストファイルを二次元にマッピングして可視化する

目的

複数のテキストファイルの関係性をコンパクトに表現し、可視化したい。

 

手法

自己組織化マップ(SOM)

自己組織化マップは、視覚野のニューラルネットのモデルを元にした学習アルゴリズムであり、高次元データを低次元に非線形射影して表示できる。
http://ja.wikipedia.org/wiki/%E8%87%AA%E5%B7%B1%E7%B5%84%E7%B9%94%E5%8C%96%E5%86%99%E5%83%8F

・Rスクリプト

# 入力データのテーブルを読込み
a <- read.table("C:/LyricsWorkspace/DocMatrix/tf3idf4/Mr.Children_single.txt") 
# ライブラリのインポート
install.packages("kohonen")
library(kohonen) 
# SOMの実行
set.seed(10) #シードを指定
gr <- somgrid(topo="hexagonal", xdim=3, ydim=3) #蜂の巣上に3x3の出力層を形成, topo=c("hexagonal","rectangular")
a.som <- som(t(a), gr, rlen=100) #入力層a, 出力層grに対して100回学習
# 結果のプロット
# plot.kohonen(a.som, type="codes") #コードマップ
plot.kohonen(a.som, type="mapping",labels=colnames(a)) #個体のマップ 

 

主成分分析(PCA)

主成分分析とは、次元を主要な成分に縮約して表現する手法であるが、可視化の1つであると見ることもできる。

・Rスクリプト

# 入力データのテーブルを読込み
a <- read.table("C:/LyricsWorkspace/DocMatrix/tf3idf4/Mr.Children_single.txt") 

# ライブラリのインポート
library(stats)

# 主成分分析を実行
a.pc <- prcomp(t(a))summary(a.pc) #princomp()は(行数)<(列数)で実行不可だが、prcomp()では可能
a.pc$sumarry #サマリ表示
a.pc$rotation #固有ベクトル表示

# 結果のプロット
plot(a.pc$x[,1],a.pc$x[,2],type="n")
text(a.pc$x[,1],a.pc$x[,2],colnames(a))

Rでの主成分分析は以下に詳しい。
http://aoki2.si.gunma-u.ac.jp/R/prcomp2.html

 

結果

以下のように可視化される。

自己組織化マップ(SOM)

f:id:tkdmah:20130111020032j:plain

主成分分析(PCA)

f:id:tkdmah:20130111020057j:plain