R語言實現LASSO回歸模型

2020-12-05 騰訊網

  我們知道廣義線性模型包括了一維連續因變量、多維連續因變量、非負次數因變量、二元離散因變量、多元離散因變等的回歸模型。然而LASSO對以上的數據類型都適合,也可以說LASSO 回歸的特點是在擬合廣義線性模型的同時進行變量篩選(variable selection)和複雜度調整(regularization)。變量篩選是指不把所有的變量都放入模型中進行擬合,而是有選擇的把變量放入模型從而得到更好的性能參數。複雜度調整是指通過一系列參數控制模型的複雜度,從而避免過度擬合(Overfitting)。總的來說LASSO對數據的要求很低。對於線性模型來說,複雜度與模型的變量數有直接關係,變量數越多,模型複雜度就越高。 更多的變量在擬合時往往可以給出一個看似更好的模型,但是同時也面臨過度擬合的危險。此時如果用全新的數據去驗證模型(validation),通常效果很差。 一般來說,變量數大於數據點數量很多,或者某一個離散變量有太多獨特值時,都有可能過度擬合。

  今天我們給大家介紹下在R語言如何實現LASSO模型構建,其中有兩個包是可以實現的(glmnet和lars)。因為glmnet涉及範圍涉及廣義線性模型,我們就主要介紹下lars是怎麼實現LASSO的。包的安裝我就不多講了,install.pacakges(),你懂的。

  首先我們看下其函數lars()。該函數提供了通過回歸變量x和因變量y求解其回歸模型。

  其中主要的參數:

  1. type 模型的類型。Lar-最小角回歸,forward.stagewise-無窮小逐步回歸,stagewise-逐步回歸。

  2. normalize 表示是否對變量進行歸一化,當為TRUE時,程序將對x和y進行L2正則化。

  3. intercept表示是否對變量進行中心化,當為TRUE時,程序將對x和y分別減去其均值。

  diabetes數據中含有三個變量x,x2,y,其中x是一個有422X10維的矩陣,y是一422維個向量 ,x2是由x得到的 422X64維矩陣。

  示例程序:

  library(lars)

  data(diabetes)

  attach(diabetes)

  object1

  plot(object)

  圖中橫坐標代表的beta值或者步數,豎坐標代表的變量的參數。

  接下來就是模型的優化,用到的函數是cv.lars()。其主要的功能是確定最優解的步數,或者beta值。

  其中主要的參數:

  K 交叉驗證的次數,默認10倍交叉驗證。

  type同lars指的模型的類型。

  mode 指用到的參數指標。step即按步數step去選擇所需的參數,fraction即按照path中的橫坐標|beta|/max|beta|去選擇所需變量,fraction默認為0:100:1即 index=seq(from=0,to=1,length=100)。

  程序實例:

  cv_sol

  均方誤差MSE分析圖為:

  然後就是獲取最優最優回歸係數(使得均方誤差MSE最小)。

  fra=cv_sol$index[which.min(cv_sol$cv)]

  接下來就是通過上面得到的fra,獲取對應的參數值

  object$beta[fra,]

  最後就是模型的預測功能,我們用到的函數是predict。

  其主要參數:

  object表示我們通過lars計算得到的包含了解路徑信息的返回參數;

  type當type為"fit"時, 可以給定一個新預測樣本自變量數據,則該函數返回通過lars回歸模型得到的預測值;當type為"coefficient"時,則不需要輸入新數據, 該函數返回模型的回歸係數相當於cv.lars。

  mode表示我們輸入的模型的參數類型,同cv.lars函數。

  S表示通過cv.lars確定的最優解步數或者beta值。

  示例程序:

  res=predict(object,newx=x[1:5,],s=fra,type="fit", mode="step")

  如上圖得到我們想要的預測結果。

  歡迎大家學習交流!

相關焦點

  • R 語言 lasso回歸
    在基因數據的分析中,經常會用到lasso(套索)這種方法來進行變量的篩選,其實就是在目標優化函數後邊加一個L1正則化項,其中參數lamda為超參數
  • 用R進行Lasso regression回歸分析
    glmnet是由史丹福大學的統計學家們開發的一款R包,用於在傳統的廣義線性回歸模型的基礎上添加正則項,以有效解決過擬合的問題,支持線性回歸,邏輯回歸,泊松回歸,cox回歸等多種回歸模型,連結如下https://cran.r-project.org/web/packages/glmnet/index.html對於正則化,提供了以下3種正則化的方式
  • Stata: 拉索回歸和嶺回歸 (Ridge, Lasso) 簡介
    當 λ 趨於正無窮的時候, 則是純截距回歸。實踐中,可以通過交叉驗證(cross validation)的方法來選擇調整參數 λ 。在 Stata 命令中,可以通過命令 rxridge 來實現 Ridge 回歸。
  • r中回歸結果怎麼判定模型好壞_lasso回歸 模型好壞 - CSDN
    模型中不同形式的m(X)會幻化為不同的模型體系,一般可以將模型分為兩大類:m(X)可以幻化為數學公式,即公式模型,一般比較成熟的都是公式模型,例如回歸模型的理論與底蘊就比較完善,模型的假定都是可以進行檢驗的;
  • r語言一元回歸模型專題及常見問題 - CSDN
    一元線性回歸分析首先介紹回歸分析中最基礎的情況:一元線性回歸分析。它規定模型f函數只能是y=k*x+b的形式,即只使用一個變量x(故稱為一元)的線性形式來預測目標變量y。6.1.1引例利用某網站歷次促銷活動中促銷讓利費用和銷售金額的數據(單位是十萬元),將使用該數據集來說明線性回歸分析的應用。
  • R語言arma模型診斷_arma模型實現模型r語言 - CSDN
    運行Box.test(r,type="Ljung-Box",lag=6,fitdf=1)後,顯示的結果:Box.test(r,type="Ljung-Box",lag=6,fitdf=1)        Box-Ljung testdata:  r
  • r語言 多元回歸模型_r語言多元回歸模型殘差分析 - CSDN
    1、多元線性回歸模型1.1多元回歸模型與多元回歸方程設因變量為y,k個自變量分別為,描述因變量y如何依賴於自變量和誤差項ε的方程稱為多元回歸模型。其一般形式可表示為:式中,為模型的參數,ε為隨機誤差項。
  • 回歸or分類?線性or邏輯?一文掌握模型的不同之處
    一旦決定了要使用的方法,接下來就要選擇模型進行預測。視覺化呈現:回歸模型 vs. 分類模型回歸模型回歸模型中使用最普遍的是線性回歸和邏輯回歸。視覺化呈現:線性回歸 vs. 邏輯回歸兩種標準模型均可被調整,以更好擬合數據。主要方法是包含懲罰參數。線性和邏輯回歸模型對應的等式均包含全部輸入的變量,而這很可能會導致過度擬合。如果數據擬合過度,模型得出預測的可靠性會降低,並局限於訓練樣本。
  • R語言——交叉驗證法計算線性回歸模型擬合優度的第三種R方
    本來打算這周繼續更新一篇LaTex的小短文,但是貌似我已經很久沒有寫R語言相關的東西了。想來想去,今天就寫一篇和R語言有關的,畢竟不能忘記初心呀!凡是學過計量的同學,哪怕只記得一點點皮毛,對於R方和調整R方也應該是再熟悉不過了。R方和調整R方是判斷回歸模型擬合度的最為方便簡單的指標,一般來說,數值越大代表模型的擬合度越好。
  • R語言從入門到精通:Day12--R語言統計--回歸分析
    回歸作為一個廣義的概念,涵蓋了許多變種,R語言中也為其提供了強大而豐富的函數和選項(但顯然選項越多,對初學者越不友好),早在2005年,R中就有200多種關於回歸分析的函數 (https://cran.r-project.org/doc/contrib/Ricci-refcard-regression.pdf,這個文檔提供了部分回歸分析函數列表,供大家參考)。
  • LASSO回歸在生物醫學資料中的簡單實例
    model_lasso <- glmnet(x, y, family="gaussian", nlambda=50, alpha=1)LASSO回歸的結果解析print(model_lasso)## Call:  glmnet(x = x, y = y, family = "gaussian", alpha = 1, nlambda
  • 使用Python線性回歸:預測Steam的打折的幅度
    使用Python線性回歸預測Steam遊戲的打折的幅度上篇文章我們解決了Steam是否打折的問題,這篇文章我們要解決的是到底打折幅度有多少,這裡我們就不能使用分類模型,而需要使用回歸的模型了。主要目標在這個項目中,我將試圖找出什麼樣的因素會影響Steam的折扣率並建立一個線性回歸模型來預測折扣率。
  • r語言的p值檢驗 - CSDN
    醫學統計與R語言:對數正態分布與卡方分布醫學統計與R語言:qvalue醫學統計與R語言:Meta 回歸作圖(Meta regression Plot)醫學統計與R語言:aggregate.plot了解一下醫學統計與R語言:有序Probit回歸(Ordered Probit Model)醫學統計與R語言:Probit回歸模型及邊際效應
  • 醫學統計與R語言:GiViTI Calibration Belt
    https://cran.r-project.org/web/packages/givitiR/vignettes/givitiR.htmlNattino, G., Finazzi, S., & Bertolini, G. (2016).
  • R語言_018回歸
    通常,回歸分析可以用來挑選與響應變量相關的解釋變量,可以描述兩者的關係,也可以生成一個等式,通過解釋變量來預測響應變量。  下面介紹如何用R函數擬合OLS回歸模型、評價擬合優度、檢驗假設條件以及選擇模型,為了能夠恰當地解釋OLS模型的係數,數據必須滿足以下統計假設↓  如果違背了以上假設,統計顯著性檢驗結果和所得的置信區間就很可能不精確了。
  • 回歸模型擬合優度檢驗 - CSDN
    在依賴模型得出結論或預測未來結果之前,我們應儘可能檢查我們假設的模型是否正確指定。也就是說,數據不會與模型所做的假設衝突。對於二元結果,邏輯回歸是最流行的建模方法。在這篇文章中,我們將看一下 Hosmer-Lemeshow邏輯回歸的擬合優度檢驗。
  • 熱門數據挖掘模型應用入門(一): LASSO回歸
    此時如果用全新的數據去驗證模型(Validation),通常效果很差。 一般來說,變量數大於數據點數量很多,或者某一個離散變量有太多獨特值時,都有可能過度擬合。 LASSO回歸複雜度調整的程度由參數λ來控制,λ越大對變量較多的線性模型的懲罰力度就越大,從而最終獲得一個變量較少的模型。 LASSO回歸與Ridge回歸同屬於一個被稱為Elastic Net的廣義線性模型家族。
  • r回歸怎樣讓模型最好_r語言線性回歸怎麼加上回歸模型和r2 - CSDN
    金融計量VAR(向量自回歸)模型,R語言代碼。
  • R語言 | randomForest包的隨機森林回歸模型以及對重要變量的選擇
    在前文中,響應變量是一組類別變量(代表了樣本的分組信息),此時隨機森林用於執行監督分類的功能,模型的精度在於通過選定的預測變量組合將樣本正確劃分歸類的概率。而當響應變量是一組連續變量時,可將回歸森林用於回歸。此時,回歸模型的精度體現了選定的預測變量對響應變量數值改變有關方差的整體解釋率(可以理解為回歸的R2)。
  • 交叉驗證的R語言實現
    在之前的內容泛化誤差和留出法,交叉驗證中,我們介紹了泛化誤差的概念以及用以估計泛化誤差的留出法、留一法和K折交叉驗證法,本節我們討論如何在R語言中進行實現。我們用Age作為自變量對響應變量Wage進行建模,考慮多項式回歸模型:當