シンプレックス法で最小絶対偏差を解決するには?


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

s_1 \ ge 0の対象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=yiです。注によると、yi0場合、問題には無限の解決策があります。

私はここで完全に失われました。何か問題があるかどうか、そして次の手順をどのように続けるべきか疑問に思います。


2
実際には、独自に作成するのではなく、線形プログラムソルバーを使用します。グロビをお勧めします。
マシュードゥルーリー

1
@MatthewDruryお返事ありがとうございます。しかし、私は単に答えを取るのではなく、この問題でLPがどのように機能するかを正確に知りたいです。
サウスドア

1
Googleの「シンプレックス法」を知っていますか、またはしましたか?

2
線形プログラムは、線形制約の対象となる線形目標関数の最大化(または最小化)に関する問題の定式化にすぎません。それ自体は「解決」しません。これらの特別に調合プログラムを解くアルゴリズムの束は、最も一般的に使用されるのは、単純である、あります
ルカシュGradの

1
@fcopはい、確かに私はシンプレックス法のいくつかのメモを読みました。しかし、私はこの問題に対してどのように生成するのか分かりません。これらのノートの例は非常にシンプルで具体的です。一般的な問題から始めることはできません。私はすでにこの問題に2泊しましたが、それでも混乱しています。ごめんなさい。
サウスドア

回答:


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私は物事を手動で異なる方法でやってから比較するのが大好きです!
ハイタオデュ

3
もう少し説明のある投稿については、分位点回帰
終了時の質問を止める

2

線形計画法は凸最適化で一般化でき、シンプレックスに加えて、より信頼性の高いアルゴリズムが利用できます。

The Convex Optimization Bookおよび提供されているCVXツールボックスを確認することをお勧めします。正則化で最小絶対偏差を簡単に定式化できる場所。

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

http://cvxr.com/cvx/


2
ご回答有難うございます。しかし、本で「シンプレックス法」という用語を検索しようとしても、何も見つかりません。また、CVXツールボックスは、入力をLP問題として取得し、アルゴリズムを実行するための単なるツールです。しかし、私が本当に欲しいのは、この問題でアルゴリズムがどのように機能するかです。最終結果でも問題の定式化でもない。しかし、結果を得るためのステップ。おかげで
サウスドア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.