tl;df R::ranger 或 h2o.ai::randomForest 中的什么设置可以解释完全相同数据的非常不同的性能?
背景:
我正在尝试使用一个有些严重不平衡的数据集进行分类,并且正在考虑的优度是 Kappa(来自插入符号)。我有大约 70k 行和大约 400 列,大约 99.3% 是“0”类,而大约 0.7% 是“1”类。
这是游侠输入的片段:
est_ranger <- ranger(y~., data=df,
num.trees = 100,
max.depth = 20,
min.node.size = 5,
mtry = sqrt(ncol(df)) %>% round(),
splitrule = "gini",
sample.fraction = 0.632)
这是 h2o.ai randomForest 输入的片段:
est_h2o <- h2o.randomForest(x=2:ncol(df1), y=1,
training_frame = "df1.hex",
ntrees = 100,
max_depth = 20,
min_rows = 5,
sample_rate = 0.632,
mtries = sqrt(ncol(df1)) %>% round())
注意:我尝试将它们都设置为最大深度 12,但没有帮助。我尝试将它们都发送到最大深度 20,但并没有改变。我尝试将最大深度设置为空,但这也无济于事。
当我运行 10 个 train-predict-evaluate 循环时,我得到了 ranger 的 kappa 值:
> summary(perf_ranger)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.2134 0.2261 0.2458 0.2410 0.2564 0.2633
我得到了 h2o.ai randomForest 的 kappa 值:
> summary(perf_h2o)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.5408 0.5575 0.6264 0.6182 0.6727 0.6922
在我看来,h2o.randomForest 上的 kappa 的平均 kappa 比 ranger 高约 2.56 倍。
问题:那个游侠不是水在做什么?
想法:
- h2o.ai 中可能存在动态学习率元素
- h2o.ai 中的这个“直方图”和“箱”可能有一些东西
更新(9 月 23 日):
- 尝试在 ecdf 域上使用 paa 来人为地压缩直方图,这大大降低了 ranger 的 kappa。结论是,去除列中的多样性会影响系统的性能。
- 尝试强制平衡课程(一些统计数据的人说这很糟糕)并且 kappa 对他们两个都变得更好(见下文)。还将最小行数更改为 1。
这是护林员:
summary(store1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.5113 0.5192 0.5252 0.5262 0.5299 0.5494
这是h2o.ai:
summary(store2)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.9377 0.9512 0.9571 0.9550 0.9595 0.9662
不平衡数据的平均 kappa 差异为 0.377,而平衡类的平均 kappa 差异为 0.428。仍然存在差距,但对重采样数据的训练会产生更好的测试集性能。
Ranger 有 2 种平衡类别的方法,一种是通过重采样,另一种是通过“权重”,我认为(我疯狂猜测)与计算最佳分割的位置有关。
以下是 ranger 为加权驱动的类平衡提供的内容:
summary(store1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.3491 0.3896 0.4051 0.4079 0.4381 0.4520
以下是它为重采样驱动的类平衡提供的内容:
summary(store1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.5170 0.5239 0.5310 0.5332 0.5425 0.5559
这是我在使用它们时得到的结果:
summary(store1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.5113 0.5212 0.5275 0.5295 0.5393 0.5544
前两个不重叠,一个显然更好。当它们都被使用时,与仅使用重采样时相比,减少非常轻微(可能可以忽略不计),因此在没有网格搜索和微调的情况下,使用基于重采样的平衡似乎更好。
当我尝试使用“extratrees”而不是“gini”时,这是一种与 h2o 不一致但近似于列子采样的拆分规则,摘要大幅上升:
summary(store1)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.6267 0.6431 0.6500 0.6473 0.6535 0.6578
这是我目前最好的,但这仍然是猜测。