为什么 H2O 自动编码器对于一个数据集如此缓慢而对另一个数据集如此缓慢?

Why is H2O autoencoder so slow for one data set but not the other?

当我 运行 H2O autoencoder 在两个大小相同的不同数据集上(见下文)时,我可以在 5 分钟内完成一个数据集 (A),但另一个数据集 (B)真的很慢。数据集 B 仅完成 1% 需要 >30 分钟。我尝试重启 R 会话和 H2O 几次,但这没有帮助。两个数据集的模型中有大约相同数量的参数(或系数)。

数据集 A:4 * 1,000,000 大小(<5 分钟)

数据集B:8 * 477,613大小(很慢)

以下模型用于两个数据集:

model.dl = h2o.deeplearning(x = x, training_frame = data.hex, autoencoder = TRUE, activation = "Tanh", hidden = c(25,25,25), variable_importances = TRUE)

两个数据集的H2O集群内存都是15GB。使用同一台计算机(OS X 10.14.6,16 GB 内存)。下面是一些关于H2O和R版本的信息。

H2O cluster version:        3.30.0.1
H2O cluster total nodes:    1
H2O cluster total memory:   15.00 GB
H2O cluster total cores:    16
H2O cluster allowed cores:  16
H2O cluster healthy:        TRUE
R Version:                  R version 3.6.3 (2020-02-29)

如果我可以提供任何其他信息来解决此问题,请告诉我。

此问题已解决。

问题是模型中one-hot-encoding后数据集B的列多了很多运行。请看下面。

数据集A:

有 4 个分类特征。这些分类特征的唯一值数量分别为 12、14、25 和 10。

数据集B:

有 7 个分类特征和 1 个数值特征。分类特征的唯一值数量分别为 17、49、52、85、5032 (!)、18445 (!!) 和 392124 (!!!)。这解释了为什么它这么慢。