Descida de gradiente vs função lm () em R?


14

Vou ver os vídeos do curso de aprendizado de máquina on - line gratuito de Andrew Ng em Stanford. Ele discute o Gradient Descent como um algoritmo para resolver funções de regressão linear e escrita no Octave para executá-lo. Presumivelmente, eu poderia reescrever essas funções em R, mas minha pergunta é: a função lm () já não me fornece a saída da regressão linear? Por que eu gostaria de escrever minha própria função de descida de gradiente? Existe alguma vantagem ou é puramente um exercício de aprendizado? Lm () diminui gradualmente?


Eu acho que você pode precisar implementar gradiente descendente si mesmo em outro idioma nos casos em que não há nenhuma boa solução em R (por exemplo, alguma variação de regressão, como regressão regularizada com big data)
Manoel Galdino

Respostas:


20

A descida de gradiente é realmente uma maneira muito ruim de resolver um problema de regressão linear. A lm()função em R usa internamente uma forma de decomposição QR , que é consideravelmente mais eficiente. No entanto, a descida do gradiente é uma técnica geralmente útil e vale a pena introduzir neste contexto simples, para que fique mais claro como aplicá-la em problemas mais complexos. Se você deseja implementar sua própria versão como um exercício de aprendizado, vale a pena fazer isso, mas lm()é uma escolha melhor se tudo que você deseja é uma ferramenta para fazer regressão linear.


@ Martin O lm () ainda pode ser melhor se tivermos muitos recursos?
User2626445

0

O motivo pelo qual o gradiente on-line é útil é para aplicativos de grande escala. De qualquer forma, agora existem bibliotecas que o implementam, para que você não precise programá-lo. É uma boa maneira de aprender como as coisas funcionam.

Nas palavras de Leon Bottou:

O aprendizado de máquina em larga escala foi abordado pela primeira vez como um problema de engenharia. Por exemplo, para alavancar um conjunto de treinamento maior, podemos usar um computador paralelo para executar um algoritmo conhecido de aprendizado de máquina ou adaptar métodos numéricos mais avançados para otimizar uma função conhecida de objetivo de aprendizado de máquina. Tais abordagens se baseiam na suposição atraente de que é possível dissociar os aspectos estatísticos dos aspectos computacionais do problema de aprendizado de máquina.

Este trabalho mostra que essa suposição está incorreta e que desistir leva a algoritmos de aprendizado consideravelmente mais eficazes. Um novo referencial teórico leva em consideração o efeito da otimização aproximada nos algoritmos de aprendizado.

A análise mostra trocas distintas para o caso de problemas de aprendizado em pequena e grande escala. Problemas de aprendizado em pequena escala estão sujeitos à troca usual de aproximação-estimativa. Problemas de aprendizado em larga escala estão sujeitos a uma troca qualitativamente diferente, envolvendo a complexidade computacional dos algoritmos de otimização subjacentes de maneiras não triviais. Por exemplo, os algoritmos Estochastic Gradient Descent (SGD) parecem ser algoritmos medíocres de otimização e, no entanto, demonstram ter um desempenho extremamente bom em problemas de aprendizado em larga escala.

Aprendizagem em larga escala

projeto sgd

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.