Jakie są zalecane sposoby wykonywania nieliniowych najmniejszych kwadratów, min , z ograniczeniami ramek ? Wydaje mi się (głupcy się spieszą), że można by uczynić kwadratowe ograniczenia kwadratowymi i zminimalizować
gdzie jest „funkcją wanny” w kształcie \ ___ /,
.
Czy to działa w teorii, czy w praktyce?
(Wydaje się, że istnieje wiele wielu prac teoretycznych na temat NLS +, ale moje zainteresowanie jest praktyczne -
rzeczywiste lub realistyczne przypadki testowe pomogłyby mi wybrać jedną z metod).
(Eksperci, proszę dodać tagi: „najmniejszych kwadratów”?)
optimization
constraints
denis
źródło
źródło
Odpowiedzi:
Dodanie kwadratowych warunków kary, aby pozbyć się ograniczeń, jest prostym podejściem zapewniającym dokładność rzędu 1 / współczynnik kary. Dlatego nie jest to zalecane ze względu na wysoką dokładność, chyba że pozwolisz, aby kara spadła do nieskończoności podczas obliczeń. Ale wysoki współczynnik kary powoduje, że Hesjan jest bardzo nieuzasadniony, co ogranicza całkowitą dokładność możliwą do osiągnięcia bez wyraźnego uwzględnienia ograniczeń.
Należy pamiętać, że ograniczenia ograniczone są znacznie łatwiejsze do opanowania niż ograniczenia ogólne, dlatego praktycznie nigdy nie są przekształcane w kary.
Solver L-BFGS-B (używany z historią około 5-wymiarową) zazwyczaj rozwiązuje ograniczone problemy bardzo niezawodnie i szybko w obu niskich wysokich wymiarach. Wyjątkiem są nieporozumienia dotyczące problemów, które mogą stać się bardzo płaskie z dala od rozwiązań, w których łatwo utknąć przy zejściu.
Przeprowadziliśmy wiele eksperymentów na bardzo różnych funkcjach w wielu różnych wymiarach, z wieloma dostępnymi solverami, ponieważ potrzebowaliśmy bardzo solidnego solvera z ograniczonymi ograniczeniami w ramach naszego globalnego oprogramowania optymalizacyjnego. L-BFGS-B wyraźnie wyróżnia się jako metoda ogólnego zastosowania, choć oczywiście w przypadku problemów z małymi innymi rozwiązaniami działają znacznie lepiej. Dlatego poleciłbym L-BFGS-B jako pierwszy wybór i wypróbowałbym alternatywne techniki na wypadek, gdyby L-BFGS-B źle radził sobie z określoną klasą problemów.
źródło
Chciałbym po prostu użyć uniwersalnego solvera NLP IPOPT . Jest to najbardziej niezawodny solver spośród tych, których próbowałem.
Jeśli nie masz specjalnych wymagań, nie ma powodu, dla którego powinieneś nalegać na rozwiązanie specyficzne dla problemu, które działa tylko dla NLS z ograniczeniami pudełkowymi.
Zmiana wymagań (np. Dodanie ograniczeń nieliniowych) spowodowałaby poważny ból głowy związany z rozwiązaniem konkretnego problemu. Nie będziesz mieć takich problemów, jeśli użyjesz IPOPT ogólnego przeznaczenia.
AKTUALIZACJA: Możesz wypróbować L-BFGS z IPOPT , patrz pod Quasi-Newton w dokumentacji.
Procedura rozwiązania może stać się szybsza kosztem zepsucia niezwykłej niezawodności IPOPT. Moim zdaniem użyj dokładnych instrumentów pochodnych, jeśli są dostępne. Zaczynam bałaganować przybliżeniami (takimi jak L-BFGS) tylko wtedy, gdy mam udowodnione problemy z wydajnością.
źródło
Pakiet CRAN R minpack.lm zapewnia implementację Levenberg-Marquardt z ograniczeniami pudełkowymi.
Ogólnie rzecz biorąc, Levenberg-Marquardt jest znacznie bardziej odpowiedni niż L-BFGS-B w przypadku problemów z najmniejszymi kwadratami. Będzie lepiej (znacznie) lepiej pasował do trudnych problemów. Będzie także znacznie szybszy niż IPOPT ogólnego przeznaczenia, ponieważ jest dostosowany do nieliniowych problemów z najmniejszymi kwadratami.
Pakiet R wybiera bardzo proste podejście do projekcji w celu wymuszenia ograniczeń (patrz kod źródłowy ). W zależności od implementacji LM, której używasz, włączenie może być proste.
Sugestia w komentarzach dotyczących zastosowania transformacji (na przykład transformacji sinusoidalnej jak w scipy) jest również dobrą, prostą alternatywą do przekształcenia twojego nieograniczonego algorytmu LM w ograniczony. Będziesz także musiał uwzględnić transformację w Jakubie, jeśli Jakub jest analityczny.
źródło
(Lata później) dwa solwery, które obsługują ograniczenia pola:
Scipy najmniej_squares ma 3 metody, z obszerną dokumentacją:
źródło