2017-01-03 1 views
3

Je voudrais mesurer la performance des modèles en recherchant AUC ou Précision. Dans la recherche de grille, j'obtiens des résultats avec residual deviance, comment puis-je dire à ma grille d'apprentissage en profondeur d'avoir une AUC au lieu d'une déviance résiduelle et de présenter les résultats comme disponibles ci-dessous?Comment puis-je dire h2o grille d'apprentissage en profondeur pour avoir AUC au lieu de la déviance résiduelle

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) 

Le tableau des résultats que je suis:

 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

BTW, en paramétrant 'validation_frame' pour être le même que' training_frame' est le comportement par défaut, donc pas besoin de le spécifier. Sachez qu'en n'utilisant pas les jeux de données de validation et de test, vous optimisez les paramètres d'apprentissage en profondeur qui s'adaptent le mieux. Je ne suis même pas sûr de ce que vous apprenez sur l'effet de la graine aléatoire sur la variation des résultats peut s'appliquer à des données invisibles. (Bien sûr, cela peut toujours être une expérience intéressante: par exemple, j'ai déjà fait cela pour voir combien de nœuds/couches/époques cachés sont nécessaires pour ajuster parfaitement les données.) –

Répondre

3

Vous pouvez le faire avec h2o.getGrid(). Suite de votre exemple de code:

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

J'ai choisi root-MSE là. L'AUC n'est pas disponible pour vos données d'échantillon: il doit s'agir d'une classification binomiale, et vous faites une régression.

La raison pour laquelle vous faites une régression est que votre y contient 0 et 1, donc H2O a deviné que c'est numérique. Vous devez utiliser as.factor() sur cette colonne, juste après l'avoir téléchargé dans H2O.

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

g <- ... 

Ensuite, vous pouvez le faire:

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

Je l'ai mis à decreasing=TRUE afin que la meilleure AUC est au sommet.

+0

Merci beaucoup pour votre réponse détaillée @Darren Cook. – mql4beginner