λログ(λ )∑私| β私|
そのために、いくつかの相関データと非相関データを作成して、以下を実証しました。
x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]
sigma <- matrix(c( 1, -.5, 0,
-.5, 1, -.5,
0, -.5, 1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]
データx_uncorr
に相関のない列があります
> round(cor(x_uncorr), 2)
[,1] [,2] [,3]
[1,] 1.00 0.01 0.00
[2,] 0.01 1.00 -0.01
[3,] 0.00 -0.01 1.00
一方x_corr
、列間には事前に設定された相関があります
> round(cor(x_corr), 2)
[,1] [,2] [,3]
[1,] 1.00 -0.49 0.00
[2,] -0.49 1.00 -0.51
[3,] 0.00 -0.51 1.00
次に、これら両方の場合の投げ縄プロットを見てみましょう。まず、無相関データ
gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)
いくつかの機能が目立つ
- 予測変数は、真の線形回帰係数の大きさの順にモデルに入ります。
- ∑私| β私|∑私| β私|
- 新しい予測変数がモデルに入ると、モデルに既に存在するすべての予測変数の係数パスの勾配に決定論的に影響します。たとえば、2番目の予測子がモデルに入ると、最初の係数パスの勾配は半分になります。3番目の予測子がモデルに入ると、係数パスの勾配は元の値の3分の1になります。
これらはすべて、無相関データを使用した投げ縄回帰に適用される一般的な事実であり、すべて手作業で証明するか(良い演習です!)、文献で見つけることができます。
相関データを実行しましょう
gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)
無相関の場合と比較することにより、このプロットからいくつかのことを読むことができます
- 1番目と2番目の予測子パスは、3番目の予測子が相関関係にある場合でも、モデルに入るまで、非相関の場合と同じ構造を持ちます。これは、2つの予測子のケースの特別な機能です。興味がある場合は、別の回答で説明できますが、現在の議論から少し離れた場所に行く必要があります。
- ∑ | β私|
それでは、carsデータセットからプロットを見て、興味深いことをいくつか読んでみましょう(この議論を読みやすくするために、ここでプロットを再現しました)。
警告の言葉:私は、曲線が標準化された係数を示しているという前提に基づいて、次の分析を書きました。この例ではそうではありません。標準化されていない係数は無次元ではなく、比較できないため、予測の重要性の観点からそれらから結論を引き出すことはできません。以下の分析を有効にするには、プロットが標準化された係数のふりをして、標準化された係数パスで独自の分析を実行してください。
- あなたが言う
wt
ように、予測子は非常に重要なようです。最初にモデルに入り、最終値までゆっくりと安定して下降します。それは、わずかにでこぼこした乗り物になるいくつかの相関関係があります。am
特に、入ったときに劇的な効果があるようです。
am
また重要です。それは後で入り、に相関します。wt
これは、の勾配にwt
激しく影響するためです。また、carb
およびとも相関しqsec
ます。これは、傾斜が入ると予測可能な傾斜の軟化が見られないためです。しかし、これらの4つの変数が入力された後、素敵な無相関パターンが見られるため、最後のすべての予測子とは無相関のようです。
- 何かが周りの2.25 x軸上に入るが、そのパス自体は知覚できない、あなただけのそのに影響を与えることにより、それを検出することができます
cyl
し、wt
パラメータを設定します。
cyl
とても魅力的です。2番目に入るので、小さなモデルにとって重要です。他の変数、特にam
入力した後、それはもはや重要ではなく、その傾向は逆転し、最終的にはほとんど削除されます。の効果cyl
は、プロセスの最後に入力する変数によって完全にキャプチャできるようです。を使用することがより適切cyl
であるか、変数の補完的なグループであるかは、バイアスと分散のトレードオフに依存します。最終モデルにグループを含めると、分散が大幅に増加しますが、バイアスが低い方がそれを補う場合があります。
これは、これらのプロットから情報を読み取る方法を学んだ小さな紹介です。彼らはたくさんの楽しみだと思います!
すばらしい分析をありがとう。簡単に言えば、wt、am、およびcylはmpgの3つの最も重要な予測因子であると言えますか。また、予測用のモデルを作成する場合は、この図に基づいてどのモデルを含めますか:wt、am、およびcyl?または他の組み合わせ。また、分析に最適なラムダは必要ないようです。リッジ回帰のように重要ではありませんか?
私はそのケースがはっきりしているwt
と言っていいでしょうam
、彼らは重要です。 cyl
はるかに微妙で、小さなモデルでは重要ですが、大きなモデルではまったく関係ありません。
数字だけに基づいて何を含めるかを決定することはできません。実際にあなたがしていることの文脈に答えなければなりません。あなたは、その後、次の3つの予測モデルをしたい場合はと言うことができwt
、am
そしてcyl
、彼らは物事の壮大な計画に関連している、と小さなモデルで、合理的な効果の大きさを持つ終わる必要がありますように、良い選択です。これは、小さな3つの予測子モデルを希望する何らかの外部的な理由があるという前提に基づいています。
確かに、このタイプの分析ではラムダのスペクトル全体を調べ、さまざまなモデルの複雑さにわたって関係を選別することができます。とはいえ、最終モデルでは、最適なラムダを調整することが非常に重要だと思います。他の制約がない場合は、クロス検証を使用して、このスペクトルに沿って最も予測的なラムダがどこにあるかを見つけ、そのラムダを最終モデルと最終分析に使用します。
λ
他の方向では、モデルの複雑さに関する外部の制約がある場合があり(実装コスト、レガシーシステム、説明的ミニマリズム、ビジネスの解釈可能性、美的遺産)、この種の検査はデータの形状を理解するのに本当に役立ちます。最適なモデルよりも小さいモデルを選択することによるトレードオフ。
-1
にカンマを忘れたようですglmnet(as.matrix(mtcars[-1]), mtcars[,1])
。