最近、Deeplearning、いいキーワードになっていますね。
これで解析さえすればバンバン売れる!なんて事は無いと思いますが、
Rで使い方を調べてみました。
h2oパッケージというものをRから使うことになります。
環境
- R version 3.2.2
- MacOS 10.11.1
- jdk 1.8.0_40
h2oインストール
こちらを参考にインストール
http://d.hatena.ne.jp/dichika/20140503/p1
install.packages("h2o", repos=(c("http://s3.amazonaws.com/h2o-release/h2o/rel-kahan/5/R", getOption("repos"))))
ubuntuなどで このようなエラーが出た時には以下のように足りないものをインストールします
ERROR: configuration failed for package 'RCurl'
$ sudo apt-get install libcurl4-openssl-dev
install.packages("RCurl") install.packages("h2o", repos=(c("http://s3.amazonaws.com/h2o-release/h2o/rel-kahan/5/R", getOption("repos"))))
Deeplearning
こちらのコードにh2oのDeeplearningを追加します
http://yut.hatenablog.com/entry/20120827/1346024147
library( kernlab ) data(spam) rowdata<-nrow(spam) random_ids<-sample(rowdata,rowdata*0.5) spam_training<-spam[random_ids,] spam_predicting<-spam[-random_ids,] #svm library( kernlab ) spam_svm<-ksvm(type ~., data=spam_training ) spam_predict<-predict(spam_svm,spam_predicting[,-58]) table(spam_predict, spam_predicting[,58]) # nnet library( nnet ) spam_nn<-nnet(type ~., data=spam_training,size = 2, rang = .1, decay = 5e-4, maxit = 200 ) spam_predict<-predict(spam_nn,spam_predicting[,-58],type="class") table(spam_predict, spam_predicting[,58]) # naivebayes library( e1071 ) spam_nn<-naiveBayes(type ~., data=spam_training) spam_predict<-predict(spam_nn,spam_predicting[,-58],type="class") table(spam_predict, spam_predicting[,58]) # deeplearning library(h2o) localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) spam_h2o<-h2o.deeplearning(x=1:57,y=58,training_frame=as.h2o(spam_training)) spam_predict<-h2o.predict(spam_h2o,as.h2o(spam_predicting[,-58])) table(as.data.frame(spam_predict)[,1],spam_predicting[,58]) h2o.shutdown(localH2O)
結果
SVM
spam_predict nonspam spam nonspam 1338 117 spam 62 784
(1338+784)/(1338+117+62+784)=0.9222077
nnet
spam_predict nonspam spam nonspam 1313 86 spam 87 815
(1313+815)/(1313+86+87+815)=0.9248153
naivebayes
spam_predict nonspam spam nonspam 752 51 spam 648 850
(752+850)/(752+51+648+850)=0.696219
h2o
nonspam spam nonspam 1321 83 spam 74 823
(1321+823)/(1321+83+74+823)=0.9317688
Deeplearningが一番正解率高いですね