5

私は分位点回帰モデル + 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 パッケージは計算に失敗していますか?

4

0 に答える 0