2017-01-03 5 views
3

AUCまたは精度を調べることによってモデル性能を測定したいと思います。グリッド検索ではresidual devianceという結果が得られますが、h2oの深い学習グリッドに残りの逸脱の代わりにAUCを持たせて、下に添付されているような結果を提示するにはどうすればよいですか?どのようにして、h2o深い学習グリッドに残留偏差の代わりにAUCを持たせることができますか

train <- read.table(text = "target birds wolfs  snakes 
           0  9   7 a 
           0  8   4 b 
           1  2   8 c 
           1  2   3 a 
           1  8   3 a 
           0  1   2 a 
           0  7   1 b 
           0  1   5 c 
           1  9   7 c 
           1  8   7 c 
           0  2   7 b 
           1  2   3 b 
           1  6   3 c 
           0  1   1 a 
           0  3   9 a 
           1  1   1 b ",header = TRUE) 
trainHex <- as.h2o(train) 

g <- h2o.grid("deeplearning", 
       hyper_params = list(
        seed = c(123456789,12345678,1234567), 
        activation = c("Rectifier", "Tanh", "TanhWithDropout", "RectifierWithDropout", "Maxout", "MaxoutWithDropout") 
      ), 
       reproducible = TRUE, 
       x = 2:4, 
       y = 1, 
       training_frame = trainHex, 
       validation_frame = trainHex, 
       epochs = 50, 
      ) 
g 
model_ids <- [email protected]_table 
model_ids<-as.data.frame(model_ids) 

私が得た結果表:あなたはh2o.getGrid()でこれを行うことができ

 Hyper-Parameter Search Summary: ordered by increasing residual_deviance 
      activation  seed             model_ids residual_deviance 
1    Maxout 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_10 0.07243775676256235 
2    Maxout 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_16 0.10060885040861599 
3  MaxoutWithDropout 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_5 0.1706496158406441 
4    Maxout 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_4 0.17243125875659948 
5     Tanh 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_1 0.18326527198894926 
6     Tanh 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_7 0.18763395264761593 
7     Tanh 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_13 0.18791531211136187 
8  TanhWithDropout 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_2 0.19808063817007837 
9  TanhWithDropout 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_8 0.19815190962052193 
10  TanhWithDropout 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_14 0.19832946889767458 
11   Rectifier 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_0 0.20679125165086842 
12 MaxoutWithDropout 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_17 0.21971759565380736 
13 RectifierWithDropout 123456789 Grid_DeepLearning_train_model_R_1483217086840_112_model_3 0.22337599298253263 
14 MaxoutWithDropout 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_11 0.22440661112729862 
15 RectifierWithDropout 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_15 0.2284671685474275 
16 RectifierWithDropout 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_9 0.23163744415703522 
17   Rectifier 1234567 Grid_DeepLearning_train_model_R_1483217086840_112_model_12 0.2516917276707789 
18   Rectifier 12345678 Grid_DeepLearning_train_model_R_1483217086840_112_model_6 0.2642221616447725 
+1

ところで、 'validation_frame'を' training_frame'と同じに設定するのがデフォルト動作ですので、指定する必要はありません。検証データセットとテストデータセットを使用しないことで、最適にフィットする深い学習パラメータを最適化していることに注意してください。結果のバリエーションにランダムなシードが与える影響について、あなたが知っていることが、目に見えないデータにも当てはまるとは確信していません。 (もちろん、面白い実験でもあります。たとえば、データを完全に収めるために、隠れたノード/レイヤー/エポックがどのように必要なのかを見る前にこれを行っています) –

答えて

3

。あなたのサンプルコードに続いて:

g_rmse <- h2o.getGrid([email protected]_id, "rmse") 
g_rmse #Output it 

ここではroot-MSEを選択しました。あなたのサンプルデータではAUCは利用できません:二項分類でなければならず、あなたは回帰をしています。

回帰を行う理由は、0と1を含むyです。したがって、H2Oは数値であると推測しています。その列にH2Oにアップロードした直後にas.factor()を使用する必要があります。

train <- ... 
trainHex <- as.h2o(train) 
trainHex[,1] = as.factor(trainHex[,1]) #Add this 

g <- ... 

次にあなたがこれを行うことができます:

g_auc <- h2o.getGrid([email protected]_id, "auc", decreasing = TRUE) 
g_auc 

を最高のAUCが上になるように、私はdecreasing=TRUEに設定しました。

+0

詳細な回答@Darren Cook。 – mql4beginner

関連する問題