↑↑↑关注后"星标"炼丹笔记
炼丹笔记干货
作者:Kaggle竞赛宝典摘自Chris Deotte的分享
降低数据大小的四大绝技
简介
在非常多的问题中,例如商品推荐数据存储(大量的用户和商品,还有购买金额等信息),金融数据存储(大量的标的,价格等),我们不可避免的都会碰到数据过大的问题,如果对这类数据进行处理显得直观重要,本文我们介绍碰到大数据时,我们采用的四种策略。
四大节省内存的方式
01
数据类型转换
通过数据转换往往可以帮助我们节省好几倍的内存,同时因为类型的转换,在一些数值计算中还可以起到加速运算的作用。我们以American Express竞赛为案例:
长度为64的字符串,每行使用64个字节!
此列是带时间的日期。由长度为10的字符串提供,每行使用10个字节!
将一些最大值为8个值的类别列转化为int8的正数,这样就变成了1个byte,将原先8个bytes转化为了1个byte。
对于一些将float64转化为float32而不损失信息的字段可以直接转化,还有很多字段可以直接从float64转化为float16,这样就可以转化为2个bytes。
02
选择存储文件形式
通过数值类型转化策略转化之后,我们需要将文件保存到磁盘。而这个时候有两个重要属性:
03
多文件存储与否
这个对于数据大小影响不大,如果一次处理整个训练和测试数据集有困难,那么我们可以考虑分块处理,并将数据作为单独的文件保存到磁盘。如果可以一起存储处理,则直接单个文件即可。
04
噪音处理
有非常多的数据存在噪音,而这些噪音处理之后对于数据的训练预测有帮助而没什么害处,例如American Express中的一些数据本来是int型,后来加了噪音变成了float型,此处如果稍加处理则可以节省大量的内存。
小结
适用于所有数据存储问题。
参考文献