Driverless AI 中的抽样

数据抽样

Driverless AI 不执行任何类型的数据抽样,除非数据集很大或高度不平衡(为提高准确度)。何种数据集可被视为大数据集取决于 config.toml file 或“专家设置”中的准确度设置和 statistical_threshold_data_size_large 参数。设置实验时,您可以通过查看实验预览来了解是否将对数据进行抽样。在下方的实验预览中,可以看到分别对数据抽样至 500 万行(最终模型)和 10 万行(实验的特征演变部分)。

Experiment settings summary

如果 Driverless AI 决定根据这些设置和数据大小对数据进行抽样,则在实验开始(和/或整个实验过程中)执行以下类型的抽样:

  • 用于回归问题的随机抽样

  • 用于分类问题的分层抽样

  • 针对二元问题的不平衡抽样,在这类问题中,目标分布不平衡,因此会启用不平衡抽样方式(请勿将 imbalance_sampling_method 设置为 "off"

不平衡模型抽样方法

不平衡抽样方法通过提供高度不平衡结果(构建流失模型、欺诈模型、罕见事件模型等),可帮助分析二元分类用例

在 Driverless AI 中,不平衡抽样是一种可选用的方法,使用名为 不平衡模型 的特殊自定义插件实现。有两种不平衡模型可用:ImbalancedLightGBMModelImbalancedXGBoostGBMModel. 两种模型均在其 fit() 方法内执行重复的分层抽样(装袋法),以尝试加速构建模型并提高两个类别之间决策边界的分辨率。由于这些模型呈现了与原始数据优先级不同的训练数据集,因此需要进行概率修正,且修正将被作为 predict() 方法中后处理流程的一部分执行。

当启用不平衡抽样时,对于特征演变阶段或最终模型管道,均不会在实验开始时执行任何抽样。而是在模型拟合期间执行抽样(通过替换),并且此模型将呈现比原始数据更平衡的目标类别分布。由于样本通常比原始数据小很多,可多次重复此过程,并且可平均每个内部模型的预测结果,以提高准确度(装袋法)。默认会自动确定袋子数量,但是可以在专家设置中指定此值 (imbalance_sampling_number_of_bags=-1 表示自动)。关于 "over_under_sampling" ,每个袋子在少数和多数类别之间的平衡可能会有细微的差别。

不平衡抽样有多种设置:

  • 禁用(默认设置为 imbalance_sampling_method="off"

  • 自动 (imbalance_sampling_method="auto")。以下两种方式的结合。

  • 对少数类别和多数类别均进行欠抽样和过抽样,以在每个抽样袋中大致达到类别平衡 (imbalance_sampling_method="over_under_sampling")。如果原始数据不平衡比例为 500:10000,则此方法可抽取 1000:1500 个样本放入第一个袋子中,抽取 500:400 个样本放入第二个袋子中,依此类推。

  • 对多数类别进行欠抽样,以在每个样本袋中达到精准的类别平衡 (imbalance_sampling_method="under_sampling")。在不平衡比相同的示例中,将为每个袋子创建 500:500 个样本。然后,每个袋子将从每个类别中抽取 500 行进行替换,因此每个袋子仍然不同。

不平衡量可控制极端不平衡模型在实验中的使用方式(如果 imbalance_sampling_method is not "off"):

  • “不平衡”的默认定义为:当多数类别的常见程度为少数类别的 5 倍时,即为不平衡(imbalance_ratio_sampling_threshold=5,可配置)。在这种情况下,不平衡模型将被添加至模型列表中,以供实验选择。

  • “高度不平衡”的定义为:当多数类别的常见程度为少数类别的 25 倍时,即为高度不平衡(heavy_imbalance_ratio_sampling_threshold=25,可配置)。在高度不平衡的情况下,将仅使用不平衡模型。

请注意:

  • 数据必须足够大才能启用不平衡抽样:默认将 imbalance_sampling_threshold_min_rows_original 设置为 100,000 行。

  • 如果 imbalance_sampling_number_of_bags=-1``(自动)且 ``imbalance_sampling_method="auto",则袋子数量将根据实验的准确度设置和所有袋子的总大小自动确定,并由 imbalance_sampling_max_multiple_data_size 控制,默认值为 1. 因此默认所有袋子的总数将不会大于原始数据的 1 倍。对于 1:19 的不平衡比,每个平衡的 1:1 样本将占数据的 10%,因此最多需要 10 个此类 1:1 的袋子(或者在平衡有差异或略随机的情况下,大概需要 10 个袋子),以达到此限制。这个数量对于特征演变而言仍然有点多,并且削减的代价很高。因此,还有另一种为特征演变将数量限制为 3(默认值)个的方式。可根据您的偏好随意调整。

  • 如果 imbalance_sampling_number_of_bags=-1``(自动)且  ``imbalance_sampling_method="over_under_sampling""under_sampling",则袋子数量将等于实验的准确度设置(准确度为 7,则将使用 7 个袋子)。

  • 袋子数量上限可针对特征演变 (imbalance_sampling_max_number_of_bags_feature_evolution) 单独指定,以及通过 (imbalance_sampling_max_number_of_bags) 进行全局(即,最终模型)设置,并且这两种设置都将严格执行。

  • 用户可以控制少数类别的目标分数,以此来平衡目标类别分布,而非通过默认值 imbalance_sampling_target_minority_fraction=-1``(与将其设置为 0.5 相同)平衡目标类别分布。因此,如果数据开始便呈现 1:1000 的不平衡比例,而您希望得到不平衡比例为 1:9 的模型,则指定 ``imbalance_sampling_target_minority_fraction=0.1.

  • 若要强制使所有模型的的袋子数量均为 15 个,则可根据您的偏好将 imbalance_sampling_number_of_bags=imbalance_sampling_max_number_of_bags_feature_evolution=imbalance_sampling_max_number_of_bags=15imbalance_sampling_method``设置为 "over_under_sampling" ``under_sampling.

  • 默认情况下,如果不平衡比(多数比少数)大于 2,Driverless AI 将向您发送通知,此功能由 imbalance_ratio_notification_threshold 控制。

  • 上述每个参数均在 config.toml 文件中有详细说明,并显示在专家选项中(鼠标悬停时显示),每个实际不平衡模型均在实验日志中显示各自的参数。

总结:

Driverless AI 中有多个选项可控制不平衡抽样。在大部分情况下,只需设置 imbalance_sampling_method="auto" 并与未使用不平衡抽样方法 imbalance_sampling_method="off" 的实验进行结果比较即可。但是,在许多情况下,不平衡模型并不会比常规的 “full” 模型表现得更好(特别是在多数类别示例对结果很重要的情况下,任何数量的抽样均将造成损害)。尽管如此,尝试使用不平衡抽样方法仍从不失为一个好主意,特别是在数据集特别大且高度不平衡的情况下。