otimização restrita sem gradiente

abelha

Essa é uma questão mais geral, um tanto independente dos dados, então não tenho MWE.

Muitas vezes tenho funções fn(.)que implementam algoritmos que não são diferenciáveis, mas que desejo otimizar. Eu costumo usar optim(.)com seu método padrão, que funciona bem para mim em termos de velocidade e resultados.

No entanto, agora tenho um problema que exige que eu defina limites em um dos vários parâmetros de fn. Pelo que entendi, optim(method="L-BFGS-B",...)me permite definir limites para os parâmetros, mas também requer um gradiente. Como fn(.)não é uma função matemática, mas um algoritmo, suspeito que ela não tenha um gradiente que eu pudesse derivar por meio da diferenciação. Isso me leva a perguntar se existe uma maneira de realizar a otimização restrita em R de uma forma que não exija que eu forneça um gradiente.

Eu olhei para algumas fontes, por exemplo, os textos de John C. Nash sobre este tópico, mas até onde eu os entendo, eles dizem respeito principalmente a funções diferenciáveis ​​onde gradientes podem ser fornecidos.

Ben Bolker

Resumindo os comentários até agora (que são todas as coisas que eu mesmo teria dito):

  • você pode usar method="L-BFGS-B"sem fornecer gradientes explícitos (o grargumento é opcional); nesse caso, R calculará aproximações para a derivada por diferenciação finita (@ G.Grothendieck). É a solução mais simples, porque funciona "fora da caixa": você pode tentar e ver se funciona para você. Contudo:
    • L-BFGS-Bé provavelmente o mais meticuloso dos métodos fornecidos por optim()( por exemplo, não pode lidar com o caso em que um conjunto de parâmetros de teste avalia para NA)
    • aproximações de diferenças finitas são relativamente lentas e numericamente instáveis ​​(mas, boas para problemas simples)
  • para casos simples, você pode ajustar o parâmetro em uma escala transformada, por exemplo, se bfor um parâmetro que deve ser positivo, você pode usar log_bcomo um parâmetro (e transformá-lo via b <- exp(log_b)em sua função objetivo). (@SamMason) Mas:
    • nem sempre há uma transformação simples que vai atingir a restrição que você deseja
    • se a solução ótima está no limite, a transformação causará problemas
  • há uma variedade de otimizadores sem derivativos com restrições (normalmente "restrições de caixa", ou seja, limites inferiores e / ou superiores independentes de um ou mais parâmetros) (@ErwinKalvelagen): dfoptimtem alguns, usei o nloptrpacote (e seu otimizador BOBYQA ) extensivamente, também minqatem alguns. Essa é a solução que eu recomendaria.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Maximização restrita (otimização) em R

Configuração de otimização linear restrita

Algoritmo Nelder Mead para otimização restrita?

Problema de otimização restrita: Python

Otimização de objetivo único restrita

Otimização da média circular restrita

Como mostrar o JOptionPane acima do JDialog sem janela restrita

Gradiente linear sem transição de cor

Semântica restrita de C ++

Traga o foco para a forma do usuário sem janela restrita sem clicar (Excel 2010 VBA)

Otimização restrita em uma grade, mantendo as proporções

Otimização restrita MATLAB com restrições theta

O formulário sem janela restrita do VBA para as teclas de função

Impedir o acesso à página restrita sem login no Jsf2

Classe de diálogo sem janela restrita não visível

Gradiente descendente sem derivado

Gradiente linear combinado com imagem de fundo sem exibição

Defina o foco de volta para o Excel após carregar o formulário do usuário sem janela restrita

Otimização restrita para função multivariável não linear em Java

Otimização restrita onde a restrição é calculada como parte da função objetivo

Otimização restrita para problema de precificação de vários produtos

Scipy minimiza função restrita

Qual é a diferença entre a otimização de programação linear e uma otimização de gradiente descendente?

Como executar o código java em uma sandbox restrita (sem rede, acesso ao sistema de arquivos)

Bloquear as teclas ESC e Enter na caixa de diálogo sem janela restrita (Win32, não MFC)

wxPython: Por que a caixa de diálogo não modal e sem janela restrita permanece no topo da janela pai?

Aquisição contínua de câmera acompanhada por um diálogo sem janela restrita por dm-script

Existe uma maneira de chamar o formulário sem janela restrita em páginas usando cakephp3

Como enviar dados do filho para o pai instantaneamente na janela do aplicativo WPF sem janela restrita

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo