การถดถอยเชิงเส้นหลายตัวแปรด้วยเชือกใน r


9

ฉันพยายามสร้างแบบจำลองที่ลดลงเพื่อทำนายตัวแปรตามจำนวนมาก (DV) (~ 450) ที่มีความสัมพันธ์สูง

ตัวแปรอิสระของฉัน (IV) ก็มีมากมาย (~ 2000) และมีความสัมพันธ์สูง

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

มีการถดถอยเชิงเส้นหลายตัวแปรที่ใช้เชือกใน R หรือไม่?

นี่ไม่ใช่กลุ่มบ่วงบาศ กลุ่ม lasso กลุ่ม IV ฉันต้องการการถดถอยเชิงเส้นหลายตัวแปร (หมายถึง DV เป็นเมทริกซ์ไม่ใช่เวกเตอร์สเกลาร์) ที่ใช้บ่วงบาศ (หมายเหตุ: ตาม NRH ชี้ว่าสิ่งนี้ไม่เป็นความจริงกลุ่ม lasso เป็นคำทั่วไปที่มีกลยุทธ์ที่จัดกลุ่ม IV แต่รวมถึงกลยุทธ์ที่จัดกลุ่มพารามิเตอร์อื่น ๆ เช่น DV)

ฉันพบบทความนี้ที่กลายเป็นสิ่งที่เรียกว่าSparse Overlapping Sets Lasso

นี่คือรหัสบางอย่างที่ทำให้การถดถอยเชิงเส้นหลายตัวแปร

> dim(target)
[1] 6060  441
> dim(dictionary)
[1] 6060 2030
> fit = lm(target~dictionary)

นี่คือรหัสบางอย่างที่ทำเชือกบน DV เดี่ยว

> fit = glmnet(dictionary, target[,1])

และนี่คือสิ่งที่ฉันต้องการจะทำ:

> fit = glmnet(dictionary, target)
Error in weighted.mean.default(y, weights) : 
  'x' and 'w' must have the same length

การเลือกคุณสมบัติที่เหมาะสมกับเป้าหมายทั้งหมดในครั้งเดียว


มันไม่ชัดเจนในสิ่งที่คุณถามยกเว้นในจุดสุดท้าย แพคเกจเรียกว่าglmnetและมีบทความสั้น ๆ
generic_user

"แต่ละครั้ง" คุณหมายถึงอะไร คุณใช้งานชุดย่อยของข้อมูลของคุณหรือไม่ การตรวจสอบข้าม? ตัวอย่างที่แตกต่างกันอย่างไร
shadowtalker

ในแต่ละครั้งฉันหมายถึงฉันกำลังเรียกใช้ glmnet กับตัวแปรที่ขึ้นต่อกันครั้งละหนึ่งตัวและวนซ้ำทั้งหมด
kmace

หรือพูดอีกอย่างว่า y ของฉันเป็นเวกเตอร์เสมอไม่ใช่เมทริกซ์
kmace

1
@ Firebug อย่างแน่นอน ฉันไม่รู้ว่าคำนั้นกว้างกว่าปกติ ขออภัยด้วย
kmace

คำตอบ:


11

สำหรับการตอบสนองหลายตัวแปร (จำนวนตัวแปรตามขนาดใหญ่กว่า 1) คุณต้องในการเรียกร้องของ family = "mgaussian"glmnet

แพคเกจ lsglเป็นทางเลือกซึ่งมีโทษความยืดหยุ่นมากขึ้น

ด้วยการตอบสนองมิติมิติแพคเกจ glmnet ใช้โทษ โดยที่เป็นเวกเตอร์ของสัมประสิทธิ์สำหรับตัวทำนาย th ในหน้าช่วยเหลือคุณสามารถอ่าน:k

j=1pβj2

βj=(βj1,,βjk)Tjglmnet

อดีต [ family = "mgaussian"] อนุญาตให้มีการตอบสนองแบบเกาส์หลายแบบให้พอดีโดยใช้การลงโทษแบบ "กลุ่ม - คลาส" กับสัมประสิทธิ์สำหรับแต่ละตัวแปร การผูกคำตอบเข้าด้วยกันเช่นนี้เรียกว่าการเรียนรู้ "หลายภารกิจ" ในบางโดเมน

บทลงโทษนี้เป็นตัวอย่างของการลงโทษวงบ่วงบาศกลุ่มซึ่งพารามิเตอร์กลุ่มสำหรับการตอบสนองที่แตกต่างกันซึ่งเกี่ยวข้องกับตัวทำนายเดียวกัน มันส่งผลในการเลือกตัวทำนายเดียวกันในการตอบสนองทั้งหมดสำหรับค่าที่กำหนดของพารามิเตอร์การปรับ

แพ็คเกจ lsgl ดำเนินการลงโทษกลุ่มแบบเบาบางในรูปแบบ โดยที่และเป็นตุ้มน้ำหนักบางตัวที่ได้รับการคัดเลือกให้สมดุลกับการบริจาคจากเงื่อนไขต่างๆ เริ่มต้นคือและ{k} พารามิเตอร์เป็นพารามิเตอร์การปรับแต่ง ด้วย (และ ) โทษเทียบเท่ากับโทษที่ใช้โดยมี ด้วย (และ

αj=1pl=1kξjl|βjl|+(1α)j=1pγjβj2

ξjlγjξjl=1γj=kα[0,1]α=0γj=1glmnetfamily = "mgaussian"α=1ξjl=1) การลงโทษให้บ่วงบาศธรรมดา การใช้ lsgl ยังช่วยให้สามารถจัดกลุ่มตัวพยากรณ์เพิ่มเติมได้อีกด้วย

หมายเหตุเกี่ยวกับบ่วงบาศกลุ่ม คำว่ากลุ่มเชือกมักเกี่ยวข้องกับการจัดกลุ่มของผู้ทำนาย อย่างไรก็ตามจากมุมมองทั่วไปที่มากขึ้นกลุ่มเชือกเป็นเพียงการจัดกลุ่มของพารามิเตอร์ในการลงโทษ การจัดกลุ่มที่ใช้โดยglmnetกับfamily = "mgaussian"เป็นการจัดกลุ่มของพารามิเตอร์ข้ามการตอบกลับ ผลของการจัดกลุ่มดังกล่าวคือการประมาณค่าพารามิเตอร์ของการตอบสนองซึ่งเป็นความคิดที่ดีถ้าการตอบสนองทั้งหมดสามารถคาดการณ์ได้จากชุดการทำนายเดียวกัน แนวคิดทั่วไปของการมีเพศสัมพันธ์ปัญหาการเรียนรู้หลาย ๆ ที่คาดว่าจะแบ่งปันโครงสร้างบางส่วนเป็นที่รู้จักกันเรียนรู้หลายงาน

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