Ne zaman * olmamalı * MLE için R'nin nlm fonksiyonunu kullanmalıyım?


25

Maksimum olasılık tahmini için R's nlm kullandığımı öne süren birkaç rehbere rastladım. Ancak hiçbiri ( R'nin dokümantasyonu dahil ), bu fonksiyonu ne zaman kullanacağınız veya kullanmayacağınız konusunda çok teorik rehberlik yapmaz.

Söyleyebileceğim kadarıyla, nlm Newton'un metodunun çizgileri boyunca sadece gradyan iniş yapıyor. Bu yaklaşımı kullanmanın makul olduğu zamanlar için prensipler var mı? Hangi alternatifler mevcut? Ayrıca, dizilerin boyutu vb. Sınırlar var mı?

Yanıtlar:


39

Orada Bildiğim kadarıyla bu temel Ar genel amaçlı optimizasyon rutinleri bir dizi şunlardır: optim, nlminb, nlmve constrOptim(doğrusal eşitsizlik kısıtlamaları ve aramaları işleyen optimbaşlık altında). Hangisini kullanacağınızı seçerken düşünmek isteyebileceğiniz bazı şeyler.

  • optimeşlenik gradyan, Newton, yarı-Newton, Nelder-Mead ve benzetilmiş tavlama dahil birçok farklı algoritma kullanabilir. Son ikisi degrade bilgisine ihtiyaç duymaz ve bu nedenle degradeler hesaplanmaya uygun değilse veya hesaplanamıyorsa yararlı olabilir (ancak daha yavaş olmaları ve sırasıyla daha fazla parametre ince ayarı gerektirmeleri muhtemeldir). Ayrıca, hesaplanan Hessian'ı, çözümün kendisiyle birlikte standart hatalar istiyorsanız, ihtiyaç duyacağınız çözümde iade etme seçeneğine de sahiptir.

  • nlminb"L-BFGS-B"yöntemi ile aynı nişi dolduran bir yarı-Newton algoritması kullanır optim. Tecrübelerime göre optim, optimmuhtemelen soruna bağlı olmasına rağmen, bir araya gelemeyecekleri marjinal durumlarda bir çözüm getirme ihtimalinden daha güçlü görünüyor . Açık bir gradyan işlevi sağlarsanız, çözümdeki değerlerini sayısal olarak kontrol etmenin güzel bir özelliği vardır. Bu değerler sayısal farklılıklardan elde edilen değerlerle eşleşmezse, nlminbbir uyarı verir; Bu, degradeyi belirlerken bir hata yapmadığınızdan emin olmanıza yardımcı olur (karmaşık olasılıklarla yapmak kolaydır).

  • nlmsadece bir Newton algoritması kullanır. Bu, yakınsamaya ulaşmak için daha az yinelemeye ihtiyaç duyması anlamında diğer algoritmalardan daha hızlı olabilir, ancak kendi dezavantajları vardır. Olasılığın şekline daha duyarlıdır, bu yüzden eğer çok kuadratik olmayan bir şeyse, yavaşlayabilir veya yanlış bir çözüme yakınlaşabilirsiniz. Newton algoritması aynı zamanda Hessian'ı kullanır ve pratikte herhangi bir teorik hızlandırmayı iptal etmekten daha fazla pratik olabilecek kadar yavaş olabilir.


17

Ne zaman ne zaman kullanılacağı ve belirli bir en üst düzeye çıkarma yönteminin kullanılmaması büyük ölçüde sahip olduğunuz veri türüne bağlıdır. nlmOlabilirlik yüzeyi özellikle "pürüzlü" değilse ve her yerde farklılaşırsa gayet iyi çalışacaktır. nlminbparametre değerlerini belirli sınırlayıcı kutularla sınırlamanın bir yolunu sağlar. optimMuhtemelen en çok kullanılan optimizer olan, birkaç farklı optimizasyon rutini sağlar; örneğin, BFGS, L-BFGS-B ve benzetilmiş tavlama (SANN opsiyonu ile), zor bir optimizasyon probleminiz varsa kullanışlı olabilir. Ayrıca, CRAN'da kullanılabilen çeşitli optimize ediciler de vardır. rgenoudörneğin, optimizasyon için genetik bir algoritma sağlar.DEoptimfarklı bir genetik optimizasyon rutini kullanır. Genetik algoritmalar yakınsamak için yavaş olabilir, ancak olasılıkta süreksizlik olsalar da (zaman içinde) yakınsama olmaları garanti edilir. Bilmiyorum DEoptim, ama bir rgenoudşekilde snowyardımcı olan paralel işleme için kullanmak üzere ayarlanmış .

Bu nedenle, muhtemelen biraz tatmin edici bir cevap, sahip olduğunuz nlmveriler için çalışıyorsa kullanmanız veya başka bir optimize edici kullanmanız gerektiğidir . İyi niyetli bir olasılığa sahipseniz, size verilen rutinlerden herhangi biri optimya nlmda size aynı sonucu verecektir. Bazıları, veri kümesinin boyutuna, vb. Bağlı olarak, diğerlerinden daha hızlı olabilir, önemli olabilir veya olmayabilir. Bu rutinlerin işleyebileceği parametre sayısı için, muhtemelen bir kaç tanesi olmasına rağmen, bilmiyorum. Tabii ki, ne kadar çok parametreniz varsa, yakınsama problemleriyle karşılaşmanız o kadar muhtemeldir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.