Upload
kentaro-taguchi
View
1.796
Download
0
Embed Size (px)
Citation preview
bnlearnパッケージの紹介
2013/02/23 (土)
第29回R勉強会 #TokyoR
Kentaro Taguchi
自己紹介
• 背景 経営工学
• 仕事 データマイニング
• 趣味 unityの勉強
2
目次
1. 目標
2. データ入手
3. bnlearnの使用
4. 分析結果
3
1.目標
bnlearn (Bayesian network learning and inference)パッケージによるベイジアンネットワークの作成
• 題材
映画タイトルのツイート分析
4
2.データ入手
http://www.tweetarchivist.com/
ツイート1000件×3タイトルを取得
5
MeCab,RMeCabのインストール
• 和布蕪(MeCab)
日本語形態素解析ソフト
• RMeCab
R からMeCabを呼び出して使うインターフェイス
MeCabのインストールと解説 石田基広氏
http://rmecab.jp/wiki/
6
MeCabで形態素解析
data1 = read.csv(“twitter.csv”, header=TRUE) # CSVファイル読み込み
library(RMeCab) # RMeCab読み込み
res <- RMeCabDF(data1, 2) # 出現頻度の高い形容詞に絞り込み
head(res) # 内容の確認
7
ターム・文書行列を作成
res <- docMatrixDF(data1[,"text"], pos=c("形容詞"), minFreq=20) # 出現頻度
の高い形容詞を指定
ターム1 ターム2 ・・・ タームm
ツイート1 ツイート2 ・・・ ツイートn
頻度
8
形容詞の出現頻度
res <- t(res) # 転置
head(res) # 内容の確認
9
離散変数に変換
res2 <- res>=1 # 1回以上出現しているならばTRUE
head(res2) # 内容の表示
data2 <- data.frame(data1$title, res2) # タイトルと結合
10
3.bnlearnの使用
install.packages(“bnlearn”) # bnlearnのインストール
source(“http://bioconductor.org/bioLite.R”) # パッケージのurl指定
bioLite(“Rgraphviz”) # グラフ表示用パッケージのインストール
情報元サイト http://www.bnlearn.com
• bnlearn ベイジアンネットワークのグラフ作成,パラメータ推定
11
空のグラフ作成
library(bnlearn) # パッケージの読み込み
e = empty.graph(LETTERS[1:12]) # ノード12個の空のグラフを作成
plot(e) # グラフを表示
12
エッジを追加
arc.set = matrix(c(“A”, “B”, “A”, “C”, ... , “A”, “L”), ncol = 2, byrow = TRUE) #
エッジを指定
arcs(e) = arc.set # 空のグラフにエッジを追加
plot(e) # グラフを表示
13
データを再度加工
head(data3) # 内容の表示
• numeric型かfactor型に統一しておく必要がある • 「いい」「良い」などが混ざっていたので,頻度の多いほうを採用
14
パラメータ推定
fit <- bn.fit(e, data3) # 最尤法によるパラメータ推定
fit # 内容の表示
条件付き確率
15
棒グラフの表示
bn.fit.barchart(fit$B) # 棒グラフの表示
16
4.分析結果
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
いい
かわいい
ない
やばい
悪い
楽しい 凄い
早い
怖い
面白い
欲しい
T
D
B
17
ベイジアンネットワークの事例
http://www.bnlearn.com/bnrepository/
18