段階的アルゴリズムの変数選択方法は、回帰モデルのすべての推定値(およびそのSE、p値、F統計量など)に多かれ少なかれバイアスをかけるモデルを選択する傾向があり、ほぼ真の予測子を除外する可能性が高い適度に成熟したシミュレーション文献によると、誤った予測変数を含めます。
LASSOは、変数を選択するために使用される場合、同じ特定の方法で影響を受けますか?
11.4.1 Variable-Selection Consistency for the Lasso
段階的アルゴリズムの変数選択方法は、回帰モデルのすべての推定値(およびそのSE、p値、F統計量など)に多かれ少なかれバイアスをかけるモデルを選択する傾向があり、ほぼ真の予測子を除外する可能性が高い適度に成熟したシミュレーション文献によると、誤った予測変数を含めます。
LASSOは、変数を選択するために使用される場合、同じ特定の方法で影響を受けますか?
11.4.1 Variable-Selection Consistency for the Lasso
回答:
LASSOモデルの場合、尤度、p値などの頻出表現の確率解釈、および段階的回帰は正しくありません。
これらの式は確率を過大評価しています。たとえば、一部のパラメーターの95%信頼区間は、メソッドがその区間内に真のモデル変数を持つ区間をもたらす確率が95%であると言うことになっています。
ただし、近似モデルは典型的な単一の仮説に起因するものではなく、代わりに段階的回帰またはLASSO回帰を行うときにチェリーピッキング(多くの可能な代替モデルから選択)しています。
モデルパラメーターの正確さを評価することはほとんど意味がありません(特にモデルが正しくない可能性が高い場合)。
後で説明する以下の例では、モデルは多くのリグレッサに適合し、多重共線性の影響を受けます。これにより、モデル内に実際に存在するものではなく、隣接するリグレッサ(強く相関している)がモデル内で選択される可能性が高くなります。強い相関により、係数の誤差/分散が大きくなります(行列)。
ただし、多重衝突によるこの高い分散は、p値や係数の標準誤差などの診断では「見られません」。これらは、回帰子が少ない、より小さな設計行列基づいているためです。(およびLASSOのこれらのタイプの統計を計算する簡単な方法はありません)
例:10ガウス曲線の線形和である信号のおもちゃモデルの結果を表示する以下のグラフ(これは、たとえば、スペクトルの信号が線形和と見なされる化学の分析に似ている場合がありますいくつかのコンポーネント)。LASSOを使用して、10個の曲線の信号に100個の成分のモデル(平均値の異なるガウス曲線)を当てはめます。信号はよく推定されています(かなり近い赤と黒の曲線を比較してください)。しかし、実際の基礎となる係数は十分に推定されておらず、完全に間違っている可能性があります(赤と黒のバーを同じではないドットと比較してください)。最後の10個の係数も参照してください。
91 91 92 93 94 95 96 97 98 99 100
true model 0 0 0 0 0 0 0 142.8 0 0 0
fitted 0 0 0 0 0 0 129.7 6.9 0 0 0
LASSOモデルは非常に近似する係数を選択しますが、係数自体の観点から、非ゼロである係数がゼロであると推定され、隣接する係数がゼロであると推定される場合、大きな誤差を意味しますゼロ以外。係数の信頼区間はほとんど意味がありません。
LASSOフィッティング
段階的なフィッティング
比較として、同じ曲線を次の画像に至る段階的なアルゴリズムに適合させることができます。(係数は近いが一致しないという同様の問題がある)
曲線の精度(前のポイントで意味をなさないことが明らかにされたパラメーターではなく)を考慮する場合でも、オーバーフィットに対処する必要があります。LASSOでフィッティング手順を実行する場合、トレーニングデータ(さまざまなパラメーターでモデルをフィッティングするため)とテスト/検証データ(最適なパラメーターであるチューニング/検出するため)を使用しますが、3番目の別個のセットも使用する必要がありますデータのパフォーマンスを調べるためのテスト/検証データ。
p値または似たようなものは、チェリーピッキングであり、通常の線形近似法とは異なる(はるかに大きな自由度)調整モデルで作業しているため機能しません。
段階的回帰と同じ問題に苦しんでいますか?
、p値、Fスコア、標準エラーなどの値のバイアスなどの問題に言及しているようです。これらの問題を解決するためにLASSOは使用されていないと思います。
段階的回帰の代わりにLASSOを使用する主な理由は、LASSOが多重欲求の影響が少ない貪欲なパラメーター選択を許可しないためだと思いました。(LASSOとstepwiseのさらなる違い:モデルの相互検証予測エラーの観点から、前方選択/後方消去に対するLASSOの優位性)
サンプル画像のコード
# settings
library(glmnet)
n <- 10^2 # number of regressors/vectors
m <- 2 # multiplier for number of datapoints
nel <- 10 # number of elements in the model
set.seed(1)
sig <- 4
t <- seq(0,n,length.out=m*n)
# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))
# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)
# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE,
alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])
# non negative least squares
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)
# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))
plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",bty="n")
#lines(t,Yfit,col=2,lwd=2) # fitted mean
lines(t,X %*% coef,lwd=2) # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2) # 2nd fit
# add coefficients in the plot
for (i in 1:n) {
if (coef[i] > 0) {
lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
}
if (coef(fit)[i+1] > 0) {
# lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
# points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
}
if (coef(fit2)[i+1] > 0) {
lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
}
}
#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)
text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)
plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",
ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n")
#lines(t,X %*% coef,lwd=2,col=2)
for (i in 1:n) {
if (coef[i] > 0) {
lines(t,X[,i]*coef[i],lty=1)
}
if (coef(fit)[i+1] > 0) {
# lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
}
if (coef(fit2)[i+1] > 0) {
lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
}
}
text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)
これに対処する新しい講演があります。結論:投げ縄は、「正しい」変数を選択する可能性が低いです。スライドは http://fharrell.com/talk/stratos19にあります
–フランクハレル
「下線:投げ縄は「正しい」変数を選択する可能性が低い」に関連します。スパース性のある統計学習(https://web.stanford.edu/~hastie/StatLearnSparsity_files/SLS_corrected_1。)の同じトピックに関するセクションがあります。 4.16.pdf)、
11.4.1 Variable-Selection Consistency for the Lasso
–エイドリアン
「下線:投げ縄は「正しい」変数を選択する可能性が低い」とも関連しています。https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf ケーススタディ1および2を参照して ください
–エイドリアン