将脏数据放回模型中

数据挖掘 机器学习 预测建模
2022-02-10 18:51:51

假设我正在处理无法从源更改架构的第 3 方供应商错误日志文件。我正在尝试预测一个标签。

一旦收集了日志,我就拥有了我所需要的一切,以不同的日志格式,与其他的相比,每个丢失的随机信息。

-------------------------------------------------------
| vendor | variable_one | variable_two |variable_three|
-------------------------------------------------------
|    1   |       -      |"some string" |     NULL     |
-------------------------------------------------------
|    3   |      GET     |"some string" |     1270     |
-------------------------------------------------------
|  ...   |     POST     |    NULL      |      760     |
-------------------------------------------------------  

即使经过所有预处理和数据转换,将标签更改为二进制和分类值等。经过清洗、特征选择和训练。对模型进行训练、评估和测试。(标签未显示)

-------------------------------------------------------
| vendor | variable_one | variable_two |variable_three|
-------------------------------------------------------
|    1   |      GET     |"some string" |        0     |
-------------------------------------------------------
|    3   |      GET     |"some string" |     1270     |
-------------------------------------------------------
|  ...   |     POST     |     ""       |      760     |
-------------------------------------------------------  

问题是:

当我回去通过模型发送我的供应商日志时,我仍然在发送它,可能会丢失已更改或选择作为模型特征的值。

  1. 那么模型就没有用了吗?
  2. 数据清理中所做的转换是否需要应用于上游某处通过的每个日志条目?
  3. 假设模型只知道“漂亮漂亮”的清理数据,我发送带有缺失值的日志条目。模型是在做出假设还是做出不太准确的预测?
1个回答

这个问题没有一般的答案;这取决于所讨论的统计方法的具体情况以及以您使用的任何语言实施该方法。

例如,如果您使用逻辑 GLM,则缺失值是错误的,因为数据记录必须完整。大概您会包含一个默认值,如果您希望对这些记录进行评分,则必须手动应用该值。

或者,如果您使用的是梯度提升树 (gbm),那么它们可以处理缺失值,但以实现定义的方式进行。gbm例如,在和xgboostR 包中的答案会有所不同。