LASSOは相関予測変数をいつ選択しますか?


13

Rのパッケージ「lars」を次のコードで使用しています。

> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
            y          x1           x2           x3          x4          x5
y  1.00000000  0.74678534  0.743536093  0.210757777  0.59218321  0.03943133
x1 0.74678534  1.00000000  0.892113559  0.015302566 -0.03040464  0.04952222
x2 0.74353609  0.89211356  1.000000000 -0.003146131 -0.02172854  0.05703270
x3 0.21075778  0.01530257 -0.003146131  1.000000000  0.05437726  0.01449142
x4 0.59218321 -0.03040464 -0.021728535  0.054377256  1.00000000 -0.02166716
x5 0.03943133  0.04952222  0.057032700  0.014491422 -0.02166716  1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 :    Variable 1     added
LARS Step 2 :    Variable 4     added
LARS Step 3 :    Variable 3     added
LARS Step 4 :    Variable 2     added
LARS Step 5 :    Variable 5     added
Computing residuals, RSS etc .....

5つの連続変数を持つデータセットがあり、モデルを単一の(従属)変数yに適合させようとしています。私の予測因子のうちの2つは、互いに非常に相関しています(x1、x2)。

上記の例でわかるように、 'stepwise'オプションを使用したlars関数は、最初にyと最も相関のある変数を選択します。モデルに入る次の変数は、残差と最も相関する変数です。実際、x4です。

> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
    x2     x3     x4     x5 
0.1163 0.2997 0.9246 0.0037  

さて、「投げ縄」オプションを実行すると:

> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 :    Variable 1     added
LARS Step 2 :    Variable 2     added
LARS Step 3 :    Variable 4     added
LARS Step 4 :    Variable 3     added
LARS Step 5 :    Variable 5     added

最初の2つのステップで、両方の相関変数をモデルに追加します。これは、私がいくつかの論文で読んだものと反対です。そのほとんどが、相関が非常に高い変数のグループがある場合、「投げ縄」はグループからランダムに1つの変数のみを選択する傾向があると言います。

誰かがこの動作の例を提供できますか?または、変数x1、x2が次々に(一緒に)モデルに追加される理由を説明してください。


これは、なげなわステップの説明を提供する最小角度回帰です。
マイケルR.チャーニック

@MichaelChernick:ROPが行っている呼び出しと彼が提供する関連出力を見ると、彼が実際に投げ縄を使用していることがわかります。ご存知のとおり、larsアルゴリズムの小さな調整により、投げ縄正則化パスが生成されます。
枢機

私の「推測」は、x2にはx1の4単位が含まれているため、x1とx2の組み合わせは実際に最大の分散(9単位)を持つことです。x2の係数を2に下げると、x1とx2の前にx4が選択されていることがわかります。

その「ランダム性」の証拠についていくつかの参考文献を提供できますか?ありがとうございました。
ziyuang

このペーパーで答えを見つけることができると思います:arxiv.org/pdf/1204.1605.pdf
TPArrow 14

回答:


15

共線性の問題は過大評価されています!

トーマス、あなたは、予測変数が相関している場合、最良の変数選択手法でさえ、束の中からランダムに1つを選択するという共通の視点を明確にしました。幸いなことに、これは回帰の能力を売り込み、真実を明らかにする方法です!適切なタイプの説明変数(外因性)がある場合、多重回帰は、他の定数を保持する各変数の効果を見つけることを約束します。変数が完全に相関している場合、これは文字通り不可能です。変数が相関している場合、それはより難しいかもしれませんが、今日の典型的なデータセットのサイズでは、それほど難しくはありません。

共線性は情報量の少ない問題です。Dave Gilesのブログで Art Goldbergerによる共線性のパロディをご覧ください。共線性について説明する方法は、偏回帰係数の代わりに平均に適用するとばかげて聞こえます。

まだ納得できない?いくつかのコードの時間です。

set.seed(34234)

N <- 1000
x1 <- rnorm(N)
x2 <- 2*x1 + .7 * rnorm(N)
cor(x1, x2) # correlation is .94
plot(x2 ~ x1)

高度に相関した変数x1とx2を作成しましたが、以下のプロットで、x1が-1に近い場合でも、x2の変動性を確認できます。 ここに画像の説明を入力してください

ここで、「真実」を追加します。

y <- .5 * x1 - .7 * x2 + rnorm(N) # Data Generating Process

強烈な共線性問題の中で通常の回帰は成功するでしょうか?

summary(lm(y ~ x1 + x2))

そうそうできる:

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.0005334  0.0312637  -0.017    0.986    
x1           0.6376689  0.0927472   6.875 1.09e-11 ***
x2          -0.7530805  0.0444443 -16.944  < 2e-16 ***

今、私はあなたの質問に焦点を当てたLASSOについては話しませんでした。しかし、これを聞いてみましょう。旧式回帰による後退回帰が共線性にだまされない場合、なぜ最新のLASSOがそうだと思いますか?


L1

アイデアは、OPの記述された現象を説明するためにより単純な概念を使用でき、これらの概念はデータ駆動の正則化用語の追加によって根本的に変更されないということでした。
ベンオゴレク

7

ベンの答えは、彼が提供した道をさらに一歩進めようと思いました。「真実」yが他の状況にある場合はどうなるでしょう。

元の例では、yは2つの高度に相関した変数x1およびx2に依存しています。別の変数x3があると仮定すると、

x3 = c(1:N)/ 250#Nは前に定義され、N = 1000、x3はx1と同様のスケールであり、x3のスケールは以下の線形回帰の結果に影響します。

「真実」yは、次のように定義されます。

y = .5 * x1-.7 * x3 + rnorm(N)#データ生成プロセス

回帰はどうなりますか?

summary(lm(y〜x1 + x2))

強い共線性効果があります。x2の標準誤差は大きすぎます。ただし、線形回帰はx2を非有意変数として識別します。

     Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -1.39164    0.04172 -33.354  < 2e-16 ***
x1           0.65329    0.12550   5.205 2.35e-07 ***
x2          -0.07878    0.05848  -1.347    0.178 

vif(lm(y〜x1 + x2))

x1       x2 
9.167429 9.167429 

別の回帰ケースはどうですか?

summary(lm(y〜x1 + x2 + x3))

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.02100    0.06573   0.319    0.749    
x1           0.55398    0.09880   5.607 2.67e-08 ***
x2          -0.02966    0.04604  -0.644    0.520    
x3          -0.70562    0.02845 -24.805  < 2e-16 ***

変数x2は重要ではないため、線形回帰で削除することをお勧めします。

vif(lm(y〜x1 + x2 + x3))

x1       x2       x3 
9.067865 9.067884 1.000105 

上記の結果から、共線性は線形回帰の問題ではなく、VIFの確認はあまり役に立ちません。

別の状況を見てみましょう。x3 = c(1:N)#Nは前に定義され、N = 1000、x3はx1と同じスケールではありません。

「真実」yは上記と同じように定義されます

y = .5 * x1-.7 * x3 + rnorm(N)#データ生成プロセス

回帰はどうなりますか?

summary(lm(y〜x1 + x2))

強い共線性効果があります。x1、x2の標準誤差は大きすぎます。線形回帰では、重要な変数x1を特定できません。

   Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -350.347      6.395 -54.783   <2e-16 ***
x1            25.207     19.237   1.310    0.190    
x2           -12.212      8.963  -1.362    0.173  

vif(lm(y〜x1 + x2))

    x1       x2 
9.167429 9.167429 

別の回帰ケースはどうですか?

summary(lm(y〜x1 + x2 + x3))

Coefficients:
          Estimate Std. Error   t value Pr(>|t|)    
(Intercept)  0.0360104  0.0610405     0.590    0.555    
x1           0.5742955  0.0917555     6.259 5.75e-10 ***
x2          -0.0277623  0.0427585    -0.649    0.516    
x3          -0.7000676  0.0001057 -6625.170  < 2e-16 ***

変数x2は重要ではないため、線形回帰で削除することをお勧めします。

vif(lm(y〜x1 + x2 + x3))

x1       x2       x3 
9.182507 9.184419 1.001853 

注:x1およびx3でのyの回帰。x1の標準誤差はわずか0.03であることに注意してください。

summary(lm(y〜x1 + x3))

Coefficients:
              Estimate Std. Error   t value Pr(>|t|)    
(Intercept) -0.1595528  0.0647908    -2.463    0.014 *  
x1           0.4871557  0.0321623    15.147   <2e-16 ***
x3          -0.6997853  0.0001121 -6240.617   <2e-16 ***

上記の結果に基づいて、私の結論は

  • 予測変数が同様のスケールにある場合、共線性は線形回帰の問題ではありません。
  • 予測変数が同様のスケールにない場合、
    • 2つの高度に相関した変数が両方とも真のモデルにある場合、共線性は問題になりません。
    • 2つの高度に相関した変数のうち1つだけが真のモデルにある場合、
      • 他の「真の」変数が線形回帰に含まれている場合、線形回帰は有意変数と相関する非有意変数を識別します。
      • 他の「真の」変数が線形回帰に含まれていない場合、共線性の問題は深刻であり、標準誤差が増大します。

興味深いことに、これらの結果は予測子/機能とyの間の線形関係を想定しています。それらは包括的とはほど遠い。予測子に強い非線形関係がある場合(相互作用項x1 * x2、ステップ関数の特徴/ダミー変数(x1> cが一定の場合は1)など)あなたがアルゴリズム取引のための機能の作成のように、信号対雑音比のデータに低信号を扱う場合、あなたは常に倹約的なモデルは、過剰適合減らすために(あなたの信号が弱いので)ワット多重共に対処するための強力な理由はまだありますので
FXQuantTrader
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.