如何为包含大量异常值的 ML 分类任务准备 IOT 数据?
Posted
技术标签:
【中文标题】如何为包含大量异常值的 ML 分类任务准备 IOT 数据?【英文标题】:How to prepare IOT data for a ML classification task containing lots of outliers? 【发布时间】:2021-10-25 03:24:04 【问题描述】:我有一个从 IOT 设备生成的数据集,我试图预测机器会发生故障(罕见事件)的“1”和不会发生的“0”。数据集高度不平衡,我正在考虑使用 LSTM 进行预测。我不确定如何为这项任务准备我的数据。我是否删除每行的所有零值,因为大多数列都包含此值。这些列中只有少数不包含异常值。下面是我的数据分布的示例,但不完全。仅供参考,我有更多列未包含在快照中,数据中大约 75% 的列是这样的。
【问题讨论】:
你可以看看分层不平衡抽样方法。您还应该决定您的重点是精确还是召回,或者两者兼而有之。 这能回答你的问题吗? Stratified Train/Test-split in scikit-learn @安德烈亚斯。感谢您的建议,但它没有解决我的问题。我需要的不是如何拆分我的数据。我感到困惑的主要是如何在进行交叉验证之前清理我的数据。我在我的问题中说,输入变量中有这么多零值,这就是我包含数据分布以了解我正在使用的内容的原因。请参考我的快照。谢谢 【参考方案1】:处理不平衡数据集的常用方法是使用resampling techniques,例如欠采样和过采样。在 Python 中,imbalanced-learn 是用于这两种方法的流行库。
欠采样会从多数类中删除样本,而过采样会从少数类中复制样本。通常首选过采样,因为您不会删除数据。最后,您可以使用称为 SMOTE 的高级过采样技术来创建 新 合成少数类数据。这通常是最高效的,请参阅here 了解更多信息。
【讨论】:
@pirateofebay。谢谢你的建议。是的,我正计划使用 SMOTE 并对少数类进行过采样。但是,这些数据不一定会丢失,它们只是包含跨各种输入变量的大量异常值(零值)。这就是我要问的。最好的方法是处理这样的情况,让我的数据准备好进行建模。谢谢以上是关于如何为包含大量异常值的 ML 分类任务准备 IOT 数据?的主要内容,如果未能解决你的问题,请参考以下文章