前提・実現したいこと
scikit-learnのRandomForestRegressorで機械学習を行っています。
特徴量は16個で予測値は1個です。
1000000サンプルでトレーニングしたモデルをpickleで保存したところ、容量が4.8GBになりました。
また3000000サンプルにしたところ8.3GBになりました。サンプル数に応じて学習機の容量が増えているように思えます。
モデルの複雑さを制御するパラメータはいじっていません。
機械学習については最近勉強を始めたばかりの初心者ですので、素人考えになりますが、
モデルの複雑さが変わらないのに、サンプル数が増えただけで学習機の容量が増えるというのが釈然としません。
もしpickleで保存するさいに予測に必要ない情報(トレーニングデータなど)も一緒に保存しているのなら、
除いてから保存したいのですが、そのようなことは可能でしょうか?
該当のソースコード
python
1from sklearn.ensemble import RandomForestRegressor 2import pickle 3forest = RandomForestRegressor(n_estimators=198, max_features=10, max_depth=20, n_jobs=22, random_state=1) 4forest.fit(X_train_1million, y_train_1million) 5print("Training set score: {:.2f}".format(forest.score(X_train_1million, y_train_1million))) 6print("Test set score: {:.2f}".format(forest.score(X_test, y_test))) 7pickle.dump(forest, open('/home/Forest1M.pickle', 'wb')) 8 9Training set score: 0.98 10Test set score: 0.93 11Forest1M.pickle | 4,800,958 KB 12
python
1from sklearn.ensemble import RandomForestRegressor 2import pickle 3forest = RandomForestRegressor(n_estimators=198, max_features=10, max_depth=20, n_jobs=22, random_state=1) 4forest.fit(X_train_3million, y_train_3million) 5print("Training set score: {:.2f}".format(forest.score(X_train_3million, y_train_3million))) 6print("Test set score: {:.2f}".format(forest.score(X_test, y_test))) 7pickle.dump(forest, open('/home/Forest3M.pickle', 'wb')) 8 9Training set score: 0.97 10Test set score: 0.93 11Forest3M.pickle | 8,281,566 KB 12
補足情報(FW/ツールのバージョンなど)
Python3、Jupyter Labを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/19 09:25
2019/06/19 12:37 編集