High-Dimensional Metrics in R
CRAN - Package hdm
- やりたかったこと= oracle property保証のlassoで変数選択(n<p)
- 得たもの= 速い、一致性はそれっぽい。
- やりたいこと= ほかのパッケージとの比較、証明部分読む。
以下、試したかった部分だけ:
# install.packages("hdm") require(hdm) set.seed(1) ### modified from example(rlasso) ---------------- n <- 100 # sample size p <- 1500 # number of variables s <- 3 # nubmer of non-zero variables beta = c(rep(3,s), rep(0,p-s)) # s -> non-zero/zero coeff.vec X <- matrix(rnorm(n*p), ncol=p) y <- 1 + X%*%beta + rnorm(n) # use Lasso,not-Post-Lasso system.time( lasso.reg <- rlasso(y~X,post=FALSE, intercept=TRUE) ) summary(lasso.reg, all=FALSE) # use this option to summarize results # use Post-Lasso system.time( lasso.reg <- rlasso(y~X, post=TRUE, intercept=TRUE) ) summary(lasso.reg, all=FALSE) # use this option to summarize results yhat.lasso <- predict(lasso.reg) #in-sample prediction Xnew <- matrix(rnorm(n*p), ncol=p) # new X Ynew <- Xnew%*%beta + rnorm(n) #new Y yhat.lasso.new = predict(lasso.reg, newdata=Xnew) #out-of-sample prediction
オペレーションズ・リサーチ(Vol.58, No.5, 261)の解説記事にいろんなlassoとRの対応パッケージ表があるので、参考例のデータは微妙だがadaptive lassoとかとも比較してみたい。
http://www.orsj.or.jp/archive2/or58-05/or58_5_261.pdf
ちなみにこの記事、線形回帰モデルからlassoへの流れ、L1正則化が変数選択として機能する理由、変数選択のオラクルプロパティ、その先の展開まで、わずか数ページでまとまっていてオススメ。
詳しい解説
http://www.is.titech.ac.jp/~s-taiji/tmp/sparse_tutorial_2014.pdf
そのうちきちんと書き直します。