Existe-t-il un moyen de maximiser / minimiser une fonction personnalisée dans R?


18

J'essaie de minimiser une fonction personnalisée. Il doit accepter cinq paramètres et l'ensemble de données et effectuer toutes sortes de calculs, en produisant un seul nombre en sortie. Je veux trouver une combinaison de cinq paramètres d'entrée qui donne la plus petite sortie de ma fonction.

Réponses:


23

J'ai écrit un article répertoriant quelques tutoriels en utilisantoptim .

Voici une citation de la section pertinente:

  • "La combinaison de la fonction R optimet d'une fonction objectif créée sur mesure, telle qu'une fonction de log-vraisemblance moins fournit un outil puissant pour l'estimation des paramètres des modèles personnalisés.

  • 1
    Dernièrement, j'ai joué avec DEoptim comme un bon optimiseur "sans point de départ nécessaire".
    Mike Lawrence

    1
    Une publication récente de John Myles White sur la commande optim dans R peut également être intéressante .
    Andy W

    @Mike a accepté; DEoptim offre une alternative plus robuste (DE = évolution différentielle)
    Abe

    12

    En plus de la réponse de Jeromy Anglim, j'ai d'autres liens.

    A côté de optimlà est une autre fonction dans la base R qui permet ce que vous voulez: nlminb. Vérifiez ?nlminbet ?optimpour des exemples d'utilisation.

    Il y a un tas de packages qui peuvent faire des optimisations. Ce que j'ai trouvé le plus intéressant, ce sont les packages optimx et, tout nouveau, le package neldermead pour différentes versions de l'algorithme simplex.

    En outre, vous voudrez peut-être consulter la vue des tâches CRAN sur l'optimisation pour plus de packages

    Veuillez noter que mes recommandations supposent toutes que vous avez une fonction déterministe (c.-à-d. Pas de bruit aléatoire). Pour les fonctions qui ne sont pas strictement déterministes (ou trop grandes), vous devrez utiliser des algorithmes tels que le recuit simulé ou des algorithmes génétiques. Mais la vue des tâches CRAN devrait avoir ce dont vous avez besoin.


    1

    Votre fonction est-elle continue et différenciable? Vous pourrez peut-être utiliser optim, soit avec des dérivés fournis par l'utilisateur, soit avec des dérivés approximés numériquement.

    En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
    Licensed under cc by-sa 3.0 with attribution required.