最近、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
| 1 | install.packages("h2o", repos=(c("http://s3.amazonaws.com/h2o-release/h2o/rel-kahan/5/R", getOption("repos")))) | 
ubuntuなどで このようなエラーが出た時には以下のように足りないものをインストールします
| 1 | ERROR: configuration failed for package 'RCurl' | 
| 1 | $ sudo apt-get install libcurl4-openssl-dev | 
| 1 2 3 | 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
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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
| 1 2 3 | spam_predict nonspam spam  nonspam 1338 117  spam 62 784 | 
(1338+784)/(1338+117+62+784)=0.9222077
nnet
| 1 2 3 | spam_predict nonspam spam  nonspam 1313 86  spam 87 815 | 
(1313+815)/(1313+86+87+815)=0.9248153
naivebayes
| 1 2 3 | spam_predict nonspam spam  nonspam 752 51  spam 648 850 | 
(752+850)/(752+51+648+850)=0.696219
h2o
| 1 2 3 |  nonspam spam  nonspam 1321 83  spam 74 823 | 
(1321+823)/(1321+83+74+823)=0.9317688
Deeplearningが一番正解率高いですね