oracle property and_hdm_pkg_rigorouslasso

19
よよよよよよよよよよ The Oracle Properties of Feature Selection using Lassos” よよよよよよよよよよよよよよ 1.R よよ R よよよよよよよよ ( よよ よよ よよよよよよよよ よよよよ 2013 よ 5 よよ261-266) 2. {hdm} package よよよよよよ (DJ Stekhoven, P Bühlmann (2011), Bioinformatics 28 (1), 112-118) 54よ R よよよ よよよ @( #TokyoR Lasso よよよよよよよよよよよよよよ よよよよよよよよよよよよよよよよよよよよよよよ よよよよp>>n よよよよよよよよよよよよよよ

Upload: satoshi-kato

Post on 21-Apr-2017

3.147 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Oracle property and_hdm_pkg_rigorouslasso

よいモデルを選びたい“ The Oracle Properties of Feature Selection using Lassos”

1.「罰則付き回帰とデータ解析環境 R 」の一部を R でトレースします( 荒木 孝治,オペレーションズ・リサーチ 2013 年 5 月号, 261-266) 2. {hdm} package を紹介します(DJ Stekhoven, P Bühlmann (2011), Bioinformatics 28 (1), 112-118) 第54回 R勉強会@東京(#TokyoR)

Lasso における変数選択とオラクル性十分なサンプルサイズなデータに対する手法の比較超高次元( p>>n )なデータに対する手法の比較

Page 2: Oracle property and_hdm_pkg_rigorouslasso

変数選択 ( モデル選択 ) どうしてますか ?

オペレーションズ・リサーチ 2013 年 5 月号, 261-266

Page 3: Oracle property and_hdm_pkg_rigorouslasso

Lasso• 線形重回帰モデルで、最小二乗法で係数を推定をする際

に、推定量 (β) の絶対値を大きくしたくない

• 未定乗数法で書くと:

|β| の大きさに対する罰則項最小二乗法

 λ は罰則の大きさを 調整するパラメータ

β の絶対値を大きさを定数 t 以下に抑えたい最小二乗法

Page 4: Oracle property and_hdm_pkg_rigorouslasso

Lasso と変数選択Lasso によって「よいモデル」を推定したい• 具体的な手続きとしては、罰則の強さ( λ )を決めたい

• λ → 0 (no penalty) では、罰則のない重回帰• λ → ∞ では、定数項だけのモデル

推定されたモデルの「良さ」とは ?

たとえば、 Cross Validation で λ を決める場合。モデルの良さは Cross Validation Error の小ささ

Page 5: Oracle property and_hdm_pkg_rigorouslasso

Lasso の変数選択とオラクル性( Oracle Property ) 真のモデルをなるべく精度良く再現したい• 選択される変数の一致性( selection consistency )

• 重要な変数を取りこぼさず選択し、ノイズとなる変数はすべて除外する• サンプルサイズ n が大きくなるとき, 0 でない係数( βj = 0 )を持つ説明変数が正しく選択される確率が 1 に収束する

• 推定量の一致性( estimation consistency )• 非ゼロな係数の推定量は、真値に収束する

• 0 でない係数を持つ説明変数に対する推定量が、漸近不偏,漸近正規性を持つ

J. Fan and R. Li, Variable selection via nonconcave penalized likelihood and its oracle properties. Jour-nal of the American Statistical Association, 96 , 1348–1360, 2001.

Page 6: Oracle property and_hdm_pkg_rigorouslasso

R でやってみる :  Lasso はオラクル性を持たない(1)

> summary(lm(y~X) )

Call:lm(formula = y ~ X)

Residuals: Min 1Q Median 3Q Max -4.3396 -0.6766 0.0031 0.6782 4.1351

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.025e-03 3.172e-03 0.323 0.7467 X1 2.481e-03 3.169e-03 0.783 0.4336 X2 2.480e-03 3.169e-03 0.782 0.4340 X3 -3.055e-03 3.168e-03 -0.964 0.3349 X4 2.829e-04 3.174e-03 0.089 0.9290 X5 -2.657e-03 3.162e-03 -0.840 0.4007 X6 -1.525e-03 3.155e-03 -0.483 0.6288 X7 5.367e-03 3.168e-03 1.694 0.0902 . X8 1.006e+00 3.176e-03 316.898 <2e-16 ***X9 1.000e+01 3.168e-03 3156.907 <2e-16 ***X10 1.000e+02 3.179e-03 31454.897 <2e-16 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.003 on 99989 degrees of freedomMultiple R-squared: 0.9999, Adjusted R-squared: 0.9999 F-statistic: 9.993e+07 on 10 and 99989 DF, p-value: < 2.2e-16

> coef(cv.glmnet(x = X, y=y, alpha = 1))

11 x 1 sparse Matrix of class "dgCMatrix" 1(Intercept) -0.003333436V1 . V2 . V3 . V4 . V5 . V6 . V7 . V8 . V9 7.991889788V10 97.991207763同じデータに対して: 8 番目の変数が消えている 推定値も目減りしている ?

真のモデル:   y ~ 0 + … + 1x8 + 10x9 + 100x10 + ε

変数の数 =10 ,非ゼロな係数の数 =3サンプルサイズ =106

重回帰

Lasso

Page 7: Oracle property and_hdm_pkg_rigorouslasso

R でやってみる :  Lasso はオラクル性を持たない( 2 )

(Intercept) -0.02631565V1 . V2 . V3 . V4 . V5 . V6 . V7 . V8 9.87959339V9 9.81398437V10 9.83103872

サンプルサイズ =1000 での推定量

真値と推定量との誤差二乗和 (30回平均 )

OLS では誤差が 0 に近づくのに Lasso では近づかない やっぱり目減りしてる ?

真のモデル:   y ~ 0 + … + 10x8 + 10x9 + 10x10 + ε

変数の数 =10 ,非ゼロな係数の数 =3サンプルサイズを徐々に大きくする

Page 8: Oracle property and_hdm_pkg_rigorouslasso

Lasso の罰則と縮小推定( shrinkage )

ただし、 X が XT X = In を満たすと仮定する0

0

0方向に縮小

OLS絶対値が小さいものを 0と推定

最小二乗推定量(   )Hao Helen Zhang, Fall 2015 Lecture 12: Variable Selection - Lasso

• Lasso の推定量(      )と、最小二乗推定量(    )との間には下図の関係がなりたつ

Page 9: Oracle property and_hdm_pkg_rigorouslasso

Lasso の罰則と縮小の効果• 縮小推定の効果により、 Lasso ではオラクル性が成り立たない

0

0

0方向に縮小

0方向に縮小

OLS絶対値が小さいものを 0と推定

最小二乗推定量(   )

> coef(cv.glmnet(x = X, y=y, alpha = 1))

11 x 1 sparse Matrix of class "dgCMatrix" 1(Intercept) -0.003333436V1 . V2 . V3 . V4 . V5 . V6 . V7 . V8 . V9 7.991889788V10 97.991207763真のモデル:   y ~ 0 + … + 1x8 + 10x9 + 100x10 + ε

変数の数 =10 ,非ゼロな係数の数 =3サンプルサイズ =106

Page 10: Oracle property and_hdm_pkg_rigorouslasso

オラクル性保証付き Lasso

H. Zou: The adaptive lasso and its oracle properties, Journal of the American Statistical Association, 101, 1418–1429, 2006.Hao Helen Zhang, Fall 2015, Lecture 13: Variable Selection - Beyond LASSO

データ依存的に最適な重みが選ばれるAdaptive Lasso のほかにも色々と提案されているが割愛

Adaptive Lasso• 推定の偏りを減少させる重みづけ

• 0 に近い推定量に対しては大きな重みを適用して 0 にする• 絶対値の大きな推定量に対しては,小さな重みを適用することで縮小の効果を減らす

• 2 段階の推定手順• β の初期推定量 を求める• 1を利用した重みを利用するℓ1 罰則付き回帰を行う

Page 11: Oracle property and_hdm_pkg_rigorouslasso

R でやってみる:オラクル性保証付き Lasso を使うことで改善 • 罰則項を工夫することで、 Lasso にオラクル性を持たせる• 今回は msgps パッケージの adaptive Lasso を使う

• 選択基準は BIC を使うfit.alasso <- msgps(X= X, y=c(y), penalty="alasso",gamma=1, lambda=0)coeff.alasso <- coef(fit.alasso) %>>% data.frame %>>% select(BIC) %>>% unlistsse.alasso <- (this_data$beta - coeff.alasso[-1])^2 %>>% sum

真値と推定量との誤差二乗和 (30回平均 ) オリジナルと比べて良い精度

真のモデル:   y ~ 0 + … + 10x8 + 10x9 + 10x10 + ε

• 変数の数 =10• 非ゼロな係数の数 =3• サンプルサイズを徐々に大きくする推定精度 = 真値と推定量との誤差二乗和

Page 12: Oracle property and_hdm_pkg_rigorouslasso

Lasso と次元数• 従来の回帰分析の数学的妥当性は、 p<n 条件下で保証されていた

• 高次元データ (p>n) の場合、それが破綻する。いわゆる「次元の呪い」• Lasso ではスパース性を仮定する

• 「候補変数のなかで真に効果を持つ変数の数 (d) は非常に少数である」という仮定•   p>n>>d

• 一定の仮定の下で、 p>n なデータでもオラクル性を保証する• Adaptive Lasso もその一つ

• Huang, J. et al.: Adaptive lasso for sparse high dimensional regression, Stat. Sin., 18: 1603-1618, 2007.

ゲノムワイド関連解析の統計学的問題点とその解決植木優夫 , 田宮元 , 医学のあゆみ 第 230巻 12 号 (2009 年 9 月 19日号 ) (1079-1080)

Page 13: Oracle property and_hdm_pkg_rigorouslasso

R でやってみる: Lasso と次元数

• 一定の仮定の下で、 p>n なデータでもLasso はオラクル性を保証する

• Adaptive Lasso もその一つ OLS は p>n になった時点で計算不能 Adaptive Lasso も p>n になった時点で推定精度が悪化

真のモデル:   y ~ 0 + … + 10xn-2 + 10xn-1 + 10xn + ε

• 変数の数を徐々に大きくする• 非ゼロな係数の数 =3• サンプルサイズ =1000推定精度 = 真値と推定量との誤差二乗和

Page 14: Oracle property and_hdm_pkg_rigorouslasso

Lasso と次元数• 高次元データ (p>>n) の場合1. 何らかの手順でいったん次元圧縮を行う2. 圧縮したデータで、あらためて係数を高精度に推定する• 手法の例

• p>>n でも、一定の仮定の下で選択の一致性が保証されている• Adaptive Lasso

• Huang, J. et al.: Adaptive lasso for sparse high dimensional regression, Stat. Sin., 18: 1603-1618, 2007.

• L2 boosting• Buhlmann, P.: Boosting for high-dimensional linear models. Ann. Statist., 34:559-583, 2006.

• 変数のランキングに基づくスクリーニング• SURE independence screening (SIS)

• Fan, J. and Lv, J.: Sure independence screening for ultrahigh dimensional feature space (with discussion). J. R. Statist. Soc B, 70: 849-911, 2008.

• Lasso で頑張る• 誤って非ゼロとした係数はすべてゼロに近い値で収まる性質を使う

• Meinshausen, N. and Yu, B.: Lasso-type recovery of sparse representations of high-dimensional data. To appear in Ann. Statist.

ゲノムワイド関連解析の統計学的問題点とその解決植木優夫 , 田宮元 , 医学のあゆみ 第 230巻 12 号 (2009 年 9 月 19日号 ) (1079-1080)

Page 15: Oracle property and_hdm_pkg_rigorouslasso

“rigorous” lasso in hdm package

rlasso の特色• Post-Lasso による、変数事前のスクリーニング

• Lasso で係数の推定量が 0 にされた変数を除去してから、最小二乗法をおこなう

• 罰則強度 (λ) を理論的背景のもとで与える• 誤差の等分散性の仮定の有無 × data-driven or Not で、合計4パターンの罰則項を提案

• 推定した係数の信頼区間を提供する• Shooting Lasso Algorithm による高速化

V Chernozhukov, C Hansen, M Spindler (2016+). hdm: High-Dimensional Metrics R Journal, forthcominghttps://cran.rstudio.com/web/packages/hdm/

高次元データ (p>>n) の場合1. 何らかの手順でいったん次元圧縮を行う2. 圧縮したデータのもとで、あらためて係数を高精度に推定する

Page 16: Oracle property and_hdm_pkg_rigorouslasso

hdm::rlasso を使ってみるrlasso( formula, data, post = TRUE, # TRUE で Post-Lasso 。 FALSE で独自の罰則だけ rigorous なLasso intercept = TRUE, # TRUE で切片項 (β0 )の罰則付き推定をしない penalty = list(homoscedastic = FALSE, # FALSE で誤差の等分散性を仮定しない X.dependent.lambda = FALSE, # TRUE でデータ依存的な λ の選択をする lambda.start = NULL, c = 1.1, gamma = 0.1/log(n)), control = list(numIter =15, tol = 10^-5, threshold = NULL), ...)

Page 17: Oracle property and_hdm_pkg_rigorouslasso

hdm::rlasso を使ってみる推定精度: rlasso > adaptive Lasso

plasso.reg <- rlasso(c(this_data$y) ~ this_data$X, post=TRUE, intercept=TRUE)coeff.plasso <- coef(plasso.reg)sse.plasso <- (this_data$beta - coeff.plasso)^2 %>>% sum

rigorous Lasso(post-lasso) は、 p>n にを超えても、推定精度が悪化していない

もっと高次元なデータでの評価は我が家の PC では無理でした…

真のモデル:   y ~ 0 + … + 10xn-2 + 10xn-1 + 10xn + ε

• 変数の数を徐々に大きくする• 非ゼロな係数の数 =3• サンプルサイズ =1000推定精度 = 真値と推定量との誤差二乗和

Page 18: Oracle property and_hdm_pkg_rigorouslasso

hdm::rlasso を使ってみる計算コスト: rlasso < adaptive Lasso

> system.time(+ fit.alasso <- msgps(X= this_data$X, y=c(this_data$y), penalty="alasso", gamma=1)+ ) ユーザ システム 経過   34.23 0.27 34.50 > system.time(+ plasso.reg <- rlasso(c(this_data$y) ~ this_data$X, post=TRUE, intercept=TRUE)+ ) ユーザ システム 経過   90.23 0.45 90.69

Adaptive lasso

rigorous lasso

Adaptive   Lasso のほうがかなり速かった もっと高次元で評価が必要

真のモデル:   y ~ 0 + … + 10xn-2 + 10xn-1 + 10xn + ε

• 変数の数 =105 , 非ゼロな係数の数 =3 , サンプルサイズ=1000計算時間を測定する

Page 19: Oracle property and_hdm_pkg_rigorouslasso

まとめ

オペレーションズ・リサーチ 2013 年 5 月号, 261-266

“rigorous” lasso V Chernozhukov, C Hansen, M Spindler (2016+). hdm: High-Dimensional MetricsR Journal, forthcominghttps://cran.rstudio.com/web/packages/hdm/