A principal razão pela qual a descida do gradiente é usada para regressão linear é a complexidade computacional: é computacionalmente mais barato (mais rápido) encontrar a solução usando a descida do gradiente em alguns casos.
A fórmula que você escreveu parece muito simples, mesmo computacionalmente, porque funciona apenas para casos univariados, ou seja, quando você possui apenas uma variável. No caso multivariado, quando você tem muitas variáveis, as fórmulas são um pouco mais complicadas no papel e exigem muito mais cálculos quando implementadas em software:
Aqui, você precisa calcular o matriz X ′ X
β= ( X′X)- 1X′Y
X′Xinverta-o (veja a nota abaixo). É um cálculo caro. Para sua referência, a matriz (de design) X possui K + 1 colunas em que K é o número de preditores e N linhas de observações. Em um algoritmo de aprendizado de máquina, você pode acabar com K> 1000 e N> 1.000.000. O
própria matriz demora um pouco para calcular, então você tem que inverter
K × K matriz - este é caro.
X′XK× K
Portanto, a descida do gradiente permite economizar muito tempo nos cálculos. Além disso, a maneira como isso é feito permite uma paralelização trivial, ou seja, distribuir os cálculos entre vários processadores ou máquinas. A solução de álgebra linear também pode ser paralelizada, mas é mais complicada e ainda cara.
Além disso, há versões de descida gradiente quando você mantém apenas um pedaço de seus dados na memória, diminuindo os requisitos de memória do computador. No geral, para problemas extra grandes, é mais eficiente que a solução de álgebra linear.
Isso se torna ainda mais importante à medida que a dimensionalidade aumenta, quando você tem milhares de variáveis, como no aprendizado de máquina.
Observação . Fiquei surpreso com quanta atenção é dada à descida gradiente nas palestras de Ng. Ele passa um tempo não trivial falando sobre isso, talvez 20% de todo o curso. Para mim, é apenas um detalhe de implementação, é exatamente como você encontra o melhor. A chave está na formulação do problema de otimização e como exatamente você o acha não essencial. Eu não me preocuparia muito com isso. Deixe isso para as pessoas da ciência da computação e concentre-se no que é importante para você como estatístico.
Dito isto, devo me qualificar dizendo que é realmente importante entender a complexidade computacional e a estabilidade numérica dos algoritmos da solução. Ainda acho que você não deve conhecer os detalhes da implementação e o código dos algoritmos. Geralmente, não é o melhor uso do seu tempo como estatístico.
Nota 1 . Escrevi que você tem que inverter a matriz para fins didáticos e não é como costuma resolver a equação. Na prática, os problemas de álgebra linear são resolvidos usando algum tipo de fatoração, como QR, onde você não inverte diretamente a matriz, mas faz outras manipulações matematicamente equivalentes para obter uma resposta. Você faz isso porque a inversão de matriz é uma operação cara e numericamente instável em muitos casos.
Isso traz outra pequena vantagem do algoritmo de descida de gradiente como efeito colateral: funciona mesmo quando a matriz de design apresenta problemas de colinearidade. O caminho usual da álgebra linear explodiria e a descida do gradiente continuará, mesmo para os preditores colineares.