การเลือกอัลฟาที่ดีที่สุดในการถดถอยโลจิสติกเน็ตแบบยืดหยุ่น


22

ฉันกำลังทำการถดถอยโลจิสติกส์แบบยืดหยุ่นบนชุดข้อมูลด้านการดูแลสุขภาพโดยใช้glmnetแพ็คเกจใน R โดยเลือกค่าแลมบ์ดาในตารางของจาก 0 ถึง 1 รหัสย่อของฉันอยู่ด้านล่าง:α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

ซึ่งส่งออกข้อผิดพลาดการตรวจสอบความถูกต้องข้ามเฉลี่ยสำหรับแต่ละค่าของอัลฟาจากถึงโดยเพิ่มขึ้น :1.0 0.10.01.00.1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

จากสิ่งที่ฉันได้อ่านในวรรณกรรมทางเลือกที่ดีที่สุดของคือข้อผิดพลาด cv ถูกย่อให้เล็กสุด แต่มีข้อผิดพลาดมากมายในช่วงของอัลฟา ฉันเห็นต่ำสุดในประเทศหลายแห่งที่มีข้อผิดพลาดขั้นต่ำทั่วโลกของสำหรับα0.1942612alpha=0.8

มันมีความปลอดภัยที่จะไปด้วยalpha=0.8? หรือถ้ามีความแปรปรวนฉันควรเรียกใช้อีกครั้งcv.glmnetด้วยการตรวจสอบความถูกต้องไขว้มากกว่าเดิม (เช่นแทน ) หรืออาจเพิ่มจำนวนทีละมากขึ้นระหว่างและเพื่อให้ได้ภาพเส้นทางที่ผิดพลาดของ cv?10 α2010αalpha=0.01.0


5
คุณต้องการที่จะดูcaretแพคเกจที่สามารถทำซ้ำ CV และปรับแต่งสำหรับอัลฟาและแลมบ์ดา (รองรับการประมวลผลแบบมัลติคอร์!) จากหน่วยความจำฉันคิดว่าglmnetเอกสารแนะนำไม่ให้ปรับอัลฟ่าในแบบที่คุณทำที่นี่ มันแนะนำเพื่อให้ foldids cv.glmnetคงที่หากผู้ใช้ปรับแต่งสำหรับอัลฟานอกเหนือไปจากการปรับแต่งสำหรับแลมบ์ดาให้บริการโดย

1
อาพบโพสต์ที่นี่: stats.stackexchange.com/questions/69638/…
RobertF

2
อย่าลืมแก้ไข foldid เมื่อคุณลองใช้แตกต่างα
user4581

1
เพื่อความสามารถในการทำซ้ำอย่าวิ่งcv.glmnet()โดยไม่ผ่านการfoldidsสร้างจากเมล็ดสุ่มที่รู้จัก
smci

1
@ amoeba ได้ดูคำตอบของฉัน - ยินดีต้อนรับเข้าสู่การแลกเปลี่ยนระหว่าง l1 และ l2!
Xavier Bourret Sicotte

คำตอบ:


7

ชี้แจงสิ่งที่มีความหมายโดยพารามิเตอร์αและ Elastic Net

คำศัพท์และพารามิเตอร์ที่แตกต่างกันจะถูกใช้โดยแพ็คเกจที่แตกต่างกัน แต่โดยทั่วไปความหมายจะเหมือนกัน:

แพคเกจ R Glmnetใช้ความละเอียดดังต่อไปนี้

minβ0,β1Ni=1Nwil(yi,β0+βTxi)+λ[(1α)||β||22/2+α||β||1]

Sklearnใช้

minw12Ni=1N||yXw||22+α×l1ratio||w||1+0.5×α×(1l1ratio)×||w||22

มีparametrizations ทางเลือกโดยใช้aและbเช่นกัน ..

เพื่อหลีกเลี่ยงความสับสนฉันจะโทรหา

  • λพารามิเตอร์แข็งแรงโทษ
  • L1ratioอัตราส่วนระหว่างL1และL2โทษตั้งแต่ 0 (สัน) ถึง 1 (เชือก)

การแสดงผลกระทบของพารามิเตอร์

พิจารณาข้อมูลชุดจำลองที่yประกอบด้วยเส้นโค้งไซน์มีเสียงดังและXเป็นคุณลักษณะที่สองมิติประกอบด้วยX1=xและX2=x2 2 เนื่องจากความสัมพันธ์ระหว่างX1และX2ฟังก์ชั่นค่าใช้จ่ายเป็นหุบเขาแคบ ๆ

กราฟิกด้านล่างแสดงเส้นทางการแก้ปัญหาของการยืดหยุ่นเน็ตด้วยพารามิเตอร์อัตราส่วนL1แตกต่างกันสองฟังก์ชั่นของพารามิเตอร์ความแข็งแรงλ

  • สำหรับการจำลองทั้งสอง: เมื่อλ=0การแก้ปัญหาคือโซลูชัน OLS ที่มุมล่างขวาพร้อมกับฟังก์ชั่นต้นทุนรูปทรงหุบเขาที่เกี่ยวข้อง
  • เมื่อλเพิ่มขึ้นการทำให้เป็นปกติจะเริ่มทำงานและการแก้ปัญหามีแนวโน้มที่จะ(0,0)
  • ความแตกต่างที่สำคัญระหว่างการจำลองทั้งสองคือพารามิเตอร์อัตราส่วนL1
  • LHS : สำหรับอัตราส่วนL1ขนาดเล็กฟังก์ชั่นค่าใช้จ่ายปกติจะมีลักษณะคล้ายกับการถดถอยของสันที่มีรูปทรงกลม
  • RHS : สำหรับอัตราส่วนL1มีขนาดใหญ่ฟังก์ชั่นค่าใช้จ่ายมีลักษณะคล้ายกับการถดถอยแบบ Lasso โดยมีรูปทรงเพชรทั่วไป
  • สำหรับอัตราส่วนL1กลาง(ไม่แสดง) ฟังก์ชั่นค่าใช้จ่ายเป็นการรวมกันของทั้งสอง

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


ทำความเข้าใจกับผลกระทบของพารามิเตอร์

ElasticNet ได้รับการแนะนำให้ตอบโต้ข้อ จำกัด บางประการของ Lasso ซึ่ง ได้แก่ :

  • หากมีตัวแปรมากกว่าpจุดข้อมูลn , p>n , lasso จะเลือกตัวแปรnส่วนใหญ่
  • Lasso ไม่สามารถทำการเลือกกลุ่มโดยเฉพาะอย่างยิ่งเมื่อมีตัวแปรที่สัมพันธ์กัน มันมักจะเลือกตัวแปรหนึ่งตัวจากกลุ่มและเพิกเฉยตัวแปรอื่น ๆ

L1L2

  • L1
  • L2L1

คุณสามารถดูนี้สายตาในแผนภาพข้างต้นเอกที่จุดส่งเสริมsparsityขณะที่ขอบนูนเข้มงวดขอแนะนำให้จัดกลุ่ม

นี่คือการสร้างภาพจาก Hastie (ผู้ประดิษฐ์ ElasticNet)

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

อ่านเพิ่มเติม


2

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

  1. αkf1,...,fkf(x)=1kifi(x)f(x)=i=1kfi(x)k

  2. ข้อดีอย่างหนึ่งของการ resampling คือคุณสามารถตรวจสอบลำดับของคะแนนการทดสอบได้ซึ่งนี่คือคะแนนของ cv คุณไม่ควรดูที่ค่าเฉลี่ยเท่านั้น แต่ต้องดูที่ค่าเบี่ยงเบนมาตรฐาน (ไม่ใช่การแจกแจงแบบปกติ โดยปกติคุณแสดงข้อความนี้เป็น 65.5% (± 2.57%) เพื่อความถูกต้อง วิธีนี้คุณสามารถบอกได้ว่า "ความเบี่ยงเบนเล็ก ๆ " มีแนวโน้มที่จะเกิดขึ้นโดยบังเอิญหรือมีโครงสร้างมากกว่า ดีกว่าที่จะได้ตรวจสอบลำดับที่สมบูรณ์ หากมีการปิดหนึ่งครั้งด้วยเหตุผลบางอย่างคุณอาจต้องการคิดใหม่เกี่ยวกับวิธีแยกของคุณ ใน Scikit เรียนรู้GridSearchCVรายละเอียดร้านค้าเกี่ยวกับการหมดอายุของพับในcv_results_( ดูที่นี่ )

  3. αL1αL2

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