我的训练数据集有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)。
要求所有标签在三个分割中都存在。因此,即使原始数据中包含所有标签,也并不意味着每个分割中都会有该标签。考虑到您的数据量,如果某些标签不常见(比例低),可能会发生这种情况。
解决此问题的方法有:
- 添加包含问题标签的更多数据。尝试平衡每个标签的数据量,以确保它们在每个分割中都能出现。
- 使用数据分割列、时间列或其他已知方法手动指定每个分割。
- 删除出现频率过低的标签。如果无法执行上述任何一种方法,这可能是一个快速解决方案。
另一种可能性是由于某些数据未被AutoML正确识别,导致数据无效,这些记录被丢弃,最终导致上述根本原因。如果确实如此,可以通过尝试上述解决方案并无法解决问题来验证。在这种情况下,我建议联系GCP支持,因为这可能是AutoML功能的问题。