Ý nghĩa của một cảnh báo hội tụ trong ánh sáng


16

Tôi đang sử dụng glmerchức năng từ lme4gói trong R và tôi đang sử dụng trình bobyqatối ưu hóa (nghĩa là mặc định trong trường hợp của tôi). Tôi đang nhận được một cảnh báo, và tôi tò mò ý nghĩa của nó.

Warning message:
In optwrap(optimizer, devfun, start, rho$lower, control = control,  :
  convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q

Tôi đã tìm kiếm "một bước khu vực tin cậy không thể giảm q." Tìm thấy một số thông tin trong gói minqa , cho biết "Tham khảo ý kiến ​​Powell để giải thích." Tôi đã làm (bạn cũng có thể, nếu bạn muốn! Xem các tài liệu tham khảo và liên kết đến chúng bên dưới), nhưng tôi không hiểu. Trong thực tế, tôi không tìm thấy bất cứ điều gì về việc giảm q.

MJD Powell (2007) "Phát triển NEWUOA để giảm thiểu không bị ràng buộc mà không có dẫn xuất", Đại học Cambridge, Khoa Toán ứng dụng và Vật lý lý thuyết, Nhóm phân tích số, Báo cáo NA2007 / 05, http://www.damtp.cam.ac.uk/ người dùng / na / NA_ con / NA2007_05.pdf .

MJD Powell (2009), "Thuật toán BOBYQA để tối ưu hóa bị ràng buộc ràng buộc mà không có dẫn xuất", Báo cáo số DAMTP 2009 / NA06, Trung tâm Khoa học toán học, Đại học Cambridge, Vương quốc Anh. http://www.damtp.cam.ac.uk/user/na/NA_ con / RNA2009_06.pdf .

Ps Tôi biết tôi có thể thay đổi trình tối ưu hóa, và tôi sẽ xem liệu tôi có thể nhận được đầu ra mà không có cảnh báo hoặc lỗi không. Tôi cũng sẽ kiểm tra độ dốc và Hessian nếu tôi có thể, theo nhận xét / câu trả lời của Ben Bolker . Tôi đang sử dụng từ glmerbên trong và tôi không chắc câu trả lời của Ben có hoạt động mà không cần mày mò thêm không, nhưng tôi sẽ làm việc với nó sau khi máy tính của tôi hoàn thành những gì nó đang làm, dù sao, tôi lạc đề.dredgeMuMIn

Cập nhật

Theo nhận xét của Tiến sĩ Bolker bên dưới, tôi bắt đầu xem qua mã FORTRAN ( Đây là mã dành cho bất kỳ ai quan tâm đến việc tìm kiếm nhưng không tải xuống ). "430" xuất hiện trong phần bobyqb.f của mã. Chỉ cần tìm kiếm "430" hoặc "giảm Q" để tìm mã liên quan.

Đây là lần gặp đầu tiên của tôi với mã FORTRAN, nhưng tôi nghĩ rằng mã nói rằng nếu đáp ứng các điều kiện sau, hãy tạo cảnh báo: NTRITS> 0, VQUAD> = 0, IPRINT> 0. "NTRITS số nguyên được đặt thành số" vùng tin cậy " các lần lặp đã xảy ra kể từ lần lặp "thay thế" cuối cùng. VQUADxuất hiện nhiều lần và tôi vẫn chưa rõ về tầm quan trọng của nó vì giá trị của nó dường như phụ thuộc vào nhiều biến khác nhau, các giá trị đôi khi phụ thuộc vào các biến khác. Từ bobyqa.f: "Giá trị của IPRINT phải là được đặt thành 0, 1, 2 hoặc 3, điều khiển số lượng in. Cụ thể, không có đầu ra nếu IPRINT = 0 và chỉ có đầu ra khi trả về nếu IPRINT = 1. ".

Vì vậy, có vẻ như nhiệm vụ là tìm ra tầm quan trọng của VQUADviệc> = 0 và, có lẽ, hiểu cách thức / khi IPRINTtrở thành> 0. Tôi sẽ phải quay lại bài báo để xem, nhưng toán học, hoặc tại ít nhất là biểu hiện của nó, là một rào cản đối với tôi. Trừ khi, ai đó biết về thuật toán hoặc có mong muốn tìm hiểu về nó, tôi nghĩ rằng tôi sẽ phải tăng cường hiểu biết về cảnh báo bằng cách quay đi quay lại giữa các bài báo, mã và internet cho đến khi tôi hiểu nó là gì có nghĩa.


3
Tôi nghĩ rằng câu hỏi này có thể là chủ đề cho CV b / c nó dường như là về việc hiểu các ý tưởng hơn là giúp đỡ w / R mỗi se.
gung - Phục hồi Monica

Tôi không chắc chắn có nhiều điều để đề xuất trong trường hợp này ngoài việc đi từng chút một qua các giấy tờ và mã FORTRAN (được bao gồm trong srcthư mục của cran.r-project.org/src/contrib/minqa_1. 2.3.tar.gz ) và xem chính xác những gì đang xảy ra khi lỗi này (mã lỗi 430 trong mã) được kích hoạt ...
Ben Bolker

1
Nhanh chóng lướt qua tờ giấy Tôi nghĩ rằng cảnh báo chỉ ra rằng trình tối ưu hóa không thể tìm thấy hướng trong đó xấp xỉ bậc hai, Q, cho hàm bạn muốn giảm thiểu, F, giảm. Đó là, trình tối ưu hóa ở một điểm rất có thể không tối ưu nhưng nó không biết cách nào để cải thiện mục tiêu. Do đó, nó bị mắc kẹt.
Sven

1
bạn đã đọc lướt qua bài báo nào trong hai bài báo và bạn đã tìm thấy thông tin này ở đâu? (Tôi cũng đã lướt qua nhưng không thể tạo ra sự tương ứng giữa giấy & mã dễ dàng ...)
Ben Bolker

Tôi đọc báo BOBYQA. Tôi đã đi qua nửa đầu trong khoảng 5 phút để có một ý tưởng rộng rãi về những gì họ sẽ đi và Q là gì. Không thể thực sự trỏ đến một trang cụ thể.
Sven

Câu trả lời:


13

f(x)xkk

  • Δk
  • f(x)x= =xkQ(x)
  • SkQk(xk+Sk)||Sk||Δk
  • Skxk+1=xk+sk
  • Nếu không, hãy tinh chỉnh mô hình của bạn và thử lại

sk

Để hiểu giá trị của VQUAD , trước tiên chúng ta phải hiểu một vài biến khác. May mắn thay, có những bình luận tốt ngay bên dưới tuyên bố SUBROUTINE BOBYQB. Các biến nổi bật là:

  • GOPT, độ dốc của mô hình
  • HQ, Hessian của người mẫu
  • Dsk ở trên)

Bắt đầu một vài dòng trên 410, bạn sẽ thấy DO 410 J=1,N. Điều này bắt đầu một vòng lặp for (và vòng lặp for lồng nhau) để đánh giá sự thay đổi được dự đoán bởi mô hình bằng bước thử nghiệm D. Nó tích lũy thay đổi dự đoán trong VQUAD. Phần đầu tiên của vòng lặp for đánh giá các điều khoản bậc nhất và vòng lặp for lồng nhau đánh giá các điều khoản bậc hai. Có lẽ sẽ dễ đọc hơn nếu các vòng lặp được thụt vào, như thế này:

    DO 410 J=1,N
        VQUAD=VQUAD+D(J)*GOPT(J)
        DO 410 I=1,J
            IH=IH+1
            TEMP=D(I)*D(J)
            IF (I .EQ. J) TEMP=HALF*TEMP
410         VQUAD=VQUAD+HQ(IH)*TEMP

Sau đó, có một vòng lặp for khác để kết hợp các tham số khác vào mô hình. Tôi phải thừa nhận, tôi không hoàn toàn hiểu điều này - dự đoán tốt nhất của tôi là nó đặc biệt như cách họ xây dựng mô hình.

Vào cuối của tất cả điều này, VQUADgiữ sự thay đổi trong chức năng mục tiêu được dự đoán bởi mô hình. Vì vậy, nếu VQUADkhông tiêu cực, đó là xấu. Bây giờ người giải cụ thể này có thể sử dụng một tính toán bước thay thế (có thể là tìm kiếm dòng), đó là nơi NTRITSđể chơi. Vì vậy, logic ở 430 đang nói: "Nếu lần lặp cuối cùng sử dụng tính toán bước thay thế VÀ mô hình không dự đoán mức giảm VÀIPRINT > 0, hãy in thông báo cảnh báo." Lưu ý rằng bộ giải sẽ chấm dứt bất kể giá trị của IPRINT.

Nói về IPRINTgiá trị đó được truyền cho BOBYQAbởi chức năng gọi. Trong trường hợp này, thói quen R của bạn là chức năng gọi. Có một verbosetham số để glmer- tôi sẽ là những đồng đô la có cùng giá trị được chuyển đến BOBYQA. Hãy thử đặt verbosethành 0 và bạn có thể sẽ không thấy cảnh báo. Nhưng nó sẽ không thay đổi những gì đang diễn ra dưới mui xe, tất nhiên.


1
Điều này rất hữu ích; Tôi không nghĩ mình sẽ làm tốt hơn, trao tiền thưởng ...
Ben Bolker

@BenBolker. Vì vậy, nên tôi được quan tâm về những gì đang xảy ra ở đây, hoặc là điều này thực sự chỉ là một phiền toái trong mã? (Nói cách khác, cảnh báo này có nghĩa là kết quả của tôi không hợp lệ ??)
bác sĩ lâm sàng

1
lời khuyên chung trong trường hợp này là những gì được nêu trong ?lme4::convergence: thiếu đánh giá toàn diện / chi tiết về quy trình tối ưu hóa, tốt nhất của bạn là so sánh kết quả từ các tối ưu hóa khác nhau.
Ben Bolker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.