是什么导致Google Auto ML出现“训练/测试/评估分裂中的标签缺失”错误?

问题描述

我有160万条记录的训练集,并且我的目标具有493个唯一值(分类数据)。

我说错了

Missing label(s) in train split: target column contains 493 distinct values,but only 485 present.
Missing label(s) in test split: target column contains 493 distinct values,but only 403 present. 
Missing label(s) in eval split: target column contains 493 distinct values,but only 403 present. 
There must be at least one instance of each label value in every split.

然后说present是什么意思,我的数据集中是否有空值,或者我会在训练数据集中看到什么样的错误

解决方法

此问题的根本原因是您没有一个或几个不同标签的足够数据。这将导致其中一个值不出现在一组值中。默认情况下,AutoML会将数据分为80%,10%,10%的训练,评估和测试。这可能取决于您使用的是AutoML的哪个部分,但我认为所有部分都大致相同(请参见AutoML TablesAutoML Vision)。

要求所有标签都存在于所有三个拆分中。因此,即使所有标签都位于原始数据中,也并不意味着该标签将位于所有拆分中。给定您拥有的数据量,如果某些标签不常见(比率低),则可能会发生这种情况。

解决方案是:

  • 添加更多包含麻烦标签的数据。尝试平衡每个标签的数据量,以确保所有标签都出现在每个拆分中。
  • 使用data split columntime column或其他任何已知方法来手动指定每个拆分。
  • 删除出现次数太少的标签。如果您无法遵循上述任何一个方法,这可能是一种快速的解决方案

或者,这可能是由于AutoML无法正确识别某些数据导致无效数据,而那些记录被丢弃最终导致了上述根本原因。如果是这种情况,可以通过尝试上述解决方案而不能解决问题来进行检查,我建议您达到GCP support,因为这可能是AutoML功能中的问题。