LASSO変数トレースプロットの解釈


15

私はこのglmnetパッケージを初めて使用しますが、結果の解釈方法がまだわかりません。誰でも次のトレースプロットを読むのを手伝ってもらえますか?

グラフは、次を実行して取得していました。

library(glmnet)
return <- matrix(ret.ff.zoo[which(index(ret.ff.zoo)==beta.df$date[2]), ])
data   <- matrix(unlist(beta.df[which(beta.df$date==beta.df$date[2]), ][ ,-1]), 
                 ncol=num.factors)
model  <- cv.glmnet(data, return, standardize=TRUE)

op <- par(mfrow=c(1, 2))
plot(model$glmnet.fit, "norm",   label=TRUE)
plot(model$glmnet.fit, "lambda", label=TRUE)
par(op)

ここに画像の説明を入力してください

回答:


20

両方のプロットで、各色付きの線は、モデル内の異なる係数によって取得された値を表します。ラムダは正則化項(L1ノルム)に与えられる重みであるため、ラムダがゼロに近づくと、モデルの損失関数はOLS損失関数に近づきます。これを具体化するためにLASSO損失関数を指定できる1つの方法を次に示します。

βlasso=argmin [RSSβ+λL1-ノルムβ]

したがって、ラムダが非常に小さい場合、LASSOソリューションはOLSソリューションに非常に近く、すべての係数がモデルに含まれている必要があります。ラムダが大きくなると、正則化項の効果が大きくなり、モデル内の変数が少なくなります(ゼロの値が増える係数が増えるため)。

上で述べたように、L1ノルムはLASSOの正則化用語です。おそらくそれを見るより良い方法は、x軸がL1ノルムがとることができる最大許容値であることです。したがって、L1ノルムが小さい場合、多くの正則化が行われます。したがって、L1ノルムがゼロの場合、空のモデルが得られ、L1ノルムを大きくすると、変数の係数がゼロ以外の値になるため、変数がモデルに入ります。

左側のプロットと右側のプロットは、基本的に同じものを異なるスケールで示しています。


2
非常にきちんとした答え、ありがとう!上記のグラフから「最良の予測子」、つまり最終モデルを推測することは可能ですか?
メイヨー

4
いいえ、そのための相互検証またはその他の検証手順が必要です。L1ノルムのどの値(または同等に、どのlog(lambda))が最良の予測能力を持つモデルを生成するかがわかります。
JAW

11
最強の予測変数を決定しようとしている場合、プロットを、モデルに早く入る変数が最も予測的であり、モデルに後で入る変数がそれほど重要でない証拠として解釈できます。「最良のモデル」が必要な場合、通常、これは相互検証によって検出されます。glmnetパッケージを使用して、これを達成するための一般的な方法は、ここであなたに示唆された:stats.stackexchange.com/a/68350/8451を。私は強く:あなたがダウンロードして無料でESLIIで短い投げ縄章(3.4.2および3.4.3)、読んでお勧めしますwww-stat.stanford.edu/~tibs/ElemStatLearn
デヴィッド・マルクス

@David Marx、プロットの上部の数字は何を指しますか?相互検証による最適なモデルの選択方法。
ジェザ

@DavidMarxはしばらく経ちましたが、これを疑問に思う他の人にとっては、それはゼロ値ではないその重みの係数の数です。
イアンベルチャー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.