Kapan saya * tidak * menggunakan fungsi nlm R untuk MLE?

25

Saya telah menemukan beberapa panduan yang menyarankan agar saya menggunakan R's nlm untuk estimasi kemungkinan maksimum. Tetapi tidak satu pun dari mereka (termasuk dokumentasi R ) yang memberikan banyak petunjuk teoritis tentang kapan harus menggunakan atau tidak menggunakan fungsi tersebut.

Sejauh yang saya tahu, nlm hanya melakukan gradient descent di sepanjang garis metode Newton. Adakah prinsip untuk kapan masuk akal menggunakan pendekatan ini? Alternatif apa yang tersedia? Juga, apakah ada batasan ukuran array, dll. Yang bisa dilewatkan ke nlm?

Abe
sumber

Jawaban:

39

Ada sejumlah tujuan umum optimasi rutinitas dalam basis R bahwa aku menyadari: optim, nlminb, nlmdan constrOptim(yang menangani kendala pertidaksamaan linear, dan panggilan optimdi bawah tenda). Berikut adalah beberapa hal yang mungkin ingin Anda pertimbangkan dalam memilih mana yang akan digunakan.

  • optimdapat menggunakan sejumlah algoritma yang berbeda termasuk gradien konjugat, Newton, kuasi-Newton, Nelder-Mead dan anil simulasi. Dua yang terakhir tidak memerlukan informasi gradien dan karenanya dapat berguna jika gradien tidak tersedia atau tidak layak untuk dihitung (tetapi masing-masing cenderung lebih lambat dan memerlukan lebih banyak penyesuaian parameter). Ia juga memiliki opsi untuk mengembalikan Hessian yang dihitung pada solusi, yang akan Anda perlukan jika Anda ingin kesalahan standar bersama dengan solusi itu sendiri.

  • nlminbmenggunakan algoritma kuasi-Newton yang mengisi ceruk yang sama seperti "L-BFGS-B"metode di optim. Dalam pengalaman saya, itu tampak sedikit lebih kuat daripada optimdalam hal itu lebih mungkin untuk mengembalikan solusi dalam kasus-kasus marjinal di mana optimakan gagal untuk bertemu, meskipun itu mungkin tergantung pada masalah. Ini memiliki fitur yang bagus, jika Anda memberikan fungsi gradien eksplisit, untuk melakukan pemeriksaan numerik dari nilainya pada solusi. Jika nilai-nilai ini tidak cocok dengan yang diperoleh dari perbedaan numerik, nlminbakan memberikan peringatan; ini membantu memastikan Anda tidak melakukan kesalahan dalam menentukan gradien (mudah dilakukan dengan kemungkinan yang rumit).

  • nlmhanya menggunakan algoritma Newton. Ini bisa lebih cepat daripada algoritma lain dalam arti membutuhkan lebih sedikit iterasi untuk mencapai konvergensi, tetapi memiliki kelemahannya sendiri. Ini lebih sensitif terhadap bentuk kemungkinan, jadi jika sangat non-kuadrat, mungkin lebih lambat atau Anda mungkin mendapatkan konvergensi ke solusi yang salah. Algoritme Newton juga menggunakan Hessian, dan komputasi yang dapat cukup lambat dalam praktik sehingga lebih dari membatalkan percepatan teoritis apa pun.

Hong Ooi
sumber
17

Kapan menggunakan dan tidak menggunakan metode maksimalisasi apa pun sangat tergantung pada tipe data yang Anda miliki. nlmakan bekerja dengan baik jika permukaan kemungkinan tidak terlalu "kasar" dan di mana-mana dapat dibedakan. nlminbmenyediakan cara untuk membatasi nilai parameter ke kotak pembatas tertentu. optim, yang mungkin merupakan pengoptimal yang paling sering digunakan, menyediakan beberapa rutinitas pengoptimalan yang berbeda; misalnya, BFGS, L-BFGS-B, dan simulated annealing (melalui opsi SANN), yang terakhir mungkin berguna jika Anda memiliki masalah optimalisasi yang sulit. Ada juga sejumlah pengoptimal yang tersedia di CRAN. rgenoud, misalnya, menyediakan algoritme genetik untuk pengoptimalan.DEoptimmenggunakan rutin optimasi genetik yang berbeda. Algoritma genetika bisa lambat untuk konvergen, tetapi biasanya dijamin untuk konvergen (dalam waktu) bahkan ketika ada diskontinuitas dalam kemungkinan. Saya tidak tahu DEoptim, tetapi rgenoudsudah diatur untuk digunakan snowuntuk pemrosesan paralel, yang agak membantu.

Jadi, jawaban yang mungkin agak tidak memuaskan adalah Anda harus menggunakan nlmatau pengoptimal lainnya jika berfungsi untuk data yang Anda miliki. Jika Anda memiliki kemungkinan berperilaku baik, salah satu rutinitas yang disediakan oleh optimatau nlmakan memberi Anda hasil yang sama. Beberapa mungkin lebih cepat daripada yang lain, yang mungkin atau mungkin tidak masalah, tergantung pada ukuran dataset, dll. Adapun jumlah parameter yang bisa ditangani oleh rutinitas ini, saya tidak tahu, meskipun mungkin beberapa. Tentu saja, semakin banyak parameter yang Anda miliki, semakin besar kemungkinan Anda mengalami masalah dengan konvergensi.

Jason Morgan
sumber