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

Ita*_*ack 6 python machine-learning pickle random-forest

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

小智 8

您可以尝试将joblib与compression参数一起使用.

   from sklearn.externals import joblib
   joblib.dump(your_algo,  'pickle_file_name.pkl',compress=3)
Run Code Online (Sandbox Code Playgroud)

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

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

joblib.dump(obj, 'your_filename.pkl.z')   # zlib
Run Code Online (Sandbox Code Playgroud)

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


VMR*_*uiz 5

在最好的情况下(二叉树),您将拥有3 * 200 * (2^30 - 1) = 644245094400节点,或者434Gb假设每个节点仅花费 1 个字节来存储。相比之下,我认为 140GB 是一个相当不错的大小。