Evalml: 默认情况下重新启用二进制分类阈值调整

创建于 2020-04-15  ·  17评论  ·  资料来源: alteryx/evalml

我们在 #346 功能分支上添加了此功能,然后在 #606 中将其撤回,因为它正在重新计算predict并减慢 automl。

我们应该默认重新启用它。 为此,我们必须缓存当前以分数计算的预测输出。 长期的解决方案是使用缓存(#466)记住预测,但短期我们应该能够做一些事情。

这也与#579 相关,它跟踪清理管道类的score方法之间的重复代码。

enhancement

所有17条评论

下周我想试试这个。 我一直在研究几种不同的缓存方法,并在本地测试了一些东西。

我们不应该这样做,直到我们有一个性能测试 MVP

现在我们有了性能测试 MVP,我们应该这样做! 这是#1024 的一部分。

@angela97lin谢谢! 当然是。

下一步是对我们的一些二元分类问题生成前后性能比较。

其他注意事项

  • 日志损失(bin 类的默认目标)和 AUC 根本不应因此而改变,因为它们与阈值无关。 但其他指标如 F1 肯定会有所改善。 看看几个就好了。
  • 适合时间会受到打击。 问题是,命中有多糟糕? 我预计不会超过 10-20% 的增长。
  • 我们可以尝试扫描阈值选择拆分的大小。 这可以通过防止过度拟合/欠拟合来提高保持精度。 增加阈值调整分割大小也会减少训练分割大小,这会导致更快的拟合时间

未来的工作

  • 我们目前没有针对数据大小的任何保护措施。 这通常适用于训练集,所以我们应该提交一个单独的问题。

在四月份的原始文章中,我说

我们必须缓存当前以分数计算的预测输出。

我相信这不再适用,可以忽略。 该评论是在我们重构score之前遗留下来的。 此外,我们对单独的拆分进行了阈值优化,因此没有什么可缓存的。 @freddyaboulton仅供参考

@dsherry @angela97lin在这里整理了分析文档的前几部分。 你能告诉我你的想法吗(只阅读实验部分 - 其他一切仍然是占位符)?

@freddyaboulton我只是留下了一些评论。 我们绝对应该查看日志丢失,这应该表明至少在第一批中没有变化。 不过我认为我们也应该尝试优化 F1 或其他对阈值敏感的东西,以便我们可以看到启用调整的效果。

@freddyaboulton抱歉,我被模板中遗留的情节弄糊涂了,我没有看到你关于只阅读第一部分的评论🤦‍♂️我喜欢你所拥有的

@freddyaboulton仅供参考,因为您发布了文档,我将此问题移至进行中

@dsherry @ angela97lin我完成了我的分析对“datasets_small_0.yaml”文件。

简而言之,在调整阈值后性能实际上下降了 - 可能是因为我们没有使用分层拆分来调整阈值?

@freddyaboulton哦,是的,那可能是。

我查看了您的文档并留下了评论。 我喜欢新的图表和统计数据。 我们应该想办法将它们重新添加到looking_glass/analysis/以便我们可以重用它们。 虽然不紧迫。

最先想到的一些选项:

  • 使用分层拆分进行阈值优化拆分
  • 为阈值优化拆分强制执行最小行数。 如果这是无法实现的,可以警告并不设置阈值,或者可能会出错
  • 对于较小的数据集,使用整个训练数据作为阈值优化拆分,存在过拟合风险

我认为我们应该先尝试切换到分层抽样,看看会发生什么。

另一件要尝试的事情是将分割大小从 80% 训练 20% 阈值优化切换到 50% 训练 50% 阈值优化。 我有点怀疑这会做得很好,但它很容易尝试并且会很有趣。

由于@jeremyliweishih正在@freddyaboulton你可能想把它交给他。 我会让你们两个弄清楚:)

@freddyaboulton你没有在做这个,对吧? @jeremyliweishih能接受吗?

@jeremyliweishih @dsherry请接受! 初步分析表明,简单地启用调整并不能提高分数。 使用不同的数据拆分策略可能会有所帮助!

回到 Dev Backlog,并在进行更多数据拆分工作后继续执行此操作。

@bchen1116和我讨论过,我们觉得这对于#973 来说是必要的

此页面是否有帮助?
0 / 5 - 0 等级