从数据集中排除噪声数据(这可能会降低模型的准确性或导致测试数据集的意外输出)来生成训练和验证数据集,是否是个好主意?
假设:我们预先知道噪声数据
任何建议都将不胜感激!
回答:
这取决于你的应用。如果噪声数据是有效的,那么肯定要包含它,以找到最佳模型。
然而,如果噪声数据是无效的,那么在拟合模型之前应该清理掉这些数据。
噪声是一个广泛的术语,你最好将它们视为内点或异常值。
大多数异常值检测算法会指定一个阈值,并根据某个给定分数对异常值候选者进行排序。在这种情况下,你可以选择消除最极端的值。例如,如果数据集呈高斯分布,可以选择远离均值3倍标准差的值(当然,这是在你拥有类似高斯分布的数据集的情况下)。
因此,我的建议是根据两点来构建你的判断:
- 你的业务概念和逻辑关于有效性与无效性。例如:房屋大小、面积或价格不能为负数。
- 你的数学/算法逻辑。例如:基于某个阈值检测极端值,以决定(结合/不结合第1点)它是否为有效观测值。
噪声数据本身不会造成巨大的问题。极端的噪声数据(即极端值/异常值)是你真正应该关注的!这些点会在拟合数据时调整模型的假设。因此,结果可能会发生巨大偏移/错误。
最后,你可以查看Pyod开源Python工具箱,其中包含许多现成的不同算法实现。(你可以选择多个算法并创建一个投票池来决定观测值的极端程度)。