Descente de gradient vs fonction lm () dans R?


14

Je passe en revue les vidéos du cours gratuit d' apprentissage automatique en ligne d' Andrew Ng à Stanford. Il décrit Gradient Descent comme un algorithme pour résoudre la régression linéaire et écrire des fonctions dans Octave pour l'exécuter. Vraisemblablement, je pourrais réécrire ces fonctions dans R, mais ma question est la fonction lm () ne me donne-t-elle pas déjà la sortie de la régression linéaire? Pourquoi voudrais-je écrire ma propre fonction de descente de gradient? Y a-t-il un avantage ou s'agit-il uniquement d'un exercice d'apprentissage? Est-ce que lm () fait une descente de gradient?


Je pense que vous devrez peut-être implémenter la descente de gradient vous-même dans une autre langue dans les cas où il n'y a pas de bonne solution dans R (par exemple, une certaine variation de régression, comme une régression régularisée avec des mégadonnées)
Manoel Galdino

Réponses:


20

La descente en pente est en fait un moyen assez médiocre de résoudre un problème de régression linéaire. La lm()fonction dans R utilise en interne une forme de décomposition QR , qui est considérablement plus efficace. Cependant, la descente de gradient est une technique généralement utile, et mérite d'être introduite dans ce contexte simple, de sorte qu'il est plus clair comment l'appliquer dans des problèmes plus complexes. Si vous souhaitez implémenter votre propre version comme un exercice d'apprentissage, c'est une chose utile à faire, mais lm()c'est un meilleur choix si tout ce que vous voulez est un outil pour effectuer une régression linéaire.


@Martin lm () pourrait-il être encore meilleur si nous avons de nombreuses fonctionnalités?
user2626445

0

La raison pour laquelle le gradient en ligne est utile est pour les applications à grande échelle. Dans tous les cas, il existe maintenant des bibliothèques qui l'implémentent , vous n'avez donc pas besoin de le programmer. C'est un bon moyen d'apprendre comment les choses fonctionnent.

Dans les mots de Leon Bottou:

L'apprentissage automatique à grande échelle a d'abord été abordé comme un problème d'ingénierie. Par exemple, pour tirer parti d'un ensemble d'entraînement plus important, nous pouvons utiliser un ordinateur parallèle pour exécuter un algorithme d'apprentissage automatique connu ou adapter des méthodes numériques plus avancées pour optimiser une fonction d'objectif d'apprentissage automatique connue. De telles approches reposent sur l'hypothèse attrayante selon laquelle on peut dissocier les aspects statistiques des aspects informatiques du problème d'apprentissage automatique.

Ce travail montre que cette hypothèse est incorrecte et que l'abandonner conduit à des algorithmes d'apprentissage considérablement plus efficaces. Un nouveau cadre théorique prend en compte l'effet de l'optimisation approximative sur les algorithmes d'apprentissage.

L'analyse montre des compromis distincts pour le cas de problèmes d'apprentissage à petite et à grande échelle. Les problèmes d'apprentissage à petite échelle sont soumis au compromis d'approximation-estimation habituel. Les problèmes d'apprentissage à grande échelle sont soumis à un compromis qualitativement différent impliquant la complexité de calcul des algorithmes d'optimisation sous-jacents de manière non triviale. Par exemple, les algorithmes de descente de gradient stochastique (SGD) semblent être des algorithmes d'optimisation médiocres et pourtant ils se révèlent extrêmement performants sur des problèmes d'apprentissage à grande échelle.

Apprentissage à grande échelle

projet sgd

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.