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