2016-06-07 150 views
0

我试图对sklearn中的某些文本数据执行支持向量回归。我有大约10,000个文档,我已经转换为大约30,000个功能。标签是每个文档作者出生的年份(分布在1900年至2016年之间)。通过并行处理加速Sklearn中的支持向量回归

我最初尝试了sklearn中的SVR类,但它需要很长时间。由于我不知道如果它正在取得进展,我决定改用SGDRegressor,它有一个很好的选择来提供一些中间输出。现在我可以看到算法正在取得进展,但收敛速度很慢。我能做些什么来加快速度?一种选择是使用步长/学习速率,我现在正在做这件事,但我想知道是否有任何方法使用并行处理来使每一步都更快。我可以看到SGDClassifier类有一个n_jobs选项来利用多个处理器,但是我没有看到SGDRegressor类的类似选项。这让我觉得很奇怪,因为看起来SGD可以从并行化中受益。有没有我可能从中受益的图书馆,或有关加速sklearn SVM的想法?

回答

1

您的特征矩阵的维度显然太大而且很稀疏。 SVR和SGD都不能有效地适应这样一个大矩阵。一般的经验法则是,当特征数量超过示例数量时,模型容易过度拟合。

我建议使用TruncatedSVD来降低矩阵的维数并训练SVR。

在这里我无耻地宣传我自己的答案:Working with, preparing bag-of-word data for Regression