我正在研究一个多类分类问题,它有65个特性和150 K实例.30%的特征是分类的,其余的是数字的(连续的)。我知道在将数据分成训练子集和测试子集之后,应该进行标准化或规范化,但我仍然不确定估算过程。对于分类任务,我计划使用随机森林、Logistic回归和XGBOOST (它们不是基于距离的)。
谁能解释一下哪一个应该放在第一位?分裂>归责还是imputation>split?如果split>imputation是正确的,我应该遵循imputation>standardization还是standardization>imputation?
发布于 2019-06-03 16:29:00
在进行任何数据预处理之前,请始终拆分。在拆分之前执行预处理将意味着您的测试集的信息将在培训期间出现,从而导致数据泄漏。
想想看,测试集应该是一种在完全看不见的数据上估计性能的方法。如果它影响到培训,那么它将被部分看到数据。
我不认为刻度/归罪的顺序是那么严格。如果该方法可能抛出缩放/对中,我将首先进行计算。
你的步骤应该是:
以下是一些相关的问题来支持这一点:
发布于 2019-06-03 16:31:59
如果您在拆分之前进行/标准化,然后分裂成火车/测试,则您正在将测试集中的数据泄漏到您的培训集中(这应该是完全保留的)。这将对模型性能产生极有偏见的结果。
正确的方法是首先拆分数据,然后使用估算/标准化(顺序将取决于是否需要标准化的估算方法)。
这里的关键是,您正在学习从培训集,然后“预测”到测试集的一切。对于规范化/标准化,您需要学习样本均值和样本标准偏差,将它们作为常量处理,并使用这些学习值来转换测试集。在这些计算中,您不使用测试集平均值或测试标准偏差。
就推测而言,这一想法是相似的。仅从培训集了解所需的参数,然后预测所需的测试集值。
这样,您的性能指标就不会因为您的方法不经意地看到测试集的观察而产生偏见。
https://datascience.stackexchange.com/questions/53138
复制相似问题