จะประมาณค่าพารามิเตอร์การหดตัวใน Lasso หรือการถดถอยสันด้วยตัวแปร> 50K ได้อย่างไร?


36

ฉันต้องการใช้ Lasso หรือการถดถอยสันสำหรับโมเดลที่มีตัวแปรมากกว่า 50,000 ตัว ฉันต้องการทำเช่นนั้นโดยใช้แพคเกจซอฟต์แวร์ในอาร์ฉันสามารถประมาณการพารามิเตอร์การหดตัว ( )?λ

การแก้ไข:

นี่คือจุดที่ฉันตื่นขึ้นมา:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

ป้อนคำอธิบายรูปภาพที่นี่

คำถามของฉันคือ: ฉันจะรู้ได้อย่างไรว่าดีที่สุดสำหรับแบบจำลองของฉัน?λ


3
พารามิเตอร์การปรับให้เรียบนั้นไม่สามารถประมาณได้ทางสถิติ แต่ใช้การเลือกเพื่อเพิ่มความพอดีของตัวอย่างออกให้มากที่สุดตัวอย่างเช่นการตรวจสอบความถูกต้องไขว้ ฉันคิดว่าแพ็คเกจมาตรฐานสำหรับ LASSO และ Ridge Regression ใน R ได้สร้างฟังก์ชันการทำงานให้คุณแล้ว - คุณเคยลองใช้มันดูบ้างไหม?
มาโคร

4
ฉันไม่เห็นด้วย - คุณสามารถประมาณค่าพารามิเตอร์การปรับให้เรียบโดยใช้วิธีการแบบผสม วิธีการ reml มีอยู่เช่นเดียวกับวิธีการทำ heirarchical bayes คุณไม่จำเป็นต้องมีการตรวจสอบข้ามราคาแพง
ความน่าจะเป็นทางการ

1
@probabilityislogic ขอบคุณสำหรับข้อมูล มันจะดีถ้ามีรายละเอียดเล็กน้อยเกี่ยวกับสคริปต์ว่าเราสามารถทำสิ่งนี้ได้อย่างไรโดยใช้ reml
John

2
สำหรับการตรวจสอบความถูกต้องของการถดถอยแบบริดจ์แบบไม่มีการคัดค้านแบบไม่มีค่าใช้จ่าย (สถิติการกด PR ของอัลเลน) และฉันพบว่ามันเป็นวิธีที่ดีพอสมควร อย่างไรก็ตามด้วยคุณสมบัติดังกล่าวอาจมีวิธีการใด ๆ ที่คุณใช้จะไม่เสถียรและวิธีการแบบเบย์อย่างสมบูรณ์ที่ทำให้ทั้งพารามิเตอร์และพารามิเตอร์การทำให้เป็นปกติน่าจะเป็นโซลูชันที่น่าเชื่อถือมากกว่า (อย่างที่ฉันคิดว่าน่าจะเป็น หากคุณไม่ชอบวิธีการแบบเบย์ให้ใช้ถุงบรรจุและประเมินแลมบ์ดาใหม่ทุกครั้ง
Dikran Marsupial

2
λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2β=β^

คำตอบ:


25

cv.glmnetλ112α

λλcv.glmnetλlambda.minlambda.1seλtype.measure

อีกวิธีหนึ่งแพคเกจ R mgcvมีความเป็นไปได้มากมายสำหรับการประเมินด้วยการลงโทษแบบกำลังสองรวมถึงการเลือกพารามิเตอร์การปรับโดยอัตโนมัติ วิธีการดำเนินการรวมถึงการตรวจสอบข้ามทั่วไปและ REML ตามที่ระบุไว้ในความคิดเห็น รายละเอียดเพิ่มเติมสามารถพบได้ในหนังสือผู้แต่งแพ็คเกจ: Wood, SN (2006) Generalized Additive Models: บทนำกับ R, CRC


1
cv.glmnetλlambda.minlambda.1se

@chl ขอบคุณสำหรับคำแนะนำ ฉันควรจะเพิ่มที่
NRH

15

คำตอบนี้เฉพาะเจาะจงกับ MATLAB อย่างไรก็ตามแนวคิดพื้นฐานควรจะค่อนข้างคล้ายกับสิ่งที่คุณคุ้นเคยกับ R ...

ในกรณีของ MATLAB คุณมีตัวเลือกในการรัน lasso โดยเปิดใช้งานการตรวจสอบความถูกต้องข้าม

หากคุณทำเช่นนั้นฟังก์ชัน lasso จะรายงานค่าพารามิเตอร์ที่สำคัญสองค่า

  1. ค่าแลมบ์ดาที่ลดข้อผิดพลาดกำลังสองเฉลี่ยที่ผ่านการตรวจสอบความถูกต้องแล้ว
  2. ค่าแลมบ์ดาที่มีจำนวนการหดตัวมากที่สุดซึ่ง CVMSE อยู่ภายในข้อผิดพลาดมาตรฐานเดียวของค่าต่ำสุด

คุณยังได้แผนภูมิเล็ก ๆ ที่คุณสามารถใช้เพื่อตรวจสอบความสัมพันธ์ระหว่างแลมบ์ดาและ CVMSE

ป้อนคำอธิบายรูปภาพที่นี่

โดยทั่วไปคุณจะต้องเลือกค่าแลมบ์ดาที่อยู่ระหว่างเส้นสีน้ำเงินกับเส้นสีเขียว

การโพสต์บล็อกต่อไปนี้มีรหัสตัวอย่างบางส่วนตามตัวอย่างใน

Tibshirani, R. (1996) การหดตัวและการเลือกการถดถอยผ่านเชือก เจ. โรยัล statist Soc B. , Vol. 58, หมายเลข 1, หน้า 267-288)

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.