私は分散型オンデマンドモデリングプロダクションシステムを構築しようとしており、数十万の小さなモデルをメモリに保存したい(そしてそれらをデータベースとプロセス間でやり取りする)。私は統計モデルを見ている。シリアル化のために統計情報の結果をトリミングできますか?
私は、モデルの係数を保存し、モデルで予測を呼び出すことができることに主に関心があります。
statsmodelsには、このユースケースでは必要のないTONSの追加情報(O(元のデータサイズ))が含まれているようです。シリアライズされたサイズは数メガバイトですが、係数のサイズはわずか数バイトです。これにより、データベースが一杯になり、分散処理とキャッシュのパフォーマンスが低下します。単純なシリアライズとデシリアライズには多くの時間が費やされます。非係数データを削除すると、メモリに2桁以上多くのモデルを保存することで、2桁のスピードアップが得られる可能性があります。
statsmodelsで、一般的な方法がある:
- 私が生成されないように非出力係数データを求め、又は
- オブジェクトから削除、または
- 抽出することができます(簡単に)係数を使用して予測を行う方法(あまり簡単ではないようです)
私はさまざまな統計モデルを使用していますが、主にGLMとLogitを使用しています。
私は些細なように見えません。結果オブジェクトは元のデータを参照するモデルオブジェクトを参照します。個々のモデルでは動作させることはできませんが(フィールドを1つずつ削除することによって)しかし、すべてのモデルで機能する汎用的な方法がありますか?
Sweet!ありがとうございました – user48956
私は関連する問題について2つの段落を追加しました。また、 'params'を保存してから単純な予測のためだけに機能する新しいデータや人工データを使って偽のモデルを作成するといったトリックもあります。 'model.predict(params、exog、offset)'です。しかし、これは単体テストではなく、「正式に」サポートされているわけでもありません。 – user333700