Simpleks yöntemle en az mutlak sapmayı nasıl çözebilirim?


12

İlgili en az mutlak sapma sorunu:. LP problemi olarak aşağıdaki şekilde yeniden düzenlenebileceğini biliyorum:argminwL(w)=i=1n|yiwTx|

mini=1nui

uixTwyii=1,,n

ui(xTwyi)i=1,,n

Ama LP'ye yeni geldiğim için bunu adım adım çözecek bir fikrim yok. Herhangi bir fikrin var mı? Şimdiden teşekkürler!

DÜZENLE:

İşte bu problemde ulaştığım son aşama. Bu notu takip ederek sorunu çözmeye çalışıyorum :

Adım 1: Standart bir forma dönüştürmek

minZ=i=1nui

xTwui+s1=yii=1,,n

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

s_1 \ ge 0'a tabi s10;s20;ui0 i=1,...,n

Adım 2: Bir başlangıç ​​tablosu oluşturun

           |      |    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

3. Adım: Temel değişkenleri seçin

ui girdi tabanı değişkeni olarak seçilir. İşte bir sorun geliyor. Çıktı tabanı değişkeni seçildiğinde, yi/1=yi/1=yi . Nota göre, yi0 ise, sorunun sınırsız bir çözümü vardır.

Burada tamamen kayboldum. Yanlış bir şey olup olmadığını merak ediyorum ve aşağıdaki adımlara nasıl devam etmeliyim.


2
Pragmatik olarak, kendi yazmak yerine doğrusal bir program çözücü kullanırsınız. Gurobi öneririm.
Matthew Drury

1
@MatthewDrury Yanıtınız için teşekkürler. Ancak LP'nin sadece bu soruyu cevaplamak yerine bu problemde nasıl çalıştığını bilmek istiyorum.
southdoor

1
Google 'simpleks yöntemi' biliyor musunuz veya biliyor muydunuz?

2
Doğrusal program, sadece bazı doğrusal kısıtlamalara tabi olan doğrusal hedef işlevini en üst düzeye çıkarmak (veya en aza indirmek) açısından probleminizin bir formülasyondur. Kendini "çözmez". Bu özel olarak formüle edilmiş programları çözen bir dizi algoritma var, en yaygın kullanılanlardan biri Simplex
Łukasz Grad

1
@fcop Evet, gerçekten simpleks yönteminin bazı notlarını okudum. Ama bu soruna nasıl üreteceğimi bilmiyorum. Bu notlardaki örnekler çok basit ve spesifiktir. Genel problemlerle bir başlangıç ​​bulamıyorum. Zaten bu sorun iki gece geçirdim, ama yine de şaşkın. Üzgünüm.
southdoor

Yanıtlar:


5

Doğrusal programlama ile en az mutlak sapmayı çözmek için bir örnek istersiniz. Size R'de basit bir uygulama göstereceğim. Ardından R quantregpaketiyle sonuçları kontrol edebilirsiniz :

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)
    }

Sonra basit bir örnekte kullanıyoruz:

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

o zaman kontrolü kendiniz yapabilirsiniz quantreg.


2
+1 Ben elle ve farklı şeyler yapmak büyük bir hayranıyım sonra karşılaştırın!
Haitao Du

3
Biraz daha açıklama içeren bir yazı için kantil regresyona
Kapanış Sorularını Durdurun Hızlı

2

Doğrusal Programlama, simplekse ek olarak, çok daha güvenilir algoritmaların bulunduğu dışbükey optimizasyon ile genelleştirilebilir.

Convex Optimization Book'u ve verdikleri CVX araç kutusunu kontrol etmenizi öneririm. Düzenleme ile en az mutlak sapmayı kolayca formüle edebileceğiniz yer.

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

http://cvxr.com/cvx/


2
Cevabınız için teşekkürler. Fakat kitapta "simpleks yöntemi" terimini aramaya çalıştığımda, hiçbirini bulamıyorum. Ve CVX araç kutusu sadece LP problemi olarak girdi almak ve algoritmayı çalıştırmak için bir araçtır. Ama gerçekten istediğim, algoritmanın bu problemde nasıl çalıştığı. Ne nihai sonuç ne de sorunun nasıl formüle edileceği. Ama sonuç alma adımı. teşekkürler
southdoor
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.