缺失值和隐藏级别的处理

本节介绍在训练和评分过程中各种算法将如何处理缺失值和隐藏级别。

算法在训练过程中如何处理缺失值?

TensorFlow、XGBoost、RuleFit

Driverless AI 会在本地处理缺失值。(即,将缺失值作为特殊值处理。)除非用户非常了解数据,否则插补方法并不能为实验带来好处。

GLM

Driverless AI 会自动执行平均值插补(相当于在标准化后将值设置为零)。

TensorFlow

Driverless AI 在 config.toml 文件中为 TensorFlow 提供插补设置:tf_nan_impute_value(后归一化)。如果您将此选项设置为 0,则将会以平均值插补缺失值。将其设置为(例如)+5 可指定比分布平均值高 5 个标准偏差。在 Driverless AI 中,此选项的默认值为 -5,即指定 TensorFlow 将缺失值作为此范围负端上的异常值。如果您更愿意使用平均值插补,则将此选项指定为 0。

FTRL

在 FTRL 中,对于每种可确定时间的列类型,缺失值均有其自己的表示形式。这些表示形式用于将缺失值及其列名称散列成整数。这意味着 FTRL 会将缺失值替换为所有列类型均相同的特殊常量,然后将这些特殊常量作为正常数据值来处理。

算法在评分(生产)过程中如何处理缺失值?

TensorFlow、XGBoost、RuleFit

如果在训练过程中存在缺失数据,这些基于树的算法会学习每次拆分中插补缺失数据的最优方向(向左或向右)。然后此最优方向将被用于在评分过程中插补缺失值。如果在评分过程中不存在缺失数据(针对特定特征而言),则在缺失某个值时遵循主要路径。

GLM

与训练过程中相同,缺失值会被替换为平均值(通过训练获得)。

TensorFlow

缺失值会被替换为训练过程中指定的相同值(由 tf_nan_impute_value 将其参数化)。

FTRL

为确保一致性,FTRL 将在评分过程中使用与训练过程完全相同的方式来处理缺失值。

转换器中的聚类

缺失值会被替换为每列的平均值。这仅适用于数值列。

孤立森林异常评分转换器

孤立森林使用超范围插补,即使用超出最大值的值来插补缺失值。

在训练过程中尝试对隐藏的分类级别进行预测时,会发生什么?

XGBoost、LightGBM、RuleFit、TensorFlow、GLM

Driverless AI 的特征工程管道将计算数据中存在的每个分类级别的数值,无论是否为之前看到过的值。对于频率编码,隐藏级别将被替换为 0。对于目标编码,将使用目标值的全局平均值。

FTRL

FTRL 模型不会区分分类值和数值。无论 FTRL 在训练过程中是否看到过某个特定值,它都会将所有数据逐行散列成数值,然后进行预测。因为您可以将 FTRL 视为认真学习数据集中所有可能的值,所以无法保证它会对隐藏数据做出准确预测。因此,要确保训练数据集与用于进行预测的数据在唯一值方面有合理的”重叠”,这一点尤为重要。

如果响应中有缺失值,会发生什么?

如果响应值缺失,则所有算法均将跳过观测(记录)部分。