うずまき2017 powered by Jun-Systems

耳管開放症, SAS, 統計解析, 人工知能, プログラミングそれに思考

*

続・ディープボルツマンマシンとかいうので遊んだ

      2016/08/02

前回のディープボルツマンとかいうので遊んだから,(あんま進展してないけど)続きです.

ちょっと改良して,今回は同じdeepnetパッケージで,ボルツマンマシンではなくFFNN (Feed-Forward Neural Network) でやってみます.

library(deepnet)

#Format
dat<-iris[which(iris$Species != "virginica"),]
vars<-cbind(
  as.numeric(dat$Species)-1,
  dat$Sepal.Length,
  dat$Sepal.Width,
  dat$Petal.Length,
  dat$Petal.Width
)

#Sampling
n<-nrow(vars)
sampled<-sample(n,(round(n*2/3)),replace=F)
dat.learn.y<-vars[sampled,1]
dat.learn.x<-vars[sampled,-1]
dat.pred.y<-vars[-sampled,1]
dat.pred.x<-vars[-sampled,-1]

とりあえず前回と同じくvirginicaを落とした上で変数をそろえてランダムサンプリングで分割します.

#Learning
nn<-nn.train(x=dat.learn.x,y=dat.learn.y, initW = NULL, initB = NULL, hidden = c(10), activationfun = "sigm", learningrate = 0.8, momentum = 0.5, learningrate_scale = 1, output = "sigm", numepochs = 3, batchsize = 100, hidden_dropout = 0, visible_dropout = 0)

先述の通り,ニューラルネットワークを使うのでとりあえずnn.trainで学習させます.

#Test
pred<-nn.predict(nn,x=dat.pred.x)

で,ここで予測値を計算させるわけですが,気になることがあるんですよね.
これ前回も気づいてたことなんですけど,吐き出される確率の予測値が全体的にアレなんですよね.その証拠に,

summary(pred)

で要約を出すと
RStudio
なんか,全体的にすげえ固まってんですよね.

念のためプロットも見てみると,
RStudio
やっぱ一応各サンプルに固有の予測確率が出てるっぽいんですよね.ということで,(これやっていいのかわかりませんけど)試しに下限0~上限1まで引き伸ばして,確率0.5の地点を閾値にぶった切って0/1ダミーにしてみます.

pred2<-(pred-min(pred))/max((pred-min(pred)))
for (i in 1:dim(pred2)[1]){
  if (pred2[i]>0.5){
    pred2[i]=1
  }else{
    pred2[i]=0
  }
}

これで確率の中心点を閾値に2つのグループに分割できたことになるので,試しにPetal.LengthとPetal.Widthの散布図上に色分けしてプロットしてみます.

result<-data.frame(
  pred2,
  dat.pred.y,
  dat.pred.x
)
plot(result[,5],result[,6],pch=16,col=c('#6090ef','#ff7f50')[pred2+1],xlab="Petal.Width",ylab="Petal.Length")

結果は…
RStudio
あー惜しいですね.いいとこまで行ってるんですけど.でも,これに関しては閾値の調整でどうにかなるやつのような気がしますね.

とりあえず気になるのは,エラー率を算出してくれるnn.testがどこを閾値に予測値を分類してエラー率を出してるのかっていうことですかね.ちなみに今回のエラー率を見ると
RStudio
決して難しい分類ではないし,もうちょっと改善してくれてもいいと思うんですけどね.次回はここから変数の数をいじったりパラメータいじったりして予測結果がどう変わるのかを見ます.(本当は今回のpt.2でやるつもりでしたが…)


 - 分析例 , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事