如何用单纯形法求解最小绝对偏差?


12

argminwL(w)=i=1n|yiwTx|

mini=1nui

uixTwyii=1,,n

ui(xTwyi)i=1,,n

但是我不知道要逐步解决它,因为我是LP的新手。你有什么主意吗?提前致谢!

编辑:

这是我已解决此问题的最新阶段。我正在尝试按照以下说明解决问题:

步骤1:将其制成标准格式

minZ=i=1nui

xTwui+s1=yii=1,,n

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

服从s10;s20;ui0 i=1,...,n

步骤2:建立初始画面

           |      |    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:选择基本变量

ui选择作为输入基变量。这是一个问题。选择输出基本变量时,显然。根据注释,如果,则问题具有无限的解决方案。yi/1=yi/1=yiyi0

我在这里完全迷路了。我想知道是否有什么问题,以及如何继续以下步骤。


2
在实用上,您使用线性程序求解器而不是编写自己的程序。我推荐古罗比。
马修·德鲁里

1
@MatthewDrury谢谢您的回复。但是我想确切地知道LP在这个问题上是如何工作的,而不仅仅是获得答案。
南门'02

1
您知道还是您使用过Google的“简单方法”?

2
线性程序只是在受到某些线性约束的情况下最大化(或最小化)线性目标函数方面的问题的表述。它不会“解决”自身。有为数众多的解决这些专门制定方案,最常用的一个算法是单向的
卢卡斯梯度

1
@fcop是的,的确,我已经阅读了一些单纯形方法的注意事项。但是我不知道如何解决这个问题。这些注释中的示例非常简单和具体。我找不到一个从普遍问题入手的问题。我已经在这个问题上住了两个晚上,但仍然感到困惑。抱歉。
南门'02

Answers:


5

您需要一个通过线性编程解决最小绝对偏差的示例。我将向您展示R中的一个简单实现。分位数回归是最小绝对偏差的一般化,在分位数0.5的情况下,因此,我将展示分位数回归的解决方案。然后,您可以使用R quantreg包检查结果:

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

然后我们在一个简单的示例中使用它:

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

那么您自己可以使用进行检查quantreg


2
+1我是手动做事的忠实拥护者,然后与众不同!
Haitao Du

3
有关更多解释的帖子,请参阅分位数回归
停止结题快速

2

线性规划可以通过凸优化进行广义化,其中除单纯形法外,还有许多更可靠的算法可用。

我建议您检查他们提供的The Convex Optimization Book和CVX工具箱。您可以轻松地用正则化公式化最小绝对偏差。

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

http://cvxr.com/cvx/


2
感谢您的回答。但是,当我尝试在书中搜索“简单方法”一词时,找不到任何东西。CVX工具箱只是一个将输入作为LP问题并运行算法的工具。但是我真正想要的是算法如何解决这个问题。既不是最终结果,也不是问题的解决方法。但是迈出结果的一步。谢谢
southdoor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.