我尝试使用scikit-learn进行交叉验证,并且遇到了一些难以理解的内存问题。
基本上,我发现当我增加搜索的超参数的数量时,或者当我增加GridSearchCV对象的交叉验证循环的数量时,我的内存消耗几乎呈线性增长。如果我使用足够大的矩阵,这会导致危险的高内存消耗。
这里有一点关于我所谈论的内容: http://nbviewer.ipython.org/gist/choldgraf/6a7be7866f2a3a3d3f98
有谁知道为什么会这样?似乎GridSearchCV基本上只是循环遍历cv对象和列表理解风格的模型参数选项。它似乎不应该增加内存使用量......
更新:在进一步研究之后,事实证明问题不在于GridSearchCV,而在于Ridge中的一些求解器(我相应地更新了要点)。这可能是scipy线性代数库的问题,请参阅问题here