首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于98%的列是空值的数据集,我们能做些什么呢?

对于98%的列是空值的数据集,我们能做些什么呢?
EN

Stack Overflow用户
提问于 2018-07-19 19:26:50
回答 3查看 760关注 0票数 0

我想在它发生之前预测服务器的停机时间。为了实现这个目标,我从不同的数据源收集了许多数据。

其中一个数据源是度量数据,其中包含cpu-time、cpu-percentage、memory-usage等。但是,此数据集中列的值为空。我的意思是98%的许多列都是空的。

在将数据应用于预测算法之前,可以使用哪种数据准备技术来准备数据。

我很感谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-19 21:00:59

如果我处在你的情况下,我的第一个选择就是忽略这个数据源。丢失的数据太多,无法作为任何ML算法的相关信息源。

也就是说,如果您仍然希望使用此数据源,则必须填补空白。仅用2%的可用数据推断缺失数据几乎是不可能的,但当您谈到90%以上的缺失数据时,我建议您看看非负矩阵分解(NMF) here

这个算法的一些版本是implemeted in R,为了在推断如此大量的缺失数据时有更好的结果,你可以读取使用时间序列信息的this paper - -which可能是你的案例-使用NMF可以获得更好的结果。我运行了一些测试,丢失的数据高达95%,结果并不是那么糟糕,因此,正如前面所讨论的,您可以丢弃一些数据,使其只有80%或90%的丢失数据,然后对时间序列应用NMF。

票数 1
EN

Stack Overflow用户

发布于 2018-07-19 20:11:36

通常可以应用各种数据补偿技术,但在98%为空值的情况下,我认为这不是一个正确的方法,您将从2%的可用信息中推断出空数据;这将在您的数据中产生巨大的偏差。我倾向于这样一种选择:按降序对行进行排序,这样具有最多非空列的行就排在第一位。然后确定从排序的行列表的开头开始的截止点,使得例如在所选数据子集中仅有20%的数据丢失。然后应用数据补偿。但当然,这假设您在确定这个分界点后将有足够数量的数据点(行),而您可能没有这个分界点,并且每行的数据不会随机丢失(如果每行的数据随机丢失,则根本不能使用这种排序方法)。

在任何情况下,我都很难看到通过使用如此大量的缺失数据来构建有意义的模型的具体方法。

票数 1
EN

Stack Overflow用户

发布于 2018-07-19 22:04:59

首先,你的数据为什么是空的可能有很多原因,比如,在以前的项目版本中没有计划获取这些数据,然后你升级了它,但它不具有追溯性,所以你只能访问新版本的数据,这意味着2%是很好的数据,但与总容量相比什么都不代表,因为新版本从X天开始就开始了;等等。

不管怎样,

即使你只有2%的非空数据,这也无关紧要,重要的是“有多少数据代表这2%”?如果它是50亿的2%,那么将非空的2%作为训练数据并忽略其他数据就足够了!

现在,如果2%代表的是很少的数据,那么我真的建议你不要用它们填充空值,因为这会造成巨大的偏差,而且,这意味着你的实际过程还没有准备好实现机器学习项目=>只是为了获得更多的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51421481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档