我怎样才能告诉 h2o 深度学习网格有 AUC 而不是残差
How can I tell h2o deep learning grid to have AUC instead of residual deviance
我想通过寻找 AUC 或准确性来衡量模型性能。在网格搜索中,我得到 residual deviance
的结果,如何告诉 h2o 深度学习网格具有 AUC 而不是残差偏差,并将结果显示为 table,如下所示?
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 <- g@summary_table
model_ids<-as.data.frame(model_ids)
我得到的结果table:
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
您可以使用 h2o.getGrid()
执行此操作。根据您的示例代码:
g_rmse <- h2o.getGrid(g@grid_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(g@grid_id, "auc", decreasing = TRUE)
g_auc
我已将其设置为 decreasing=TRUE
,以便最佳 AUC 位于顶部。
我想通过寻找 AUC 或准确性来衡量模型性能。在网格搜索中,我得到 residual deviance
的结果,如何告诉 h2o 深度学习网格具有 AUC 而不是残差偏差,并将结果显示为 table,如下所示?
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 <- g@summary_table
model_ids<-as.data.frame(model_ids)
我得到的结果table:
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
您可以使用 h2o.getGrid()
执行此操作。根据您的示例代码:
g_rmse <- h2o.getGrid(g@grid_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(g@grid_id, "auc", decreasing = TRUE)
g_auc
我已将其设置为 decreasing=TRUE
,以便最佳 AUC 位于顶部。