J'utilise la fonction de régression logistique de sklearn et je me demandais ce que chacun des solveurs faisait en coulisses pour résoudre le problème d'optimisation.
Quelqu'un peut-il décrire brièvement ce que font "newton-cg", "sag", "lbfgs" et "liblinear"? Sinon, tout lien ou matériel de lecture connexe est également très apprécié.
Merci beaucoup d'avance.
Eh bien, j'espère que je ne suis pas trop tard pour la fête! Permettez-moi d'abord d'essayer d'établir une certaine intuition avant de creuser des tonnes d'informations (avertissement : ce n'est pas bref comparaison)
Une hypothèse h(x)
, prend une entrée et nous donne la valeur de sortie estimée.
Cette hypothèse peut être une équation linéaire aussi simple qu'une variable, .. jusqu'à une équation multivariée très compliquée et longue en fonction du type d'algorithme que nous utilisons (c.-à-d. Régression linéaire, régression logistique .. etc).
Notre tâche consiste à trouver les meilleurs paramètres (alias Thetas ou poids) qui nous donnent le moindre erreur pour prédire la sortie. Nous appelons cette erreur un Fonction de coût ou de perte et apparemment, notre objectif est de - minimiser afin d'obtenir la meilleure sortie prévue!
Encore une chose à rappeler, que la relation entre la valeur du paramètre et son effet sur la fonction de coût (c'est-à-dire l'erreur) ressemble à un courbe en cloche (ie Quadratique ; rappelez-le car c'est très important).
Donc, si nous commençons à n'importe quel point de cette courbe et si nous continuons à prendre la dérivée (c.-à-d. La ligne tangente) de chaque point où nous nous arrêtons, nous finirons à ce que l'on appelle Global Optima comme indiqué dans cette image:
Si nous prenons la dérivée partielle au point de coût minimum (c'est-à-dire les optima globaux), nous trouvons la pente de la tangente = 0 (alors nous savons que nous avons atteint notre objectif).
Cela n'est valable que si nous avons Convexe Fonction de coût, mais si nous ne le faisons pas, nous pouvons nous retrouver coincés à ce qu'on appelle Local Optima = ; considérons cette fonction non convexe:
Vous devriez maintenant avoir l'intuition de la relation de piratage entre ce que nous faisons et les termes: Deravative, Tangent Line, Cost Function, - Hypothèse ..etc.
Note latérale: L'intuition mentionnée ci-dessus est également liée à l'algorithme de descente de gradient (voir plus loin).
Approximation linéaire:
Étant donné une fonction, f(x)
, nous pouvons trouver sa tangente à x=a
. L'équation de la tangente L(x) est: L(x)=f(a)+f′(a)(x−a)
.
Jetez un œil au graphique suivant d'une fonction et à sa tangente:
Sur ce graphique, nous pouvons voir que près de x=a
, La tangente et la fonction ont presque le même graphique. À l'occasion, nous utiliserons la ligne tangente, L(x)
, comme approximation de la fonction, f(x)
, près de x=a
. Dans ces cas, nous appelons la ligne tangente l'approximation linéaire de la fonction à x=a
.
Approximation quadratique:
Identique à l'approximation linéaire mais cette fois nous avons affaire à une courbe mais nous ne pouvons pas trouver le point proche de 0 en utilisant la ligne tangente.
Au lieu de cela, nous utilisons une parabole (qui est une courbe où tout point est à égale distance d'un point fixe ou d'une ligne droite fixe), comme ceci:
Et pour s'adapter à une bonne parabole, les fonctions parabole et quadratique doivent avoir la même valeur, la même dérivée première ET la deuxième dérivée, ... la formule sera (juste par curiosité): Qa(x) = f(a) + f'(a)(x-a) + f''(a)(x-a)2/2
Maintenant, nous devrions être prêts à faire la comparaison en détail.
1. Méthode de Newton
Rappelez-vous la motivation de l'étape de descente du gradient à x: nous minimisons la fonction quadratique (c'est-à-dire la fonction de coût).
La méthode de Newton utilise dans un sens a mieux minimisation de la fonction quadratique. Un meilleur parce qu'il utilise l'approximation quadratique (c'est-à-dire le premier ET le deuxième dérivées partielles).
Vous pouvez l'imaginer comme une descente de gradient torsadée avec la Hesse (La Hesse est une matrice carrée de dérivées partielles de second ordre d'ordre nxn).
De plus, l'interprétation géométrique de la méthode de Newton est qu'à chaque itération on rapproche f(x)
par une fonction quadratique autour de xn
, puis fait un pas vers le maximum/minimum de cette fonction quadratique (en dimensions supérieures, cela peut aussi être un point de selle). Notez que si f(x)
se trouve être une fonction quadratique, alors l'extremum exact est trouvé en une seule étape.
Inconvénients:
C’est sur le plan du calcul cher en raison de la matrice de Hesse (c’est-à-dire des calculs de dérivées partielles).
Il attire vers Saddle Points qui sont communs dans l'optimisation multivariable (c'est-à-dire un point que ses dérivées partielles ne sont pas d'accord sur si cette entrée doit être un maximum ou un minimum!).
2. Algorithme Broyden – Fletcher – Goldfarb – Shanno à mémoire limitée:
En un mot, c'est analogue à la méthode de Newton, mais ici la matrice de Hesse est approximée en utilisant des mises à jour spécifiées par des évaluations de gradient ( ou évaluations approximatives du gradient). En d'autres termes, en utilisant une estimation de la matrice de Hesse inverse.
Le terme mémoire limitée signifie simplement qu'il ne stocke que quelques vecteurs qui représentent implicitement l'approximation.
Si j'ose dire que lorsque l'ensemble de données est petit , L-BFGS fonctionne relativement mieux par rapport à d'autres méthodes, en particulier, il enregistre un beaucoup de mémoire, mais il y a quelques inconvénients "grave" tels que s'il n'est pas sauvegardé, il peut ne pas converger vers quoi que ce soit.
3. Une bibliothèque pour une grande classification linéaire:
Il s'agit d'une classification linéaire qui prend en charge la régression logistique et les machines à vecteurs de support linéaire (n classificateur linéaire y parvient en prenant une décision de classification basée sur la valeur d'une combinaison linéaire des caractéristiques, c'est-à-dire la valeur de l'entité).
Le solveur utilise un algorithme de descente de coordonnées (CD) qui résout les problèmes d'optimisation en effectuant successivement une minimisation approximative le long des directions de coordonnées ou des hyperplans de coordonnées.
LIBLINEAR
est le gagnant du défi d'apprentissage à grande échelle d'ICML 2008. Il s'applique Sélection automatique des paramètres (a.k.a L1 Regularization) et il est recommandé lorsque vous avez un ensemble de données de grande dimension (recommandé pour résoudre les problèmes de classification à grande échelle)
Inconvénients:
Il peut rester bloqué à un point non stationnaire (c'est-à-dire non optima) si les courbes de niveau d'une fonction ne sont pas lisses.
Ne peut pas non plus fonctionner en parallèle.
Il ne peut pas apprendre un véritable modèle multinomial (multiclasse); au lieu de cela, le problème d'optimisation est décomposé d'une manière "un contre un", de sorte que des classificateurs binaires séparés sont formés pour toutes les classes.
Note latérale: selon la documentation de Scikit: le solveur "liblinéaire" est utilisé par défaut pour des raisons historiques.
4. Gradient moyen stochastique:
La méthode SAG optimise la somme d'un nombre fini de fonctions convexes lisses. Comme les méthodes à gradient stochastique (SG), le coût d'itération de la méthode SAG est indépendant du nombre de termes dans la somme. Cependant, en incorporant une mémoire des valeurs de gradient précédentes, la méthode SAG atteint un taux de convergence plus rapide que les méthodes SG à boîte noire.
Il est plus rapide que les autres solveurs pour les ensembles de données large, lorsque le nombre d'échantillons et le nombre d'entités sont importants.
Inconvénients:
Il ne prend en charge que la pénalisation L2.
Son coût en mémoire de O(N)
, ce qui peut le rendre impraticable pour les grands N (car il se souvient des dernières valeurs calculées pour environ tous les gradients).
5. SAGA:
Le solveur SAGA est une variante de SAG qui prend également en charge l'option non-lisse penalty = l1 (c'est-à-dire la régularisation L1). C'est donc le solveur de choix pour clairsemé régression logistique multinomiale et il convient également très grand ensemble de données.
Note latérale: selon la documentation de Scikit: le solveur SAGA est souvent le meilleur choix.
Le tableau suivant est tiré de Documentation Scikit