训练有素的机器学习模型太大

时间:2017-04-24 15:04:52

标签: python machine-learning pickle random-forest

我们为一些回归任务训练了额外树模型。我们的模型由3棵额外的树组成,每棵树有200棵深度为30的树。在3棵额外的树上,我们使用岭回归。 我们训练我们的模型几个小时,然后挑选训练好的模型(整个类对象),供以后使用。但是,保存的训练模型的大小太大,大约140 GB! 有没有办法减少保存模型的大小?是否有任何可能有用的配置,或任何替代泡菜?

2 个答案:

答案 0 :(得分:7)

您可以尝试将joblib与压缩参数一起使用。

   from sklearn.externals import joblib
   joblib.dump(your_algo,  'pickle_file_name.pkl',compress=3)

compress - 从0到9.值越高意味着压缩越多,读写时间也越慢。使用值3通常是一个很好的折衷方案。

您可以使用python标准压缩模块zlib,gzip,bz2,lzma和xz。要使用它,您只需指定具有特定扩展名的格式

示例

joblib.dump(obj, 'your_filename.pkl.z')   # zlib

更多信息,请参阅[link] :( http://gael-varoquaux.info/programming/new_low-overhead_persistence_in_joblib_for_big_data.html

答案 1 :(得分:3)

在最好的情况下(二叉树),您将拥有3 * 200 * (2^30 - 1) = 644245094400个节点或434Gb,假设每个节点只需要1个字节来存储。我认为140GB的比较相当不错。

编辑:错误的数学。