我正在尝试对 sklearn 中的一些文本数据执行支持向量回归。我有大约 10,000 个文档,已将它们转换为大约 30,000 个特征。标签是每个文档作者的出生年份(分布在 1900 年至 2016 年之间)。
我最初尝试了 sklearn 中的 SVR 类,但花了很长时间。由于我不知道它是否取得了任何进展,因此我决定改用 SGDRegressor,它有一个很好的选项来提供一些中间输出。现在我可以看到算法正在取得进展,但收敛速度很慢。我可以做什么来加快速度?一种选择是调整步长/学习率,我现在就会这样做,但我想知道是否有任何方法可以使用并行处理来使每个步骤更快。我可以看到 SGDClassifier 类有一个 n_jobs 选项来利用多个处理器,但我没有看到 SGDRegressor 类有类似的选项。这让我觉得很奇怪,因为 SGD 似乎可以从并行化中受益。是否有任何我可能会受益的库,或者关于在 sklearn 中加速 SVM 的想法?
最佳答案
你的特征矩阵的维度显然太大而且稀疏。 SVR 和 SGD 都无法有效地拟合如此大的矩阵。一般经验法则是,当特征数量超过示例数量时,模型很容易出现过度拟合。
我建议使用 TruncatedSVD 来降低矩阵的维数并训练 SVR。
在这里我无耻地宣传我自己的答案:Working with, preparing bag-of-word data for Regression
关于parallel-processing - 通过并行处理加速 Sklearn 中的支持向量回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685067/