SGDClassifier内存问题

时间:2013-12-06 10:37:01

标签: python memory scikit-learn

我正在使用SGDClassifier包裹的OneVsRestClassifier进行多标签分类,而且我遇到了内存问题。这是我的代码:

clf = OneVsRestClassifier(SGDClassifier(loss='hinge', shuffle=True, alpha=0.000001, verbose=0, n_iter=5), n_jobs=1)
clf.fit(trainX, trainY)

trainX是一个大的ndarray - 6mil x 100(浮动64)= 5 GB ram。大约有20,000个标签(因此创建了20,000个线性分类器),我的笔记本电脑有16 GB的RAM。

我可以毫无问题地加载trainXtrainY,但是当我开始使用分类器时,内存使用量会越来越高,我的计算机很快就会开始交换,我必须终止这个过程。我不明白为什么拟合SGDClassifier会导致额外的内存使用,因为:

1)SGD一次通过算法提供1个样本,因此应该有最少的额外RAM使用量。如果我可以加载数据,我应该能够训练分类器(这是SGD的整点)。

2)SVM的系数很大,但不应引起问题20000x100

那么是什么导致这个问题呢? OneVsRestClassifier做了一些使用大量内存的事情吗?我该怎么做才能解决这个问题?

谢谢。

0 个答案:

没有答案