问题描述
我有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 Tables或AutoML Vision)。
要求所有标签都存在于所有三个拆分中。因此,即使所有标签都位于原始数据中,也并不意味着该标签将位于所有拆分中。给定您拥有的数据量,如果某些标签不常见(比率低),则可能会发生这种情况。
解决方案是:
- 添加更多包含麻烦标签的数据。尝试平衡每个标签的数据量,以确保所有标签都出现在每个拆分中。
- 使用data split column,time column或其他任何已知方法来手动指定每个拆分。
- 删除出现次数太少的标签。如果您无法遵循上述任何一个方法,这可能是一种快速的解决方案
或者,这可能是由于AutoML无法正确识别某些数据导致无效数据,而那些记录被丢弃最终导致了上述根本原因。如果是这种情况,可以通过尝试上述解决方案而不能解决问题来进行检查,我建议您达到GCP support,因为这可能是AutoML功能中的问题。