Wann sollte ich Rs nlm-Funktion für MLE * nicht * verwenden?

25

Ich bin auf ein paar Anleitungen gestoßen, die darauf hindeuten, dass ich Rs nlm für die Schätzung der maximalen Wahrscheinlichkeit verwende. Keiner von ihnen (einschließlich der Dokumentation von R ) bietet jedoch theoretische Anhaltspunkte für die Verwendung oder Nichtverwendung der Funktion.

Soweit ich das beurteilen kann, führt nlm nur einen Gradientenabstieg nach Newtons Methode durch. Gibt es Grundsätze, wann es sinnvoll ist, diesen Ansatz zu verwenden? Welche Alternativen gibt es? Gibt es auch Grenzen für die Größe der Arrays usw., die an nlm übergeben werden können?

Abe
quelle

Antworten:

39

Es gibt eine Reihe von Allzweck-Optimierungsroutinen in der Basis R , dass ich bin mir dessen bewusst: optim, nlminb, nlmund constrOptim(die linearen Ungleichungen behandelt und Anrufe optimunter der Haube). Hier sind einige Dinge, die Sie bei der Auswahl der zu verwendenden Option berücksichtigen sollten.

  • optimkann eine Reihe von verschiedenen Algorithmen verwenden, einschließlich konjugiertem Gradienten, Newton, Quasi-Newton, Nelder-Mead und simuliertem Tempern. Die letzten beiden benötigen keine Gradienteninformationen und können daher nützlich sein, wenn Gradienten nicht verfügbar sind oder nicht berechnet werden können (sie sind jedoch wahrscheinlich langsamer und erfordern eine genauere Parametereinstellung). Es besteht auch die Möglichkeit, den berechneten Hessischen Wert an der Lösung zurückzugeben, den Sie benötigen würden, wenn Sie Standardfehler zusammen mit der Lösung selbst wünschen.

  • nlminbverwendet einen Quasi-Newton-Algorithmus, der dieselbe Nische wie die "L-BFGS-B"Methode ausfüllt optim. Nach meiner Erfahrung scheint es ein bisschen robuster zu sein, als optimdass es in Grenzfällen, in denen optimdie Konvergenz fehlschlägt, mit größerer Wahrscheinlichkeit eine Lösung liefert, obwohl dies wahrscheinlich problemabhängig ist. Es hat die nette Funktion, wenn Sie eine explizite Gradientenfunktion bereitstellen, eine numerische Überprüfung seiner Werte an der Lösung durchzuführen. Wenn diese Werte nicht mit denen übereinstimmen, die durch numerische Differenzierung erhalten wurden, nlminbwird eine Warnung ausgegeben. Auf diese Weise stellen Sie sicher, dass Sie bei der Angabe des Verlaufs keinen Fehler gemacht haben (einfach mit komplizierten Wahrscheinlichkeiten zu tun).

  • nlmVerwendet nur einen Newton-Algorithmus. Dies kann schneller sein als andere Algorithmen in dem Sinne, dass weniger Iterationen erforderlich sind, um Konvergenz zu erreichen, hat jedoch seine eigenen Nachteile. Es reagiert empfindlicher auf die Form der Wahrscheinlichkeit. Wenn es also stark nicht quadratisch ist, ist es möglicherweise langsamer oder es kommt zu einer Konvergenz mit einer falschen Lösung. Der Newton-Algorithmus verwendet auch den Hessischen Algorithmus und Berechnungen, die in der Praxis so langsam sein können, dass theoretische Beschleunigungen mehr als zunichte gemacht werden.

Hong Ooi
quelle
17

Wann eine bestimmte Maximierungsmethode verwendet und nicht verwendet wird, hängt in hohem Maße von der Art der Daten ab, über die Sie verfügen. nlmfunktioniert einwandfrei, wenn die Wahrscheinlichkeitsoberfläche nicht besonders "rau" und überall differenzierbar ist. nlminbBietet eine Möglichkeit, Parameterwerte auf bestimmte Begrenzungsrahmen zu beschränken. optimDas wahrscheinlich am häufigsten verwendete Optimierungsprogramm bietet einige verschiedene Optimierungsroutinen. Zum Beispiel BFGS, L-BFGS-B und simuliertes Tempern (über die SANN-Option). Letzteres kann hilfreich sein, wenn Sie ein schwieriges Optimierungsproblem haben. Es gibt auch eine Reihe von Optimierern für CRAN. rgenoudbietet zum Beispiel einen genetischen Algorithmus zur Optimierung.DEoptimverwendet eine andere genetische Optimierungsroutine. Die Konvergenz von genetischen Algorithmen kann langsam sein, wird jedoch in der Regel (zeitlich) garantiert, selbst wenn die Wahrscheinlichkeit von Diskontinuitäten herrscht. Ich weiß nicht DEoptim, aber rgenoudist snowfür die parallele Verarbeitung eingerichtet, was ein wenig hilft.

Eine wahrscheinlich etwas unbefriedigende Antwort ist, dass Sie nlmeinen anderen Optimierer verwenden sollten, wenn er für Ihre Daten funktioniert. Wenn Sie eine gute Wahrscheinlichkeit haben, wird eine der von optimoder bereitgestellten Routinen nlmdas gleiche Ergebnis liefern. Einige sind möglicherweise schneller als andere, was je nach Größe des Datasets usw. von Bedeutung sein kann oder auch nicht. Was die Anzahl der Parameter betrifft, die diese Routinen verarbeiten können, weiß ich nicht, obwohl es wahrscheinlich einige sind. Je mehr Parameter Sie haben, desto wahrscheinlicher werden Sie natürlich auf Probleme mit der Konvergenz stoßen.

Jason Morgan
quelle