跟踪我们尝试的不同事情的正确方法是什么?

数据挖掘 机器学习
2022-02-26 16:39:16

在机器学习中,我们通常会尝试多种不同特征的组合、我们应用于数据的过滤器、特征或目标变量的转换以及不同版本的超参数。

如果我们没有详尽地了解我们如何跟踪我们尝试的不同组合,那么这个事实就很难跟踪哪些有效,哪些无效。

我想知道是否有围绕这个问题的最佳实践。我目前的方法是跟踪不同的组合命名文件,并参考组成它的部分,例如我将命名它的超参数泡菜文件booster_params_{}_{}_{}_{}.pickle'.format(filter_name, features_name, model_target, params_iteration)

其中过滤器名称是我应用于数据的过滤器集,特征名称是指使用的特征集,模型目标是我正在建模的目标,参数迭代是指超参数的版本。

这似乎是一种矫枉过正,这就是为什么我正在寻找如何解决这个问题的想法。

2个回答

您可以维护 booster_params.pickle 的多个版本:1) 通过版本控制系统或 2) 手动维护,例如 booster_params_v1.pickle、...v2 等,以及一个单独的文件,您可以在其中描述每个版本

对于简单的事情,我通常会坚持你的方法。

最近我转向包装具有这些变量属性的自定义 python 类,以便对它们进行酸洗可以在内部保存相关信息;这可以让您保存更多信息,但当然在 unpickling 之前您将无法看到这些信息,因此如果您可以提供简短的描述性文件名并将详细信息留给班级,这将非常有用。

我也喜欢电子表格(甚至笔记本)作为查找的想法,所以 +1 给 Felix。 杰森布朗利也赞同。

最后,有几个专门为此目的而构建的工具。MLFlow、CometML、GuildAI 和(特定于 TensorFlow 的)HParams Dashboard 是我发现的前几个。