我正在尝试分析文本,但是我的Mac的RAM只有8个演出,而RidGereGressor仅在Killed: 9
之后停止。我侦察这是因为它需要更多的内存。
有没有办法禁用堆栈尺寸限制器,以便算法可以使用某种交换内存?
您需要手动进行。
这里可能有两个不同的核心问题:
- A:举行训练数据
- b:训练回归器
对于a,您可以尝试使用Numpy的Memmap,以抽象交换。作为替代方案,请考虑将数据准备为HDF5或一些DB。对于HDF5,您可以使用H5PY或PYTABLES,都允许使用Numpy的用法。
对于B:使用一些核心外算法是一个好主意。在Scikit-Learn中,这些是支持partial_fit的人。
请记住,这种训练过程将至少两个新元素分解为
- 在记忆方面有效
- 交换很慢;您不想在学习过程中使用n^2 aux-memory的东西
- 有效收敛
上面链接中的那些算法都应该可以。
sgdregressor可以被参数化以类似于山脊。
另外:可能需要手动使用partial_fit
,遵守算法的规则(通常是防止收敛所需的某种随机订购)。抽象交换的问题是:如果您的回归器在每个时期都在置换,而又不知道那是多么昂贵,那么您可能会遇到麻烦!
由于问题本身非常困难,因此为此建立了一些特殊的库,而Sklearn则需要一些手动工作。最极端的方法之一(很多疯狂的技巧)可能是vowpal_wabbit(其中IO通常是瓶颈!)。当然还有其他流行的液井,例如Pyspark,服务略有不同(分布式计算)。