私は分位点回帰モデル + R のボストン住宅データの LASSO ペナルティを構築しています。この種のモデルを構築できる 2 つのパッケージ、rqPen と quantreg を見つけました。rqPen はクロス検証プロセスを実装して LASSO パラメーターのラムダを調整するため、これを使用することにしました。アルゴリズムによって自動的に選択された 100 個の異なるラムダ値と 10 個のフォールドを考慮しました。
library(rqPen)
library(mlbench)
data("BostonHousing")
help(BostonHousing)
x_boston <- data.matrix(BostonHousing[,-14])
y_boston <- BostonHousing[,14]
cv_m1_boston <- cv.rq.pen(x_boston,y_boston, penalty="LASSO", nlambda=100, nfolds=10, tau=.5, cvFunc="AE")
CV からの結果は、0.46 のラムダ値で達成された最小の絶対誤差は 4.2 であるということです。このモデルは、予測子「zn」、「tax」、「b」、および「lstat」のみを考慮し、残りの予測子に関連付けられた係数をゼロに送信します。
m1_boston <- rq.lasso.fit(x_boston[i_train,], y_boston[i_train], tau=0.5, lambda=0.46)
Coefficients:
intercept crim zn indus chas nox rm age dis rad
27.175724364 0.000000000 0.025560221 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000
tax ptratio b lstat
-0.008151729 0.000000000 0.007577458 -0.495927958
もう 1 つのパッケージである quantreg パッケージを使用して同じモデルを構築することにしましたが、ラムダ値は維持しました。2 つのパッケージを形成するモデルは、モデルに含まれる予測子に関しては正確に等しいわけではなく、類似していると予想しました。
library(quantreg)
m2_boston <- rq(medv~., data=BostonHousing[i_train,], tau=0.5,method = "lasso", lambda=0.46)
そして、このモデルではすべての予測子が使用されていたため、最初のモデルとは完全に異なることがわかりました。
Coefficients:
(Intercept) crim zn indus chas1 nox rm age dis rad
15.528274036 -0.128622834 0.038896192 0.007109711 1.385725245 -7.221209356 5.144134214 -0.035033485 -1.075032872 0.165388801
tax ptratio b lstat
-0.010579964 -0.765578313 0.012533729 -0.283032080
私は何か間違ったことをしていますか?rqPen パッケージは計算に失敗していますか?