2017-04-24 11 views
0

一部の回帰タスクのために余分なツリーモデルを訓練しました。私たちのモデルは3つの余分な木から成っています。それぞれの木は深さ30の木が200本あります。余分な3本の木の上には尾根の回帰があります。 モデルを数時間トレーニングし、訓練されたモデル(クラスオブジェクト全体)を後で使用するために漬けます。しかし、保存された訓練されたモデルのサイズは約140 GBと大きすぎます! 保存されたモデルのサイズを減らす方法はありますか?役に立つかもしれない漬け物、または漬け物のための任意の構成がありますか?訓練された機械学習モデルが大きすぎます

+1

scikitモデルの永続性[ページ](のhttp:/ /scikit-learn.org/stable/modules/model_persistence.html#)では、 'joblib 'を使用する方が効率的な場合があることを示唆しています。 – Tchotchke

答えて

3

ベスト・ケース(バイナリー・ツリー)では、3 * 200 * (2^30 - 1) = 644245094400ノード、または434Gbがあり、各ノードは1バイトのコストで済むと仮定しています。私は、140GBはかなりの大きさだと思います。

編集:悪い数学。

1

圧縮パラメータを指定して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 

詳しい情報をフォーマットを指定することができることを使用するには、[リンク]をご覧ください:(http://gael-varoquaux.info/programming/new_low-overhead_persistence_in_joblib_for_big_data.html)を

関連する問題