【发布时间】:2019-07-09 06:48:04
【问题描述】:
python sklearn 中的 SGD 分类器和 SGD 回归器有什么区别?我们还可以设置批量大小以提高它们的性能吗?
【问题讨论】:
标签: python-3.x machine-learning scikit-learn
python sklearn 中的 SGD 分类器和 SGD 回归器有什么区别?我们还可以设置批量大小以提高它们的性能吗?
【问题讨论】:
标签: python-3.x machine-learning scikit-learn
分类器预测某些数据属于哪个类。
this picture is a cat (not a dog)
回归器通常预测它属于哪个类别的概率
this picture with 99% of probability is a cat
【讨论】:
SGD{随机梯度下降}是一种优化方法,被机器学习算法或模型用来优化损失函数。
在 scikit-learn 库中,这些模型 SGDClassifier 和 SGDRegressor,可能会让您误以为 SGD 是分类器和回归器。
但事实并非如此。
SGDClassifier - 这是一个由 SGD 优化的classifier
SGDRegressor - 它是由 SGD 优化的 regressor。
随机梯度下降{SGD}不支持批处理,它与{batch}不同,一次只接受一个训练样本梯度下降。
使用 sklearn 部分拟合的示例
from sklearn.linear_model import SGDClassifier
import random
clf2 = SGDClassifier(loss='log') # shuffle=True is useless here
shuffledRange = range(len(X))
n_iter = 5
for n in range(n_iter):
random.shuffle(shuffledRange)
shuffledX = [X[i] for i in shuffledRange]
shuffledY = [Y[i] for i in shuffledRange]
for batch in batches(range(len(shuffledX)), 10000):
clf2.partial_fit(shuffledX[batch[0]:batch[-1]+1], shuffledY[batch[0]:batch[-1]+1], classes=numpy.unique(Y))
【讨论】:
嗯,就是名字。 SGD 分类器是在分类问题中使用 SGD(一次取每个样本的损失梯度,并沿途更新模型)优化(训练)的模型。它可以表示使用loss 参数定义的各种分类模型(SVM、逻辑回归...)。默认情况下,它表示线性 SVM。 SGD Regressor 是一个使用 SGD 进行回归任务优化(训练)的模型。它基本上是一个线性模型,随着学习率的下降而不断更新。
【讨论】: