2017-05-14 51 views
3

scikit学习图书馆有以下分类看起来类似:SGDClassifier VS与SGD求解逻辑回归scikit学习库

  • Logistic回归分类有不同的求解器和他们 之一是“新元”

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

  • 它也有不同的分类 'SGDClassifier',损耗 参数可以作为逻辑回归的'log'来提及。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier

他们是基本相同或不同?如果它们不同,两者之间的实施有何不同?在给定逻辑回归问题的情况下,你如何决定使用哪一个?

+1

的逻辑回归模块没有SGD-算法( '牛顿-CG', 'lbfgs', 'liblinear', 'sag'),但模块SGDClassifier也可以解决LogisticRegression。这意味着你有5个解算器可以使用。这些文件和一些规则之间存在巨大差异,在文档中给出了选择(例如,组1中的哪一个)。 SGD通常用于非常有效的大规模问题。与其他人相比,它可能非常依赖于选择的超参数(学习速率,衰减......)。不良的超参数不仅会导致性能下降,而且还会导致不好的结果(未达到global-min) – sascha

+0

谢谢。我在'sag'和'sgd'之间混淆了。 “下陷”是指随机平均梯度?我认为这与sgd类似,除非随机平均梯度与随机平均梯度下降大不相同。 – coffeebytes

+0

@sascha“** SAG **”代表“** S ** tochastic ** A **平均** ** G **渐变下降”。请参阅http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression – shadowtalker

回答

2

Sklearn的Logistic回归虽然没有“sgd”求解器。它实现了对数正则化逻辑回归:它使对数概率最小化。

SGDClassifier是一个广义线性分类器,它将使用随机梯度下降作为求解器。正如http://scikit-learn.org/stable/modules/sgd.html这里提到的那样:“尽管SGD在很长一段时间一直在机器学习社区中出现,但它最近在大规模学习的情况下受到了相当多的关注。” 它很容易实现和高效。例如,这是用于神经网络的解算器之一。

使用SGDClassifier,您可以使用许多不同的损失函数(一种函数来最小化或最大化以找到最佳解决方案),使您可以“调整”模型并为数据找到最佳的基于sgd的线性模型。事实上,一些数据结构或一些问题需要不同的损失函数。

在您的示例中,SGD分类器将具有与Logistic回归相同的损失函数,但是具有不同的求解器。根据您的数据,您可以得到不同的结果。您可以尝试使用交叉验证找到最好的一个,或者尝试使用网格搜索交叉验证来查找最佳的超参数。

希望能回答你的问题。

+0

非常好的答案! – MaxU

0

所有的线性分类器(SVM,逻辑回归,AO)可以使用SGD:随机梯度下降

相关问题