Làm thế nào để giải quyết độ lệch tuyệt đối tối thiểu bằng phương pháp đơn giản?


12

Dưới đây là độ lệch vấn đề tối thiểu tuyệt đối dưới liên quan: . Tôi biết nó có thể được sắp xếp lại thành vấn đề LP theo cách sau:argminwL(w)=i=1n|yiwTx|

mini=1nui

uixTwyii=1,,n

ui(xTwyi)i=1,,n

Nhưng tôi không có ý tưởng để giải quyết từng bước một, vì tôi là người mới chơi LP. Bạn còn ý kiến ​​nào không? Cảm ơn trước!

BIÊN TẬP:

Đây là giai đoạn mới nhất tôi đã đạt được tại vấn đề này. Tôi đang cố gắng giải quyết vấn đề theo ghi chú này :

Bước 1: Xây dựng nó thành một hình thức tiêu chuẩn

minZ=i=1nui

xTwui+s1=yii=1,,n

xTw+ui+s2=yii=1,,n

tùy thuộc vào s10;s20;ui0 i=1,...,n

Bước 2: Xây dựng một tableau ban đầu

           |      |    0      |    1   |  0  |   0   |   0    
 basic var | coef |  $p_0$    |  $u_i$ |  W  | $s_1$ | $s_2$ 
      $s_1$| 0    |  $y_i$    |   -1   |  x  |   1   |   0
      $s_2 | 0    |  $-y_i$   |    1   |  x  |   0   |   1
      z    |      |    0      |    -1  |  0  |   0   |   0

Bước 3: Chọn các biến cơ bản

được chọn làm biến cơ sở đầu vào. Đây là một vấn đề. Khi chọn biến cơ sở đầu ra, rõ ràng y i / - 1 = - y i / 1 =ui . Theo ghi chú, nếu y i0 , vấn đề có giải pháp không giới hạn.yi/1=yi/1=yiyi0

Tôi hoàn toàn bị mất ở đây. Tôi tự hỏi nếu có bất cứ điều gì sai và làm thế nào tôi nên tiếp tục các bước sau.


2
Thực tế, bạn sử dụng một trình giải chương trình tuyến tính thay vì viết riêng của bạn. Tôi giới thiệu gurobi.
Matthew Drury

1
@MatthewDrury Cảm ơn bạn đã trả lời. Nhưng tôi muốn biết chính xác LP hoạt động như thế nào trong vấn đề này, thay vì chỉ đưa ra câu trả lời.
cửa nam

1
Bạn có biết hoặc bạn đã Google 'phương pháp đơn giản'?

2
Chương trình tuyến tính chỉ là một công thức của vấn đề của bạn về mặt tối đa hóa (hoặc tối thiểu hóa) chức năng mục tiêu tuyến tính chịu một số ràng buộc tuyến tính. Nó không "giải quyết" chính nó. Có một loạt các thuật toán giải quyết các chương trình được xây dựng đặc biệt này, một trong những thuật toán được sử dụng phổ biến nhất là Simplex
Łukasz Grad

1
@fcop Vâng, thực sự tôi đã đọc một số ghi chú về phương pháp đơn giản. Nhưng tôi không biết làm thế nào để tạo ra nó cho vấn đề này. Như các ví dụ trong các ghi chú là rất đơn giản và cụ thể. Tôi không thể tìm thấy một bắt đầu với các vấn đề chung. Tôi đã trải qua hai đêm trong vấn đề này, nhưng vẫn còn bối rối. Lấy làm tiếc.
cửa nam

Câu trả lời:


5

Bạn muốn một ví dụ để giải quyết độ lệch tối thiểu tuyệt đối bằng lập trình tuyến tính. Tôi sẽ chỉ cho bạn một triển khai đơn giản trong R. Hồi quy lượng tử là một khái quát về độ lệch tuyệt đối ít nhất, đó là trường hợp của lượng tử 0,5, vì vậy tôi sẽ chỉ ra một giải pháp cho hồi quy lượng tử. Sau đó, bạn có thể kiểm tra kết quả với quantreggói R :

rq_LP  <-  function(x, Y, r=0.5, intercept=TRUE) {
    require("lpSolve")
    if (intercept) X  <-  cbind(1, x) else X <-  cbind(x)
    N   <-  length(Y)
    n  <-  nrow(X)
    stopifnot(n == N)
    p  <-  ncol(X)
    c  <-  c(rep(r, n), rep(1-r, n), rep(0, 2*p))  # cost coefficient vector
    A  <- cbind(diag(n), -diag(n), X, -X)
    res  <-  lp("min", c, A, "=", Y, compute.sens=1)
### Desempaquetar los coefs:
    sol <- res$solution
    coef1  <-  sol[(2*n+1):(2*n+2*p)]
    coef <- numeric(length=p)
    for (i in seq(along=coef)) {
         coef[i] <- (if(coef1[i]<=0)-1 else +1) *  max(coef1[i], coef1[i+p])
    }
    return(coef)
    }

Sau đó, chúng tôi sử dụng nó trong một ví dụ đơn giản:

library(robustbase)
data(starsCYG)
Y  <- starsCYG[, 2]
x  <- starsCYG[, 1]
rq_LP(x, Y)
[1]  8.1492045 -0.6931818

sau đó chính bạn có thể làm kiểm tra với quantreg.


2
+1 Tôi là một fan hâm mộ lớn của việc làm mọi thứ bằng tay và khác biệt sau đó so sánh!
Haitao Du

3
Đối với một bài đăng có giải thích thêm một chút, hãy xem hồi quy lượng tử
Dừng câu hỏi kết thúc nhanh

2

Lập trình tuyến tính có thể được khái quát hóa với tối ưu hóa lồi, trong đó ngoài đơn giản, còn có nhiều thuật toán đáng tin cậy hơn.

Tôi sẽ đề nghị bạn kiểm tra Sách Tối ưu hóa lồi và hộp công cụ CVX mà họ cung cấp. Nơi bạn có thể dễ dàng hình thành độ lệch tuyệt đối ít nhất với chính quy.

https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf

http://cvxr.com/cvx/


2
Cảm ơn câu trả lời của bạn. Nhưng khi tôi cố gắng tìm kiếm cụm từ "phương pháp đơn giản" trong cuốn sách, tôi không thể tìm thấy bất kỳ. Và hộp công cụ CVX chỉ là một công cụ lấy đầu vào làm vấn đề LP và chạy thuật toán. Nhưng điều tôi thực sự muốn là làm thế nào thuật toán hoạt động trong vấn đề này. Không phải là kết quả cuối cùng, cũng như làm thế nào để hình thành vấn đề. Nhưng bước để có được kết quả. cảm ơn
cửa nam
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.