parallel-processing - 通过并行处理加速 Sklearn 中的支持向量回归

标签 parallel-processing scikit-learn svm

我正在尝试对 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/

相关文章:

python-3.x - 如何在不使用scikit learn的learning_curve函数的情况下让train_scores绘制学习曲线?

matlab - 如何限制线性分类器的权重?

machine-learning - 支持向量机内核类型

python - 点集之间的有符号距离

python - 随机森林准确率太低

python - 使用 sklearn 找出错误率

perl fork() & exec()

Python 多处理似乎几乎不可能在类内完成/使用任何类实例。它的预期用途是什么?

c - MPI编程中如何随机选择主处理器?

matlab - MATLAB 的 parfeval 函数是如何工作的?