我正在尝试分析文本,但我的Mac的RAM只有8场演出,而RidgeRegressor在Killed: 9
一段时间后就停止了。我认为这是因为它需要更多的记忆。
有没有办法禁用堆栈大小限制器,以便算法可以使用某种交换内存?
答案 0 :(得分:0)
您需要手动完成。
这里可能存在两个不同的核心问题:
对于A,你可以尝试numpy的memmap,它抽象出来。 作为替代方案,请考虑将数据准备到HDF5或某些数据库。对于HDF5,您可以使用h5py或pytables,两者都允许使用类似numpy。
对于B:使用一些核外就绪算法是个好主意。在scikit-learn中,那些支持partial_fit。
请记住,此培训过程会分解为至少两个新元素:
上述链接中的那些算法对两者都应该没问题。
可以将SGDRegressor参数化为类似RidgeRegression。
另外:可能需要手动使用partial_fit
,遵守算法规则(通常是收敛证明所需的某种随机排序)。抽象交换的问题是:如果你的回归量在每个时代都在进行排列,而不知道它的代价是多少,那么你可能会遇到麻烦!
因为问题本身很难,所以为此构建了一些特殊的库,而sklearn需要更多的手动工作。其中一个最极端的(很多疯狂的技巧)可能是vowpal_wabbit(其中IO通常是瓶颈!)。当然还有其他流行的库,如pyspark,服务略有不同(分布式计算)。