随机梯度下降是分类器还是优化器?

问题描述 投票:1回答:3

我是机器学习的新手,我正在尝试分析我的项目的分类算法。我在SGDClassifier图书馆遇到了sklearn。但很多论文都将SGD称为优化技术。有人可以解释一下SGDClassifier是如何实施的?

machine-learning nlp classification text-classification gradient-descent
3个回答
1
投票

SGD确实是一种用于找到函数最小值的技术。 SGDClassifier是一个线性分类器(默认情况下,sklearn是一个线性SVM),它使用SGD进行训练(即使用SGD寻找损失的最小值)。根据documentation

SGDClassifier是具有SGD训练的线性分类器(SVM,逻辑回归,a.o。)。

该估计器使用随机梯度下降(SGD)学习来实现正则化线性模型:一次估计每个样本的损失梯度,并且随着强度递减计划(即学习速率)一起更新模型。 SGD允许使用minibatch(在线/核心)学习,请参阅partial_fit方法。为了使用默认学习速率计划获得最佳结果,数据应具有零均值和单位方差。

此实现适用于表示为要素的密集或稀疏浮点值数组的数据。它适合的模型可以用损耗参数控制;默认情况下,它适合线性支持向量机(SVM)。


1
投票

取自SGD scikit-learn文档

loss="hinge" :(软边际)线性支持向量机,loss="modified_huber":平滑铰链损失,loss="log":逻辑回归


0
投票

SGDClassifier是一个线性分类器,它使用随机梯度下降(SGD)学习实现正则化线性模型

其他分类器:

classifiers = [
("ASGD", SGDClassifier(average=True, max_iter=100)),
("Perceptron", Perceptron(tol=1e-3)),
("Passive-Aggressive I", PassiveAggressiveClassifier(loss='hinge',
                                                     C=1.0, tol=1e-4)),
("Passive-Aggressive II", PassiveAggressiveClassifier(loss='squared_hinge',
                                                      C=1.0, tol=1e-4)),
("SAG", LogisticRegression(solver='sag', tol=1e-1, C=1.e4 / X.shape[0]))

]

随机梯度下降(sgd)是一个求解器。在(线性)支持向量机和Logistic回归等凸损函数下,它是一种简单有效的线性分类器判别学习方法。

neural_network.MLPClassifier中sgd的其他替代解决方案是lbfgs和adam

solver : {‘lbfgs’, ‘sgd’, ‘adam’}, default ‘adam’

用于重量优化的求解器。

'lbfgs'是准牛顿方法族的优化者

'sgd'指的是随机梯度下降。

'adam'是指由Kingma,Diederik和Jimmy Ba提出的基于随机梯度的优化器

有关SGDClassifier实现的详细信息,请参阅@ SGDClassifier文档页面。

在信中:

该估计器使用随机梯度下降(SGD)学习来实现正则化线性模型:一次估计每个样本的损失梯度,并且随着强度递减计划(即学习速率)一起更新模型。 SGD允许小批量(在线/核心)学习

© www.soinside.com 2019 - 2024. All rights reserved.