ロジスティック回帰を必要とするビジネスプロセスの概念実証を現在行っています。私はデータセット(以下のコードに従って)に対して分類を実行するために統計モデルglmを使用しています。私たちのデータセットは、約10M行と約80個のフィーチャ(ほぼ70+がダミー、例えば定義されたカテゴリ変数に基づいて "1"または "0")で構成されています。小さなデータセットを使うと、glmはうまく動作しますが、完全なデータセットに対して実行すると、Pythonは "メモリを割り当てることができません"というエラーを投げています。私が間違っていた場合統計モデルのマルチプロセッシングを減らすglm
glmmodel = smf.glm(formula, data, family=sm.families.Binomial())
glmresult = glmmodel.fit()
resultstring = glmresult.summary().as_csv()
これはこれはstatsmodelsが原因かもしれないと思って私を得たが、利用可能なすべてのCPUコアを使用するように設計されており、各サブプロセスは下にRAMに設定されたデータのコピーを作成している(私を修正してください)。最低限の数のコアを使うだけの方法があるのではないでしょうか?私はパフォーマンスには達していませんが、完全なデータセットに対してglmを実行できるようにしたいだけです。
参考のため、必要に応じてマシン構成と詳細を以下に示します。
CPU: 10 cores
RAM: 40 GB (usable/free ~25GB as there are other processes running on the
same machine)
swap: 16 GB
dataset size: 1.4 GB (based on Panda's DataFrame.info(memory_usage='deep')