【问题标题】:Handling a missing value in machine learning处理机器学习中的缺失值
【发布时间】:2020-03-07 19:48:01
【问题描述】:
我正在分析一个数据集,其中我的列名如下:[id、location、tweet、target_value]。我想处理某些行中列 location 的缺失值。所以我想从该行的 tweet 列中提取位置(如果推文包含某个位置)本身并将该值放在 location 该行的列。
现在我对上述方法有一些疑问。
这是一个很好的方法吗?我们可以通过使用训练数据本身来填充一些缺失值吗?这不会被视为冗余特征(因为我们正在使用其他一些特征推导该特征的值)
【问题讨论】:
标签:
machine-learning
statistics
data-science
missing-data
feature-engineering
【解决方案1】:
您能否再澄清一下您的数据集?
首先,如果我们假设位置是已发布推文的信息,那么您的方法(在缺少该信息的行中填写位置列)就会出错。
其次,如果我们假设推文包含正确的位置信息,那么您可以使用推文的位置信息填写缺失的行。
如果我们的第二个假设是正确的,那么这将是一个好方法,因为您正在为数据集提供正确的信息。换句话说,您正在为模型提供更详细的信息,以便它可以在测试过程中更正确地预测。
关于您关于“这不会被视为冗余功能(因为我们使用其他功能推导此功能的值)”的问题:
您可以尝试从模型中删除位置列,并使用其余 3 列训练模型。然后,您可以使用不同的参数(准确度等)检查新模型的成功与否。您可以将其与您使用所有 4 个不同列训练的模型的结果进行比较。在那之后,如果没有任何重要的区别或者结果变得严重,那么你会说,该列是多余的。您还可以使用主成分分析(PCA) 来检测相关列。
最后,请永远不要在您的测试数据集中使用训练数据。这会导致过度训练,当您在现实世界环境中使用您的模型时,您的模型很可能会失败。