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が一番小さい値となりました。
今回は以上です。
初めから読むには、
です。