なげなわの0成分を与える最小の


14

β^λ=argminβRp12nyXβ22+λβ1,
ithxiRpXRn×pyii=1,n

我々が知っているためλ1nXTy、投げ縄推定β^λ=0。(たとえば、LassoおよびRidge調整パラメータースコープを参照してください。)他の表記では、これは\ lambda_ \ max = \ frac {1} {n} \ | X ^ T y \ | _ \ inftyを表しλmax=1nXTyます。\ lambda_ \ mathrm {max} = \ sup _ {\ hat \ beta ^ \ lambda \ ne 0} \ lambdaであることに注意してくださいλmax=supβ^λ0λ.これは、なげなわソリューションパスを示す次の画像で視覚的に確認できます。

なげなわソリューションパス

であることに注意してください遠くプロットの右側、すべての係数がゼロです。これは、上記の\ lambda_ \ mathrm {max}で発生しλmaxます。

このプロットから、我々はまた、通知にすることを遠い左側、係数の全てがゼロでない:の値何ですのいずれかのコンポーネントれる最初はゼロですが?つまり、と関数としての何ですか?閉じた形式のソリューションに興味があります。特に、たとえば、LARSが計算によって結び目を見つけることができると示唆するような、アルゴリズムのソリューションには興味がありません。β λ λ = Jλβ^λX、Y

λmin=minjs.t.β^j=0λ
Xy

私の興味にも関わらず、は閉じた形式では利用できないようです。そうでない場合、相互検証中に調整パラメータの深さを決定する際に投げ縄計算パッケージがそれを利用する可能性が高いからです。これに照らして、私は理論的にについて示すことができるものに興味があり、(まだ)特に閉じた形式に興味があります。 λ M I Nλminλmin


これは、glmnetの論文に記載され、証明されています:web.stanford.edu/~hastie/Papers/glmnet.pdf
マシュードゥルーリー

@MatthewDruryこれを共有してくれてありがとう!ただし、このホワイトペーパーは、あなたが提案していることを共有しているようには見えません。特に、私のはことに注意してください。λmaxλmin
user795305

[tuning-parameter]タグが必要ですか?
アメーバは、モニカーを復活させる

1
あなたは正しい、投げ縄ソリューションの閉じたフォームは一般に存在しません(stats.stackexchange.com/questions/174003/…を参照)。ただし、larsは少なくとも、何が起こっているのか、どの正確な条件で/いつ変数を追加/削除できるのかを教えてくれます。私はあなたが得ることができるこのようなものが最高だと思います。
chRrr

1
@chRrrそれが完全に正しいとは言えません:、であることがわかります。つまり、解が0の極端な場合、閉じた形式になります。投げ縄の推定が密である(つまりゼロがない)極端な場合に同様のことが当てはまるかどうかを尋ねています。確かに、の正確なエントリにさえ興味がありません-それらがゼロかどうかだけです。β^λ=0λ1nXtyβ^λ
user795305

回答:


15

質問で説明されている投げ縄推定は、次の最適化問題に相当するラグランジュ乗数です。

minimize f(β) subject to g(β)t

f(β)=12n||yXβ||22g(β)=||β||1

この最適化には、多次元球とポリトープ(Xのベクトルがスパンする)の間の接触点を見つける幾何学的表現があります。ポリトープの表面は表します。球の半径の二乗は関数を表し、表面が接触すると最小化されます。g(β)f(β)

以下の画像は、グラフィカルな説明を提供します。画像は、長さ3のベクトルに関する次の単純な問題を利用しました(簡単にするために、図面を作成できます)。

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
ε 2 1 + ϵ 2 2 + ϵ 2 3 そして、制約を最小化しますϵ12+ϵ22+ϵ32absβ1+absβ2+absβ3t

画像が示しています:

  • 赤い面は、Xにまたがるポリトープである制約を示しています。
  • そして、緑色の表面は、最小化された表面である球体を表しています。
  • 青い線は、なげなわパス、またはを変更したときに見つかる解を示しています。tλ
  • 緑のベクトルは、OLSソリューション(またはとして選択されたソリューションを示しています。y^β1=β2=β3=1、Y =X1+X2+X3y^=x1+x2+x3
  • 3つの黒ベクトルは、、およびです。x1=(0.8,0.6,0)x2=(0,0.6,0.8)x3=(0.6,0.64,0.48)

3つの画像を表示します。

  1. 最初の画像では、ポリトープの点のみが球体に接触しています。この画像は、投げ縄ソリューションがOLSソリューションの単なる倍数ではない理由を非常によく示しています。OLSソリューションの方向により、和がより強くなります。この場合、単一ののみがゼロ以外です。|β|1βi
  2. 2番目の画像では、ポリトープの尾根が球体に接触しています(高次元では、高次元の類似物が得られます)。 この場合、複数のはゼロ以外です。βi
  3. 3番目の画像では、ポリトープのファセットが球体に接触しています。この場合、すべてのはゼロ以外βiです。

最初のケースと3番目のケースがあるまたはの範囲は、単純な幾何学的表現のために簡単に計算できます。tλ

ケース1:ゼロ以外の単一ののみβi

ゼロ以外のは、関連するベクトルがとの共分散の最高絶対値を持つものです (これは、OLS解に最も近いparrallelotopeの点です)。ラグランジュ乗数を計算するには、(負または正の方向にを増やすかどうかに応じた微分)を使用して、少なくともゼロ以外のがあります。βixiY λ M A X β ± β I β Iy^λmaxβ±βiβi

(12n||yXβ||22λ||β||1)±βi=0

につながる

λmax=(12n(||yXβ||22±βi)(||β||1)±βi)=±(12n||yXβ||22βi=±1nxiy

これは、コメントに記載されていると同じです。||XTy||

これは、ポリトープの先端が球体に接触している特殊な場合にのみ当てはまることに注意してください(したがって、一般化は簡単ですが、これは一般的な解決策はありません)。

ケース3:すべてのはゼロ以外です。βi

この場合、ポリトープのファセットが球体に接触しています。その場合、なげなわパスの変更の方向は、特定のファセットの表面に垂直です。

ポリトープには正と負の寄与を持つ多くのファセットがあります。最後のなげなわステップの場合、なげなわソリューションがolsソリューションに近い場合、の寄与はOLSソリューションの符号で定義する必要があります。ファセットの法線は、関数、点でのベータの和の値をとることによって定義できます。xixi||β(r)||1r

n=r(||β(r)||1)=r(sign(β^)(XTX)1XTr)=sign(β^)(XTX)1XT

この方向のベータの同等の変更は次のとおりです。

βlast=(XTX)1Xn=(XTX)1XT[sign(β^)(XTX)1XT]

転置()をシフトする代数トリックの後、括弧の分布はATBT=[BA]T

βlast=(XTX)1sign(β^)

この方向を正規化します。

βlastnormalzed=βlastβlastsgnβ^

すべての係数がゼロ以外のを見つけるため。OLSソリューションから、係数の1つがゼロになるポイントまで計算するだけです。λmn

d=mnβ^βlastnormalzedという条件で β^βlastnormalzed>0

、そしてこの時点で微分を評価します(以前のようにを計算するとき)。二次関数にはます:λmaバツqバツ=2q1バツ

λmin=dn||Xβlast,normalized||22

画像

ポリトープの点が球に接触している場合、単一のはゼロ以外です:βi

なげなわパスの最初のステップ

ポリトープの尾根(または複数の次元が異なる)が球に接触しているため、多くのはゼロではありません:βi

投げ縄の途中

ポリトープのファセットが球体に接触している場合、すべてのはゼロ以外です:βi

なげなわパスの最終ステップ

コード例:

library(lars)    
data(diabetes)
y <- diabetes$y - mean(diabetes$y)
x <- diabetes$x

# models
lmc <- coef(lm(y~0+x))
modl <- lars(diabetes$x, diabetes$y, type="lasso")

# matrix equation
d_x <- matrix(rep(x[,1],9),length(x[,1])) %*% diag(sign(lmc[-c(1)]/lmc[1]))
x_c = x[,-1]-d_x
y_c = -x[,1]

# solving equation
cof <- coefficients(lm(y_c~0+x_c))
cof <- c(1-sum(cof*sign(lmc[-c(1)]/lmc[1])),cof)

# alternatively the last direction of change in coefficients is found by:
solve(t(x) %*% x) %*% sign(lmc)

# solution by lars package
cof_m <-(coefficients(modl)[13,]-coefficients(modl)[12,])

# last step
dist <- x %*% (cof/sum(cof*sign(lmc[])))
#dist_m <- x %*% (cof_m/sum(cof_m*sign(lmc[]))) #for comparison

# calculate back to zero
shrinking_set <- which(-lmc[]/cof>0)  #only the positive values
step_last <- min((-lmc/cof)[shrinking_set])

d_err_d_beta <- step_last*sum(dist^2)

# compare
modl[4] #all computed lambda
d_err_d_beta  # lambda last change
max(t(x) %*% y) # lambda first change
enter code here

注:最後の3行は最も重要です

> modl[4]            # all computed lambda by algorithm
$lambda
 [1] 949.435260 889.315991 452.900969 316.074053 130.130851  88.782430  68.965221  19.981255   5.477473   5.089179
[11]   2.182250   1.310435

> d_err_d_beta       # lambda last change by calculating only last step
    xhdl 
1.310435 
> max(t(x) %*% y)    # lambda first change by max(x^T y)
[1] 949.4353

StackExchangeStrikeによって書かれました。


編集を含めてくれてありがとう!これまでの私の読書では、「ケース1」のサブセクションを過ぎて行き詰まっています。そこに導出されたの結果は、絶対値または最大値を含まないため間違っています。さらに、派生には符号の誤り、微分可能性が誤って仮定される場所、「任意の選択」に関して微分すること、および誤って評価される微分があるため、誤りがあることを知っています。率直に言って、有効な「」記号はありません。λ最大=
user795305

プラスマイナス記号で修正しました。ベータ版の変更は、プラスまたはマイナスになります。最大値と「任意の選択」に関して... "関連するベクトルがと最も高い共分散を持つもの "バツy^
Sextus Empiricus

更新していただきありがとうございます!ただし、まだ問題があります。たとえば、は誤って評価されます。βyバツβ22
user795305

もし次いで、この相関は方程式に入るため、 s = 0の場合、に対する接線の変更のみがベクトル長さを変更しているβ=0β||yバツβ||22
=||yバツβ||2β2||yバツβ||2
=||ysバツ||2s2||yバツβ||2
=2corバツy||バツ||2||y||2
=2バツy
sバツyysバツ
Sextus Empiricus

β=0λ最大
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.