web-dev-qa-db-fra.com

pourquoi la descente de gradient quand nous pouvons résoudre analytiquement la régression linéaire

quel est l'avantage d'utiliser Gradient Descent dans l'espace de régression linéaire? ressemble à la nous pouvons résoudre le problème (trouver theta0-n que le minimum func de coût) avec une méthode analytique alors pourquoi nous voulons toujours utiliser la descente de gradient pour faire la même chose? Merci

68
John

Lorsque vous utilisez les équations normales pour résoudre la fonction de coût analytiquement, vous devez calculer:

enter image description here

Où X est votre matrice d'observations d'entrée et y votre vecteur de sortie. Le problème avec cette opération est la complexité temporelle du calcul de l'inverse d'une matrice nxn qui est O (n ^ 3) et à mesure que n augmente, cela peut prendre très longtemps.

Lorsque n est faible (n <1000 ou n <10000), vous pouvez considérer les équations normales comme la meilleure option pour le calcul thêta, mais pour des valeurs plus élevées Gradient Descent est beaucoup plus rapide, donc la seule raison est le temps :)

102
jabaldonedo

Vous devriez fournir plus de détails sur votre problème - de quoi parlez-vous exactement - parlons-nous d'une régression linéaire dans une ou plusieurs dimensions? Celles simples ou généralisées?

En général, pourquoi les gens utilisent-ils le GD?

  • il est facile à mettre en œuvre
  • c'est une technique d'optimisation très générique - même si vous changez votre modèle pour le plus général, vous pouvez toujours l'utiliser

Et les solutions analytiques? Eh bien, nous les utilisons , votre affirmation est simplement fausse ici (si nous parlons en général), par exemple le [~ # La méthode ~] ols [~ # ~] est une solution analytique sous forme fermée, largement utilisée. Si vous pouvez utiliser la solution analytique, c'est un calcul abordable (car parfois Gd est simplement moins cher ou plus rapide) alors vous pouvez, et même devez - l'utiliser.

Neverlethles, cela est toujours une question de pour et de contre - les solutions analytiques sont fortement liées au modèle, leur mise en œuvre peut donc être inefficace si vous prévoyez de généraliser/modifier vos modèles à l'avenir. Ils sont parfois moins efficaces que leurs approximations numériques, et parfois ils sont tout simplement plus difficiles à mettre en œuvre. Si rien de ce qui précède n'est vrai - vous devriez utiliser la solution analytique, et les gens le font vraiment.

Pour résumer, vous préférez utiliser Gd sur une solution analytique si:

  • vous envisagez des changements dans le modèle, des généralisations, l'ajout de termes/régularisations/modifications plus complexes
  • vous avez besoin d'une méthode générique car vous ne savez pas grand-chose sur l'avenir du code et du modèle (vous n'êtes qu'un des développeurs)
  • la solution analytique est plus coûteuse en informatique, et vous avez besoin d'efficacité
  • solution analytique nécessite plus de mémoire, que vous n'avez pas
  • la solution analytique est difficile à mettre en œuvre et vous avez besoin d'un code simple et facile
13
lejlot

J'ai vu une très bonne réponse de https://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent

Fondamentalement, les raisons sont les suivantes:

1.Pour la plupart des problèmes de régression non linéaire, il n'y a pas de solution sous forme fermée.

Même en régression linéaire (l'un des rares cas où une solution sous forme fermée est disponible), il peut être impossible d'utiliser la formule. L'exemple suivant montre une manière dont cela peut se produire.

7
enaJ