Wat is het R-equivalent van de fminunc-functie van Matlab?

Om de optimale theta te berekenen, b.v. in logistische regressie moet ik een costFunction maken (de functie die moet worden geminimaliseerd) die vervolgens wordt doorgegeven aan fminunc om de optimale theta te verkrijgen. Ook, als de gradiënt van costFunction kan worden berekend, zet ik de 'GradObj' optie op 'aan' met

options = optimset('GradObj','on');

en codeer de costFunction zodanig dat deze als een tweede uitgangsargument de gradiëntwaarde g van X retourneert. Dan geef ik

[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

waarbij X de gegevensmatrix en y het antwoord is. Hoe kan ik het bovenstaande in R implementeren?

11

2 antwoord

Bekijk de functie optim . Het kan onbeperkte minimalisatie doen met behulp van de methode = 'L-BFGS-B' en u kunt een analytische functie opgeven om ook het verloop te berekenen

BEWERK. Zoals Ben terecht heeft opgemerkt, voert fminunc een onbeperkte optimalisatie uit, die ook kan worden bereikt met de functie optim door Nelder-Mead of te kiezen BFGS . Bovendien merkte ik ook uit de documentatie van fminunc dat het grootschalige optimalisatie doet met behulp van trust regiomethoden. Er is een R-pakket vertrouwen waarvan ik denk dat het hetzelfde doet. Ik zou aanraden een kijkje te nemen in de optimalisatie taakweergave van R .

9
toegevoegd
Ik ben in de war, ik dacht dat het OP om onbeperkte optimalisatie vroeg en dat je de beperkte optimalisatie beschrijft ...? (Niet dat het zo belangrijk is, in elk geval is optim het juiste antwoord.)
toegevoegd de auteur Ben Bolker, de bron
je hebt gelijk! ik weet het niet, om de een of andere reden nam ik aan dat hij vroeg om onbeperkte optimalisatie. ik heb een bewerking toegevoegd die hetzelfde wijst.
toegevoegd de auteur Ramnath, de bron

In de R kunt u de functie nlminb in de R gebruiken om een ​​beperkte optimalisatie uit te voeren!

nlminb (start, doelstelling, verloop = NULL, hessian = NULL, ..., scale = 1, control = list (), lower = -Inf, upper = Inf)

Het begin is een vector die alle initiële waarden van parameters bevat. doel is de kostenfunctie of elke andere functie die u wilt minimaliseren.

1
toegevoegd