
Bing Image Creatorで生成:Photo of a lot of beautiful real flowers on the tropical beach, in the night, aurora is shining in the night sky
の続きです。前回はRのrpartパッケージでregresstion treeをやってみました。結果はlm()関数での普通の重回帰分析よりも悪いMSE(Mean Squared Error)でした。
今回は、glmnetパッケージでElastic-Net回帰分析をしてみます。
まず、glmnet用にマトリックスを用意します。

次に最適なalphaをもとめるためにfor loopをまわします。

前々回のClassificationと違うところは、family = "gaussian"にしているところです。
最適なalphaを確認します。

この最適なalphaでcross validationをして最適なlambdaを求めます。

plot()関数で結果をみてみましょう。


最適なlambdaをみてみましょう。

こうして最適なalphaと最適なlambdaでモデルを推計します。

係数をみてみましょう。

同じ線形モデルでもだいぶ係数は違う結果となりました。
glmnetでのElastic-Netでは、
roundness = -2.58 + 5.70 * ShapeFactor2 + 0.357 * ShapeFactor3 + 3.25 * ShapeFactor4
lm()関数のOLSの線形回帰では、
roundness = -2.66 + 3.88 * ShapeFactor1 -8.66 * ShapeFactor2 + 0.45 * ShapeFactor3 + 3.26 * ShapeFactor4
です。
それではこの推定モデルで予測します。

classificationではtype = 'class'でしたが、今回はtype = 'response'です。
予測値と実際の値の散布図を描きます。


ついでにlm()関数の予測値とglmnetの予測値の散布図も描いてみます。


2つのモデルの係数はまったく違うのに、予測結果は驚くほど似ています。
MSEを計算します。

glmnetパッケージでのElastic-Net回帰のMSEが一番小さい値となりました。
今回は以上です。
初めから読むには、
です。