Rでは、「glmnet」は切片に適合しますか?


10

を使用してRで線形モデルをフィッティングしていglmnetます。元の(正規化されてlmいない)モデルはを使用してフィットされ、定数項がありませんでした(つまり、の形式でしたlm(y~0+x1+x2,data))。

glmnet予測子の行列と応答のベクトルを取ります。私はglmnetドキュメントを読んでいますが、一定の用語についての言及はありません。

それで、glmnet原点を通して線形適合を強制するように依頼する方法はありますか?

回答:


12

はい、インターセプトはglmnetモデルに含まれていますが、正規化されていません(座標降下による一般化線形モデルの正規化パス、p。13を参照)。実装に関する詳細は、コードを注意深く見ることで確実に得られます(ガウスファミリの場合はelnet()によって呼び出される関数ですglmnet())が、Fortranにあります。

に渡すことでインターセプトを削除できるペナルティ付きパッケージを試すことができます。unpenalized = ~0penalized()

> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0, 
                    standardize=TRUE) 
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))

なげなわ正規化を取得するには、次のようなことを試してみてください

> fit1b <- penalized(y, penalized=x, unpenalized=~0, 
                     standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)

次の図に示すように、両方の方法で計算された回帰パラメーターにはほとんど違いがなく(左)、ラッソパスの解を非常に簡単にプロットできます(右)。

代替テキスト

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