天天看點

r語言中對LASSO,Ridge嶺回歸和Elastic Net模型實作介紹MSE在測試集上系數上限和下限懲罰因素

原文連結:http://tecdat.cn/?p=3795

介紹

Glmnet是一個通過懲罰最大似然來拟合廣義線性模型的包。正則化路徑是針對正則化參數λ的值網格處的套索或彈性網絡罰值計算的。該算法速度極快,可以利用輸入矩陣中的稀疏性x。它符合線性,邏輯和多項式,泊松和Cox回歸模型。可以從拟合模型中做出各種預測。它也可以适合多響應線性回歸。

glmnet算法采用循環坐标下降法,它連續優化每個參數上的目标函數并與其他參數固定,并反複循環直至收斂。該軟體包還利用強大的規則來有效地限制活動集。由于高效的更新和技術,如熱啟動和主動集合收斂,我們的算法可以非常快地計算解決方案路徑。

該代碼可以處理稀疏的輸入矩陣格式,以及系數的範圍限制。其核心glmnet是一組Fortran子程式,它們使執行速度非常快。

該軟體包還包括用于預測和繪圖的方法以及執行K倍交叉驗證的功能。

首先,我們加載glmnet包:

library(glmnet)## Loading required package: Matrix## Loaded glmnet 1.9-9

包中使用的預設模型是高斯線性模型或“最小二乘”,我們将在本節中示範。我們加載一組預先建立的資料用于說明。使用者可以加載自己的資料,也可以使用儲存在工作區中的資料。

load("QuickStartExample.RData")

該指令從該儲存的R資料檔案中加載輸入矩陣x和響應向量y。

我們使用最基本的呼叫來适應模型glmnet。

fit=glmnet(x,y)

“适合”是類的一個對象,glmnet它包含拟合模型的所有相關資訊以供進一步使用。我們不鼓勵使用者直接提取元件。相反,提供對象,如各種方法plot,print,coef和predict,使我們能夠更優雅執行這些任務。

我們可以通過執行plot函數來顯示系數:

r語言中對LASSO,Ridge嶺回歸和Elastic Net模型實作介紹MSE在測試集上系數上限和下限懲罰因素

MSE在測試集上

r語言中對LASSO,Ridge嶺回歸和Elastic Net模型實作介紹MSE在測試集上系數上限和下限懲罰因素

我們看到lasso(alpha=1)在這裡做的最好。我們也看到,使用的lambda的範圍與alpha不同。

系數上限和下限

這些是最近添加的增強模型範圍的功能。假設我們想要拟合我們的模型,但将系數限制為大于-0.7且小于0.5。這是很容易通過實作upper.limits和lower.limits參數:

r語言中對LASSO,Ridge嶺回歸和Elastic Net模型實作介紹MSE在測試集上系數上限和下限懲罰因素

懲罰因素

該參數允許使用者對每個系數應用單獨的懲罰因子。其每個參數的預設值為1,但可以指定其他值。特别是,任何penalty.factor等于零的變量都不會受到懲罰!讓[ 數學處理錯誤]vĴ表示[ 數學處理錯誤]的懲罰因子Ĵ變量。罰款期限變為[ 數學處理錯誤] 請注意,懲罰因子在内部重新調整為與nvars相加。

當人們對變量有先驗知識或偏好時,這非常有用。在很多情況下,一些變量可能非常重要,以至于一直想要保持這些變量,這可以通過将相應的懲罰因子設定為0來實作:

r語言中對LASSO,Ridge嶺回歸和Elastic Net模型實作介紹MSE在測試集上系數上限和下限懲罰因素