我想为机器学习估算数据集的缺失值(knn 估算)。在插补之前或之后缩放和居中数据更好吗?
由于缩放和居中可能依赖于最小值和最大值,因此在第一种情况下,后续插补可能会添加新的最大值/最小值并篡改缩放/居中的数据。
但是,插补过程也可能受益于缩放和居中的数据集。
你认为什么更好,为什么?
我想为机器学习估算数据集的缺失值(knn 估算)。在插补之前或之后缩放和居中数据更好吗?
由于缩放和居中可能依赖于最小值和最大值,因此在第一种情况下,后续插补可能会添加新的最大值/最小值并篡改缩放/居中的数据。
但是,插补过程也可能受益于缩放和居中的数据集。
你认为什么更好,为什么?
这实际上取决于所使用的插补技术。例如,如果我们使用基于距离的度量(例如 KNN)进行估算,则建议首先标准化数据,然后进行估算。这是因为较低的幅度值收敛得更快。
一个想法可能是使用 caret 包中的预处理功能。当您使用 method = knnImpute 时,它首先在插补之前居中并缩放数据。
preProcValues <- preProcess(data, method = c("knnImpute","center","scale"))
据推测,如果您确实需要对数据进行中心化和缩放,则应该在插补后完成,因为插补可能会影响正确的中心和使用比例!
通常,插补应该是您进行的任何分析的第一步。
编辑@Inon 对评论的回答:
你说插补应该保持中心和规模,以及标准化。为什么?如果缺失值确实是随机缺失的,也许这并不重要,但通常缺失可能取决于其他观察到的变量,然后平均值和尺度的估计可能会因缺失中的这种模式而出现偏差。插补(更好的多重插补)是对抗这种偏差的一种方法。但是,如果您在缩放后进行插补,您只需保留缺失机制引入的偏差。插补是为了解决这个问题,而在缩放后进行插补就可以解决这个问题。