Kiedy powinienem * nie * korzystać z funkcji nlm R dla MLE?

25

Natknąłem się na kilka przewodników sugerujących, że używam nlm R do oszacowania maksymalnego prawdopodobieństwa. Ale żadna z nich (w tym dokumentacja R ) nie zawiera wielu teoretycznych wskazówek dotyczących tego, kiedy używać lub nie korzystać z tej funkcji.

O ile mi wiadomo, nlm po prostu wykonuje opadanie gradientu wzdłuż linii metody Newtona. Czy istnieją zasady uzasadniające zastosowanie tego podejścia? Jakie są dostępne alternatywy? Czy są też ograniczenia rozmiaru tablic itp., Które można przekazać do nlm?

Abe
źródło

Odpowiedzi:

39

Istnieje szereg procedur optymalizacji ogólnego przeznaczenia w podstawowej R, że jestem świadomy: optim, nlminb, nlmi constrOptim(który obsługuje liniowe ograniczenia nierówności i połączenia optimpod maską). Oto kilka rzeczy, które warto rozważyć przy wyborze jednego z nich.

  • optimmoże korzystać z wielu różnych algorytmów, w tym gradientu sprzężonego, Newtona, quasi-Newtona, Neldera-Meada i symulowanego wyżarzania. Dwa ostatnie nie wymagają informacji o gradiencie, więc mogą być przydatne, jeśli gradienty nie są dostępne lub nie można ich obliczyć (ale prawdopodobnie będą wolniejsze i wymagają odpowiednio dokładniejszego dostrojenia parametrów). Ma również opcję zwrócenia obliczonego Hesji z rozwiązania, co byłoby potrzebne, jeśli chcesz standardowych błędów wraz z samym rozwiązaniem.

  • nlminbużywa algorytmu quasi-Newtona, który wypełnia tę samą niszę co "L-BFGS-B"metoda optim. Z mojego doświadczenia wynika, że ​​wydaje się to nieco bardziej niezawodne niż optimto, że bardziej prawdopodobne jest zwrócenie rozwiązania w marginalnych przypadkach, w których optimnie uda się zbiegać, chociaż prawdopodobnie jest to zależne od problemu. Ma dobrą funkcję, jeśli podasz wyraźną funkcję gradientu, polegającą na sprawdzaniu liczbowym jej wartości w rozwiązaniu. Jeśli te wartości nie zgadzają się z wartościami uzyskanymi z różnicowania numerycznego, nlminbwyświetli ostrzeżenie; pomaga to upewnić się, że nie popełniłeś błędu przy określaniu gradientu (łatwe do zrobienia ze skomplikowanymi prawdopodobieństwami).

  • nlmużywa tylko algorytmu Newtona. Może to być szybsze niż w przypadku innych algorytmów, ponieważ wymaga mniejszej liczby iteracji, aby osiągnąć zbieżność, ale ma swoje wady. Jest bardziej wrażliwy na kształt prawdopodobieństwa, więc jeśli jest silnie niekwadratowy, może być wolniejszy lub może dojść do konwergencji do fałszywego rozwiązania. Algorytm Newtona wykorzystuje również Hesję, a obliczenia, które w praktyce mogą być wystarczająco wolne, że więcej niż anulują jakiekolwiek teoretyczne przyspieszenie.

Hong Ooi
źródło
17

Kiedy stosować, a nie stosować żadnej konkretnej metody maksymalizacji, zależy w dużej mierze od rodzaju posiadanych danych. nlmbędzie działać dobrze, jeśli powierzchnia prawdopodobieństwa nie jest szczególnie „szorstka” i wszędzie można ją rozróżnić. nlminbzapewnia sposób ograniczenia wartości parametrów do poszczególnych ramek granicznych. optim, który jest prawdopodobnie najczęściej używanym optymalizatorem, udostępnia kilka różnych procedur optymalizacji; na przykład BFGS, L-BFGS-B i symulowane wyżarzanie (za pomocą opcji SANN), z których ta ostatnia może być przydatna, jeśli masz trudny problem z optymalizacją. Istnieje również szereg optymalizatorów dostępnych w CRAN. rgenoud, na przykład, zapewnia algorytm genetyczny do optymalizacji.DEoptimwykorzystuje inną procedurę optymalizacji genetycznej. Algorytmy genetyczne mogą zbiegać się wolno, ale zwykle gwarantuje się, że zbiegają się (w czasie), nawet jeśli istnieje prawdopodobieństwo nieciągłości. Nie wiem o tym DEoptim, ale rgenoudjest skonfigurowany do korzystania snowz równoległego przetwarzania, co nieco pomaga.

Prawdopodobnie nieco niezadowalającą odpowiedzią jest to, że powinieneś użyć nlminnego optymalizatora, jeśli działa on na posiadane dane. Jeśli masz dobrze zachowane prawdopodobieństwo, każda z procedur dostarczonych przez optimlub nlmda ci ten sam wynik. Niektóre mogą być szybsze niż inne, co może, ale nie musi mieć znaczenia, w zależności od rozmiaru zestawu danych itp. Jeśli chodzi o liczbę parametrów, które te procedury mogą obsłużyć, nie wiem, choć prawdopodobnie jest ich sporo. Oczywiście im więcej parametrów masz, tym większe prawdopodobieństwo wystąpienia problemów z konwergencją.

Jason Morgan
źródło