A descida de coordenadas atualiza um parâmetro de cada vez, enquanto a descida de gradiente tenta atualizar todos os parâmetros de uma só vez.
É difícil especificar exatamente quando um algoritmo será melhor que o outro. Por exemplo, fiquei muito chocado ao saber que a descida de coordenadas era o estado da arte para o LASSO. E eu não era o único; veja o slide 17 .
Com isso dito, existem alguns recursos que podem tornar um problema mais corrigível para coordenar a descida:
(1) Atualizações condicionais rápidas. Se, por algum motivo, o problema permitir otimizar os parâmetros individualmente muito rapidamente, a descida de coordenadas poderá fazer uso disso. Por exemplo, é possível atualizar determinados parâmetros usando apenas um subconjunto dos dados, reduzindo bastante o custo computacional dessas atualizações. Outro caso é se houver uma solução de formulário fechado para um parâmetro individual, condicional aos valores de todos os outros parâmetros.
(2) Modos relativamente independentes para parâmetros. Se o valor ideal de um parâmetro for completamente independente dos outros valores, uma rodada de descida de coordenadas levará à solução (supondo que cada atualização de coordenada encontre o modo atual). Por outro lado, se o modo de um determinado parâmetro for altamente dependente de outros valores de parâmetros, é muito provável que a descida de coordenadas se aproxime, com atualizações muito pequenas a cada rodada.
Infelizmente, para a maioria dos problemas, (2) não se aplica, por isso é raro que a descida de coordenadas faça bem em comparação com algoritmos alternativos. Acredito que a razão pela qual ele tenha um bom desempenho no LASSO é que existem muitos truques que podemos usar para decretar a condição (1).
Para descida de gradiente, esse algoritmo funcionará bem se a segunda derivada for relativamente estável, uma boa α