วิธีการใช้วิธีกำลังสองน้อยที่สุด (IRLS) ที่ได้รับผลตอบแทนซ้ำกับโมเดล LASSO อย่างไร


12

ฉันมีโปรแกรมถดถอยโลจิสติกโดยใช้อัลกอริทึม IRLS ฉันต้องการใช้การลงโทษ LASSOเพื่อเลือกคุณสมบัติที่ถูกต้องโดยอัตโนมัติ ในการวนซ้ำแต่ละครั้งจะมีการแก้ไขดังต่อไปนี้:

(XTWX)δβ^=XT(yp)

ให้เป็นจำนวนจริงที่ไม่ลบ ฉันไม่ได้ทำการลงโทษดักตามที่แนะนำในองค์ประกอบของ การเรียนรู้ทางสถิติ เหมือนกันสำหรับสัมประสิทธิ์เป็นศูนย์อยู่แล้ว มิฉะนั้นฉันจะลบคำหนึ่งออกจากด้านขวา:λ

XT(yp)λ×sign(β^)

อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับการปรับเปลี่ยนอัลกอริทึม IRLS มันเป็นวิธีที่ถูกต้องหรือไม่


แก้ไข: แม้ว่าฉันไม่มั่นใจเกี่ยวกับเรื่องนี้ แต่นี่เป็นหนึ่งในวิธีแก้ปัญหาที่ฉันได้รับในที่สุด สิ่งที่น่าสนใจคือโซลูชันนี้สอดคล้องกับสิ่งที่ฉันเข้าใจเกี่ยวกับ LASSO ในขณะนี้ แน่นอนว่ามีสองขั้นตอนในการทำซ้ำแต่ละครั้งแทนที่จะเป็นเพียงขั้นตอนเดียว:

  • ขั้นตอนแรกเหมือนกับเมื่อก่อน: เราทำการวนซ้ำของอัลกอริทึม (ราวกับว่าในสูตรสำหรับการไล่ระดับสีด้านบน)λ=0
  • ขั้นตอนที่สองคือขั้นตอนใหม่: เราใช้ซอฟต์ในแต่ละองค์ประกอบ (ยกเว้น componentซึ่งสอดคล้องกับการสกัดกั้น) ของ vectorได้รับในขั้นตอนแรก นี้เรียกว่าซ้ำอ่อน Thresholding อัลกอริทึมβ0β

i1,βisign(βi)×max(0,|βi|λ)

ยังคงไม่สามารถรับคอนเวอร์เจนซ์ที่ดีขึ้นได้โดยการปรับ IRLS : '(
Wok

คำตอบ:


12

โดยทั่วไปปัญหานี้จะแก้ไขได้โดยการประสานงานโดยการตกลง ( ดูที่นี่ ) วิธีนี้ทั้งสองมีความปลอดภัยกว่ามีประสิทธิภาพเชิงตัวเลขอัลกอริธึมที่ง่ายกว่าในการนำไปใช้และใช้ได้กับอาร์เรย์ทั่วไปของโมเดล (รวมถึงการถดถอยของ Cox) การดำเนินการวิจัยที่มีอยู่ในRแพคเกจglmnet รหัสเป็นโอเพ่นซอร์ส (บางส่วนและใน C บางส่วนใน R) ดังนั้นคุณสามารถใช้รหัสเหล่านี้เป็นพิมพ์เขียว


@wok บันทึกย่อแพ็คเกจ scikit.learn ยังให้การใช้งาน Python ที่มีประสิทธิภาพสำหรับเนื้อหาประเภทนี้
chl

อัลกอริทึมโคตรโคตรน่าสนใจ ขอบคุณ ยังคงคิดเกี่ยวกับมัน
กระทะ

5

ฟังก์ชันการสูญเสีย LASSO มีความไม่ต่อเนื่องที่ศูนย์ตามแต่ละแกนดังนั้น IRLS จะมีปัญหากับมัน ฉันพบวิธีการเพิ่มประสิทธิภาพแบบขั้นตอนต่อเนื่องน้อยที่สุด (SMO) ที่มีประสิทธิภาพมากดูตัวอย่าง

http://bioinformatics.oxfordjournals.org/content/19/17/2246

รุ่นที่มีซอฟต์แวร์ MATLAB คือ

http://bioinformatics.oxfordjournals.org/content/22/19/2348

ซอฟต์แวร์มีให้ที่นี่:

http://theoval.cmp.uea.ac.uk/~gcc/cbl/blogreg/

แนวคิดพื้นฐานคือการปรับค่าสัมประสิทธิ์ให้เหมาะสมทีละตัวและทดสอบเพื่อดูว่าคุณข้ามค่าสัมประสิทธิ์ไม่ต่อเนื่องทีละค่าหรือไม่ซึ่งเป็นเรื่องง่ายเมื่อคุณทำการเพิ่มประสิทธิภาพสเกลาร์ มันอาจฟังดูช้า แต่จริงๆแล้วมันมีประสิทธิภาพค่อนข้างมาก (แม้ว่าฉันจะคาดหวังว่าอัลกอริทึมที่ดีกว่านั้นจะได้รับการพัฒนาขึ้นมา - โดย Keerthi หรือ Chih-Jen Lin ซึ่งเป็นทั้งผู้เชี่ยวชาญชั้นนำในเรื่องนั้น)


ขอบคุณ ฉันกำลังอ่านและคิดเกี่ยวกับมัน อย่างไรก็ตามนี่จะเป็นการดัดแปลงอัลกอริทึมในปัจจุบันอย่างมาก
กระทะ

4

คุณสามารถตรวจสอบกระดาษ: การถดถอยโลจิสติก L1 ปกติที่มีประสิทธิภาพซึ่งเป็นอัลกอริทึมที่ใช้ IRLS สำหรับ LASSO เกี่ยวกับการใช้งานลิงค์อาจมีประโยชน์สำหรับคุณ (http://ai.stanford.edu/~silee/softwares/irlslars.htm)


0

IRLS สำหรับปัญหา LASSO มีดังต่อไปนี้:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

โดยที่คือเมทริกซ์แนวทแยง - . สิ่งนี้มาจาก .WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

ตอนนี้ข้างต้นเป็นเพียงTikhonov regularization
กระนั้นตั้งแต่ขึ้นอยู่กับเราต้องแก้มันซ้ำ ๆ (เช่นนี้จะยกเลิก 2 ปัจจัยใน Tikhonov Normalization, เนื่องจากอนุพันธ์ของเกี่ยวกับในขณะที่ถือเป็นค่าคงที่คือซึ่งเท่ากับ ):WxxTWxxxdiag(sign(x))Wx

xk+1=(ATA+λWk)1ATb

โดยที่ .Wi,iK=1|xik|

การเริ่มต้นสามารถโดยฉันW=I

ให้ความสนใจสิ่งนี้ใช้ไม่ได้ผลกับและคุณควรใช้ ADMM หรือ Coordinate Descentλ

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