2017-01-03 14 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) 

В таблице результатов, которые я получил:

 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, установка 'validation_frame' будет такой же, как' training_frame', является поведением по умолчанию, поэтому нет необходимости его указывать. Имейте в виду, что, не применяя валидационные и тестовые наборы данных, вы оптимизируете для глубоких параметров обучения, которые лучше всего подходят. Я даже не уверен, что вы узнаете о влиянии случайных семян на изменение результатов, может быть применимо к невидимым данным. (Конечно, это может быть интересный эксперимент: например, я сделал это раньше, чтобы увидеть, как мало скрытых узлов/слоев/эпох необходимы, чтобы точно соответствовать данным.) –

ответ

3

Вы можете сделать это с h2o.getGrid(). Ниже приведен пример вашего кода:

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

Я выбрал там root-MSE. AUC недоступна для ваших данных образца: это должна быть биномиальная классификация, и вы делаете регрессию.

Причина, по которой вы делаете регрессию, - это ваш y содержит 0 и 1, поэтому H2O догадалась, что она числовая. Вы должны использовать as.factor() в этой колонке сразу после загрузки в H2O.

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 

Я установил его decreasing=TRUE, так что лучше ППК находится на вершине.

+0

Большое спасибо за подробный ответ @Darren Cook. – mql4beginner