1
votes

Quelle est la différence entre le classificateur SGD et le régresseur SGD en python?

Quelle est la différence entre le classificateur SGD et le régresseur SGD dans python sklearn? Pouvons-nous également définir la taille des lots pour des performances plus rapides?


0 commentaires

3 Réponses :


1
votes

Eh bien, c'est dans le nom. SGD Classifier est un modèle optimisé (entraîné) à l'aide de SGD (prenant le gradient de la perte de chaque échantillon à la fois et le modèle est mis à jour en cours de route) dans les problèmes de classification. Il peut représenter une variété de modèles de classification (SVM, régression logistique ...) qui est définie avec le paramètre loss . Par défaut, il représente SVM linéaire. SGD Regressor est un modèle optimisé (entraîné) à l'aide de SGD pour les tâches de régression. Il s'agit essentiellement d'un modèle linéaire qui est mis à jour en cours de route avec un taux d'apprentissage décroissant.


0 commentaires

1
votes

SGD {Stochastic Gradient Descent} est une méthode d'optimisation utilisée par des algorithmes ou des modèles d'apprentissage automatique pour optimiser la fonction de perte.

Dans la bibliothèque scikit-learn, ces modèles SGDClassifier et SGDRegressor , ce qui pourrait vous amener à penser que SGD est un classificateur et un régresseur.

Mais ce n'est pas le cas.

SGDClassifier code > - il s'agit d'un classificateur optimisé par SGD SGDRegressor - il s'agit d'un régresseur optimisé par SGD.

La descente de gradient stochastique {SGD} ne prend pas en charge le lot, il prend un seul exemple d'entraînement à la fois contrairement à {batch} Descente de gradient

Exemple d'utilisation de l'ajustement partiel de 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))


3 commentaires

Merci, cela efface mon doute :) mais y a-t-il un module dans Sklearn pour implémenter la descente de gradient Minibatch? Puisque SGD prend du temps


Le fait que SGD ne prend pas en charge les lots n'est généralement pas vrai, bien que cela soit vrai pour l'implémentation scikit-learn; en pratique et pour la plupart des frameworks, SGD signifie implicitement minibatch SGD ...


si vous avez un ensemble de données volumineux, qui ne peut pas tenir dans la mémoire, vous devez utiliser le partial_fit , il y a un concept dans sk-learn. J'ai mis à jour ma réponse avec l'exemple de code.



0
votes

Le classificateur prédit à quelle classe appartiennent certaines données.

this picture with 99% of probability is a cat 

Le régresseur prédit généralement la probabilité à quelle classe il appartient

this picture is a cat (not a dog)


0 commentaires