สิ่งที่จะสรุปได้จากพล็อต lasso (glmnet)


19

ต่อไปนี้คือโครงร่างของ glmnet ที่มีค่าเริ่มต้นอัลฟา (1 ดังนั้น lasso) โดยใช้mtcarsชุดข้อมูลใน R พร้อมกับmpgDV และอื่น ๆ เป็นตัวแปรตัวทำนาย

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

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

สิ่งที่เราสามารถสรุปได้จากพล็อตนี้เกี่ยวกับตัวแปรที่แตกต่างกันโดยเฉพาะอย่างยิ่งam, cylและwt(สีแดง, สีดำและสีแสงเส้นสีน้ำเงิน)? เราจะวลีผลลัพธ์ในรายงานที่จะเผยแพร่อย่างไร

ฉันคิดถึงสิ่งต่อไปนี้:

  1. wtmpgเป็นปัจจัยบ่งชี้ที่สำคัญที่สุดของ mpgมันเป็นในเชิงลบที่มีผลต่อ

  2. cylmpgเป็นปัจจัยบ่งชี้เชิงลบที่อ่อนแอของ

  3. ammpgอาจจะเป็นปัจจัยบ่งชี้ในเชิงบวกของ

  4. ตัวแปรอื่น ๆ mpgที่มีการพยากรณ์ไม่ได้ที่แข็งแกร่งของ

ขอบคุณสำหรับความคิดของคุณเกี่ยวกับเรื่องนี้

(หมายเหตุ: cylเป็นเส้นสีดำซึ่งไม่ถึง 0 จนกระทั่งอยู่ใกล้มาก)

แก้ไข: ต่อไปนี้คือพล็อต (mod, xvar = 'lambda') ซึ่งแสดงแกน x ในลำดับที่กลับด้านบนของพล็อต:

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

(ป.ล. : หากคุณพบว่าคำถามนี้น่าสนใจ / สำคัญโปรดโหวตขึ้น;)


ดูเหมือนว่าคุณลืมเครื่องหมายจุลภาคก่อนใน-1 glmnet(as.matrix(mtcars[-1]), mtcars[,1])
Richard Hardy

หากไม่ได้รับเครื่องหมายจุลภาค R ถือว่าตัวเลขเป็นหมายเลขคอลัมน์ดังนั้นจึงใช้งานได้
rnso

ดีฉันไม่ได้ตอนนี้ก่อน
Richard Hardy

2
@RichardHardy ระวังให้ดี พฤติกรรมนี้แตกต่างกันสำหรับ data frames และ matrices กรอบข้อมูลคือรายการและแต่ละคอลัมน์เป็นองค์ประกอบของรายการนั้นดังนั้นmy_data_frame[1]ส่งคืนกรอบข้อมูลด้วยหนึ่งคอลัมน์ในขณะที่my_data_frame[[1]]และmy_data_frame[, 1]ทั้งคู่ส่งคืนเวกเตอร์ที่ไม่ได้ "อยู่" โดยกรอบข้อมูล เมทริกซ์ แต่เป็นจริงพาหะเพียงแบนที่มีคุณลักษณะพิเศษที่ช่วยให้ R เพื่อเข้าถึงพวกเขาเช่นตารางดังนั้นmy_matrix[1], my_matrix[1, 1]และmy_matrix[[1]]ทั้งหมดจะกลับมาเป็นคนแรกองค์ประกอบmy_matrixของ my_matrix[, 1] ส่งคืนคอลัมน์แรก
shadowtalker

2
ฉันเพิ่งพูดถึงว่าฟังก์ชั่นplot_glmnetในแพคเกจplotmoให้แปลงค่าสัมประสิทธิ์ที่ดีขึ้นเล็กน้อยเพราะมันจะดูแลฉลากมากเกินไปและรายละเอียดอื่น ๆ ตัวอย่างอาจพบได้ในบทที่ 6 ในบทความสั้น
Stephen Milborrow

คำตอบ:


39

ฉันคิดว่าเมื่อพยายามตีความค่าสัมประสิทธิ์พล็อตเหล่านี้โดย ,หรือมันช่วยได้มากในการรู้ว่าพวกเขาดูอย่างไรในบางกรณี โดยเฉพาะอย่างยิ่งพวกเขามองอย่างไรเมื่อเมทริกซ์การออกแบบโมเดลของคุณไม่มีความสัมพันธ์และเมื่อมีความสัมพันธ์ในการออกแบบของคุณλเข้าสู่ระบบ(λ)Σผม|βผม|

ด้วยเหตุนี้ฉันจึงสร้างข้อมูลที่สัมพันธ์และไม่เกี่ยวข้องเพื่อแสดง:

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

ข้อมูลx_uncorrมีคอลัมน์ที่ไม่เกี่ยวข้อง

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

ในขณะที่x_corrมีความสัมพันธ์ที่กำหนดไว้ล่วงหน้าระหว่างคอลัมน์

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

ทีนี้มาดูที่แผนการของ lasso สำหรับทั้งสองกรณีนี้กัน ก่อนอื่นข้อมูลที่ไม่เกี่ยวข้อง

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

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

คุณสมบัติคู่ที่โดดเด่น

  • ตัวทำนายจะเข้าสู่โมเดลตามลำดับความสำคัญของสัมประสิทธิ์การถดถอยเชิงเส้นที่แท้จริง
  • เส้นทางสัมประสิทธิ์ของแต่ละคุณลักษณะคือเส้น (ที่เกี่ยวกับ ) เป็นเส้นตรงแบบชิ้นเดียวและจะเปลี่ยนเฉพาะเมื่อตัวทำนายใหม่เข้าสู่โมเดล สิ่งนี้เป็นจริงสำหรับพล็อตที่เกี่ยวข้องกับและเป็นเหตุผลที่ดีที่จะชอบผู้อื่นมากกว่าΣผม|βผม|Σผม|βผม|
  • เมื่อตัวทำนายใหม่เข้าสู่แบบจำลองมันจะส่งผลต่อความชันของเส้นทางสัมประสิทธิ์ของตัวทำนายทั้งหมดที่อยู่ในแบบจำลองในลักษณะที่กำหนดขึ้น ตัวอย่างเช่นเมื่อตัวทำนายที่สองเข้าสู่โมเดลความชันของเส้นทางสัมประสิทธิ์แรกจะถูกตัดครึ่ง เมื่อตัวทำนายที่สามเข้าสู่โมเดลความชันของเส้นทางสัมประสิทธิ์คือหนึ่งในสามของค่าดั้งเดิม

ทั้งหมดนี้เป็นข้อเท็จจริงทั่วไปที่นำไปใช้กับการถดถอยแบบ lasso กับข้อมูลที่ไม่เกี่ยวข้องและพวกเขาทั้งหมดสามารถพิสูจน์ได้ด้วยมือ (ออกกำลังกายดี!) หรือพบได้ในวรรณกรรม

ตอนนี้ให้ทำข้อมูลที่มีความสัมพันธ์กัน

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

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

คุณสามารถอ่านบางสิ่งจากพล็อตนี้โดยเปรียบเทียบกับกรณีที่ไม่เกี่ยวข้อง

  • เส้นทางตัวทำนายที่หนึ่งและสองมีโครงสร้างเดียวกันกับกรณีที่ไม่เกี่ยวข้องจนกระทั่งตัวทำนายที่สามเข้าสู่แบบจำลองแม้ว่าจะมีความสัมพันธ์กันก็ตาม นี่เป็นคุณสมบัติพิเศษของกรณีทำนายสองกรณีซึ่งฉันสามารถอธิบายได้ในอีกคำตอบหากมีความสนใจมันจะพาฉันไปไกลกว่าการอภิปรายในปัจจุบันเล็กน้อย
  • ในอีกทางหนึ่งเมื่อผู้ทำนายที่สามเข้าสู่แบบจำลองเราจะเห็นการเบี่ยงเบนจากภาพที่เราคาดหวังว่าคุณสมบัติทั้งสามนั้นไม่ได้มีความสัมพันธ์กัน ค่าสัมประสิทธิ์ของคุณสมบัติที่สองแบนออกมาและคุณสมบัติที่สามเพิ่มขึ้นเป็นค่าสุดท้าย สังเกตุความลาดเอียงของฟีเจอร์แรกไม่ได้รับผลกระทบซึ่งเราจะไม่คาดหวังหากไม่มีความสัมพันธ์กัน! โดยพื้นฐานแล้วทรัพยากรที่ใช้ไปกับค่าสัมประสิทธิ์ภายในกลุ่มที่สามหรือใหญ่กว่านั้นอาจ "ซื้อขายรอบ" จนกว่าจะมีการกำหนดน้อยที่สุดพบว่าΣ|βผม|

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

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

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

  • อย่างที่คุณพูดผู้wtทำนายนั้นสำคัญมาก มันเข้าสู่โมเดลก่อนและมีการสืบเชื้อสายที่ช้าและมั่นคงสำหรับค่าสุดท้าย มันมีความสัมพันธ์สองสามอย่างที่ทำให้การขับขี่เป็นหลุมเป็นบ่อเล็กน้อยamโดยเฉพาะดูเหมือนว่าจะมีผลอย่างมากเมื่อเข้าสู่
  • amก็มีความสำคัญเช่นกัน มันมาในภายหลังและมีความสัมพันธ์กับwtมันส่งผลกระทบต่อความลาดชันของwtในทางที่รุนแรง มันมีความสัมพันธ์กับcarbและqsecเพราะเราไม่เห็นการชะลอตัวของความลาดชันที่คาดการณ์ได้เมื่อสิ่งเหล่านั้นเข้ามา หลังจากที่ตัวแปรทั้งสี่นี้เข้ามาเราจะเห็นรูปแบบที่ไม่สัมพันธ์กันอย่างดีดังนั้นจึงดูเหมือนว่าจะไม่เกี่ยวข้องกับตัวทำนายทั้งหมดในตอนท้าย
  • มีบางอย่างเข้ามาที่ประมาณ 2.25 บนแกน x แต่เส้นทางของมันนั้นมองไม่เห็นคุณสามารถตรวจจับได้โดยส่งผลกระทบต่อพารามิเตอร์cylและwt
  • cylค่อนข้าง facinating มันเข้าที่สองจึงเป็นสิ่งสำคัญสำหรับรุ่นเล็ก หลังจากตัวแปรอื่น ๆ และโดยเฉพาะอย่างยิ่งการamป้อนเข้าก็ไม่สำคัญอีกต่อไปและแนวโน้มของมันกลับเป็นไปได้ในที่สุดก็ถูกกำจัดออกไป ดูเหมือนว่าcylจะสามารถจับเอฟเฟ็กต์ของตัวแปรทั้งหมดที่เข้ามาในตอนท้ายของกระบวนการได้อย่างสมบูรณ์ ไม่ว่าจะเหมาะสมกว่าที่จะใช้cylหรือกลุ่มของตัวแปรเสริมขึ้นอยู่กับการแลกเปลี่ยนอคติ การมีกลุ่มในแบบจำลองขั้นสุดท้ายของคุณจะเพิ่มความแปรปรวนอย่างมาก แต่อาจเป็นกรณีที่ความเอนเอียงที่ต่ำกว่าทำขึ้นได้!

เป็นการแนะนำเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีที่ฉันได้เรียนรู้การอ่านข้อมูลจากแปลงเหล่านี้ ฉันคิดว่าพวกเขาสนุกมาก!

ขอบคุณสำหรับการวิเคราะห์ที่ยอดเยี่ยม หากต้องการรายงานด้วยคำง่ายๆคุณจะบอกว่า wt, am และ cyl เป็น 3 ตัวทำนายที่สำคัญที่สุดของ mpg นอกจากนี้หากคุณต้องการสร้างแบบจำลองสำหรับการทำนายคุณจะรวมรูปแบบใดตามตัวเลขนี้: wt, am และ cyl? หรือชุดค่าผสมอื่น ๆ นอกจากนี้คุณดูเหมือนจะไม่ต้องการแลมบ์ดาที่ดีที่สุดสำหรับการวิเคราะห์ มันไม่สำคัญเหมือนการถดถอยแบบสันหรือไม่?

ฉันว่ากรณีwtและamมีความชัดเจนพวกเขามีความสำคัญ cylมีความละเอียดอ่อนกว่ามากมันมีความสำคัญในรูปแบบขนาดเล็ก แต่ไม่เกี่ยวข้องเลยในรูปแบบขนาดใหญ่

ฉันไม่สามารถตัดสินใจได้ว่าจะรวมสิ่งใดตามตัวเลขเท่านั้นซึ่งต้องตอบบริบทของสิ่งที่คุณกำลังทำอยู่จริงๆ คุณอาจจะบอกว่าถ้าคุณต้องการรูปแบบสามทำนายแล้วwt, amและcylเป็นทางเลือกที่ดีที่พวกเขาเป็นที่เกี่ยวข้องในโครงการใหญ่ของสิ่งและควรจะจบลงด้วยการมีผลขนาดที่เหมาะสมในรูปแบบขนาดเล็ก นี่เป็นการคาดการณ์ล่วงหน้าว่าคุณมีเหตุผลภายนอกที่จะต้องการตัวทำนายแบบสามตัวเล็ก ๆ

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

λ

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


ขอบคุณสำหรับการวิเคราะห์ที่ยอดเยี่ยม หากต้องการรายงานด้วยคำง่ายๆคุณจะบอกว่า wt, am และ cyl เป็น 3 ตัวทำนายที่สำคัญที่สุดของ mpg นอกจากนี้หากคุณต้องการสร้างแบบจำลองสำหรับการทำนายคุณจะรวมรูปแบบใดตามตัวเลขนี้: wt, am และ cyl? หรือชุดค่าผสมอื่น ๆ นอกจากนี้คุณดูเหมือนจะไม่ต้องการแลมบ์ดาที่ดีที่สุดสำหรับการวิเคราะห์ มันไม่สำคัญเหมือนการถดถอยแบบสันหรือไม่?
rnso

@rnso ฉันต่อท้ายคำตอบของฉัน
Matthew Drury

บางที 'มรดก' ควรจะเป็น 'ความประหยัด'?
Hatshepsut

@ Matthew Drury ฉันมีบางสิ่งที่ฉันไม่แน่ใจเกี่ยวกับมันฉันจะขอบคุณสำหรับคำชี้แจงของคุณ # คุณเขียน "เช่นเมื่อตัวทำนายที่สองเข้ามา" ฉันจะรู้ได้อย่างไรจากพล็อตตัวทำนายที่สองหรือตัวทำนาย / สาม . ## เมื่อใดที่ฉันสามารถบอกได้ว่าตัวทำนายนี้มีความสำคัญหรือไม่ ในที่สุดฉันจะเลือกรุ่นที่เหมาะสมที่สุดได้อย่างไร นอกจากนี้ยังมีคำอธิบาย / ฉลากกำกับโดยอัตโนมัติ (ฉันได้ใช้ตัวอย่างนี้ใน R)
jeza

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