Sợ. Rất sợ.
Năm ngoái, tôi đã phỏng vấn John Nash, tác giả của Optim và Optimx, cho một bài viết trên trang DeveloperWorks của IBM. Chúng tôi đã nói về cách tối ưu hóa hoạt động và tại sao họ thất bại khi họ thất bại. Anh ta dường như coi đó là điều mà họ thường làm. Đó là lý do tại sao chẩn đoán được bao gồm trong gói. Ông cũng nghĩ rằng bạn cần "hiểu vấn đề của mình" và hiểu dữ liệu của mình. Tất cả điều đó có nghĩa là các cảnh báo nên được thực hiện nghiêm túc và là một lời mời để xem xét dữ liệu của bạn theo những cách khác.
Thông thường, trình tối ưu hóa dừng tìm kiếm khi nó không còn có thể cải thiện chức năng mất đi một lượng có ý nghĩa. Về cơ bản, nó không biết đi đâu tiếp theo. Nếu độ dốc của hàm mất không bằng 0 tại thời điểm đó, bạn đã không đạt đến cực hạn của bất kỳ loại nào. Nếu Hessian không dương, nhưng độ dốc bằng 0, bạn đã không tìm thấy mức tối thiểu, nhưng có thể, bạn đã tìm thấy điểm tối đa hoặc yên ngựa. Tuy nhiên, tùy thuộc vào trình tối ưu hóa, kết quả về Hessian có thể không được cung cấp. Trong Optimx, nếu bạn muốn các điều kiện KKT được đánh giá, bạn phải yêu cầu chúng - chúng không được đánh giá theo mặc định. (Những điều kiện này nhìn vào độ dốc và Hessian để xem bạn có thực sự có mức tối thiểu không.)
Vấn đề với các mô hình hỗn hợp là các ước tính phương sai cho các hiệu ứng ngẫu nhiên bị hạn chế là dương, do đó đặt một ranh giới trong khu vực tối ưu hóa. Nhưng giả sử một hiệu ứng ngẫu nhiên cụ thể không thực sự cần thiết trong mô hình của bạn - tức là phương sai của hiệu ứng ngẫu nhiên là 0. Trình tối ưu hóa của bạn sẽ đi vào ranh giới đó, không thể tiến hành và dừng lại với độ dốc khác không. Nếu loại bỏ hiệu ứng ngẫu nhiên đó đã cải thiện sự hội tụ, bạn sẽ biết đó là vấn đề.
Bên cạnh đó, lưu ý rằng lý thuyết khả năng tối đa tiệm cận giả định MLE được tìm thấy ở một điểm bên trong (nghĩa là không nằm trên ranh giới của các giá trị tham số Licit) - do đó, các thử nghiệm tỷ lệ cho các thành phần phương sai có thể không hoạt động khi thực sự giả thuyết không có phương sai thật. Thử nghiệm có thể được thực hiện bằng các thử nghiệm mô phỏng, như được thực hiện trong gói RLRsim.
Đối với tôi, tôi nghi ngờ rằng các trình tối ưu hóa gặp sự cố khi có quá ít dữ liệu cho số lượng tham số hoặc mô hình đề xuất thực sự không phù hợp. Nghĩ rằng dép thủy tinh và em gái xấu xí: bạn không thể đưa dữ liệu của mình vào mô hình, bất kể bạn có cố gắng đến mức nào, và phải cung cấp một cái gì đó.
Ngay cả khi dữ liệu xảy ra phù hợp với mô hình, họ có thể không có khả năng ước tính tất cả các tham số. Một điều buồn cười đã xảy ra với tôi dọc theo những dòng đó. Tôi mô phỏng một số mô hình hỗn hợp để trả lời một câu hỏivề những gì xảy ra nếu bạn không cho phép các hiệu ứng ngẫu nhiên tương quan khi điều chỉnh mô hình hiệu ứng hỗn hợp. Tôi đã mô phỏng dữ liệu với một mối tương quan mạnh mẽ giữa hai hiệu ứng ngẫu nhiên, sau đó phù hợp với mô hình cả hai cách với lmer: đặt ra 0 tương quan và tương quan tự do. Mô hình tương quan phù hợp hơn mô hình không tương thích, nhưng thú vị là trong 1000 mô phỏng, tôi có 13 lỗi khi khớp mô hình thật và 0 lỗi khi lắp mô hình đơn giản hơn. Tôi hoàn toàn không hiểu tại sao điều này xảy ra (và tôi đã lặp lại các sim với kết quả tương tự). Tôi nghi ngờ rằng tham số tương quan là khá vô dụng và trình tối ưu hóa không thể tìm thấy giá trị (vì nó không quan trọng).
Bạn hỏi về những việc cần làm khi các trình tối ưu hóa khác nhau cho kết quả khác nhau. John và tôi đã thảo luận về điểm này. Một số tối ưu hóa, theo ý kiến của ông, chỉ là không tốt! Và tất cả chúng đều có điểm yếu - tức là các bộ dữ liệu sẽ khiến chúng bị lỗi. Đây là lý do tại sao ông viết Optimx, bao gồm một loạt các tối ưu hóa. Bạn có thể chạy một số trên cùng một tập dữ liệu.
Nếu hai trình tối ưu hóa cho cùng một tham số, nhưng chẩn đoán khác nhau - và các tham số đó có ý nghĩa trong thế giới thực - thì tôi sẽ có xu hướng tin tưởng các giá trị tham số. Khó khăn có thể nằm ở chẩn đoán, không phải là bằng chứng ngu ngốc. Nếu bạn chưa cung cấp rõ ràng hàm gradient và / hoặc ma trận Hessian, trình tối ưu hóa sẽ cần ước tính các hàm này từ hàm mất và dữ liệu, đây chỉ là một thứ khác có thể sai.
Nếu bạn cũng nhận được các giá trị tham số khác nhau, thì bạn có thể muốn thử các giá trị bắt đầu khác nhau và xem điều gì xảy ra sau đó. Một số tối ưu hóa và một số vấn đề rất nhạy cảm với các giá trị bắt đầu. Bạn muốn được bắt đầu trong công viên bóng.
lme4
(phiên bản 1.1-7) có hành vi cảnh báo khác nhau mà các tác giả tin rằng ít có khả năng đưa ra cảnh báo "báo động sai". Bạn có thể thử cập nhậtlme4
lên phiên bản mới nhất, lắp lại mô hình và xem liệu bạn có còn nhận được cảnh báo tương tự hay không, ít nhất là trong trường hợp đầu tiên.