มีสติถดถอยแบบขั้นตอน?


14

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

ขั้นตอนการถดถอยแบบขั้นตอนต่อไปนี้สมเหตุสมผลภายใต้เงื่อนไขเหล่านี้:

  1. เมื่อพิจารณาคุณลักษณะที่มีอยู่แล้วในโมเดล (หรือเพียงแค่การสกัดกั้นในการวนซ้ำครั้งแรก) ให้เลือกคุณลักษณะที่สร้างอัตราส่วนความน่าจะเป็นบันทึกที่ใหญ่ที่สุดเมื่อเพิ่มเข้ากับโมเดล ใช้อัตราส่วนการทดสอบไคสแควร์ในการคำนวณค่า P-value เล็กน้อยสำหรับการทดสอบสมมติฐานแต่ละครั้งที่ดำเนินการในการเลือกนี้ ค่า null ที่นี่คือการเพิ่มตัวแปรพิเศษเข้ากับโมเดลไม่มีความสามารถในการทำนายเพิ่มเติม ทางเลือกคือเพิ่มความสามารถในการทำนาย

  2. ปฏิบัติต่อสมมติฐานที่ทดสอบในขั้นตอนที่ 1 ของการวนซ้ำในแต่ละครอบครัวและคำนวณอัตราการค้นพบที่ผิดพลาดสำหรับค่า P-value ที่น้อยที่สุด (สำหรับสถานที่ที่เลือก) โดยใช้บางอย่างเช่น

  3. ไปที่ 1 เว้นแต่ว่าจะมีคุณสมบัติตรงตามเกณฑ์การหยุดบางอย่าง

  4. รายงานอัตราการค้นพบที่ผิดพลาดสำหรับฟีเจอร์แต่ละรายการ แต่ไม่ใช่ค่า P-value สำหรับโมเดลโดยรวม (เนื่องจากจะมีการขยายตัวอย่างมาก) การทดสอบค่า P ที่ถูกต้องแต่ละการทดสอบหลายรายการเหล่านี้แสดงถึงนัยสำคัญทางสถิติของคุณลักษณะนั้นซึ่งได้รับคุณสมบัติทั้งหมดที่เพิ่มไว้ก่อนหน้านี้ในโมเดล

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


3
มีเหตุผลที่จะไม่ไปกับวิธีการถดถอยแบบลงโทษหรือไม่ (lasso, elasticnet และอื่น ๆ )?
Ben Bolker

คำตอบ:


11

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

ภาพประกอบของ Dante Inferno "Abandon hope" แหล่งที่มาของภาพ

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

ฉันไม่ได้ระบุสถานการณ์ของคุณ แต่คุณระบุว่าคุณมี "ตัวอย่างเพียงไม่กี่ 10 วินาที" มาเป็นกุศลและบอกว่าคุณมี 90 คุณบอกว่าคุณมี "คุณสมบัติหลายพัน" ต่อไป ลองจินตนาการว่าคุณมีเพียง 2,000 คน เพื่อความเรียบง่ายสมมติว่าคุณลักษณะทั้งหมดของคุณเป็นแบบไบนารี่ คุณ "เชื่อว่าฉลากคลาสสามารถคาดการณ์ได้อย่างแม่นยำโดยใช้เพียงไม่กี่ฟีเจอร์" สมมติว่าคุณจะมองหาชุดของฟีเจอร์สูงสุดไม่เกิน 9 ฟีเจอร์ สุดท้ายลองจินตนาการว่าความสัมพันธ์นั้นถูกกำหนดไว้แล้วเพื่อที่ความสัมพันธ์ที่แท้จริงจะถูกนำเสนออย่างสมบูรณ์ในข้อมูลของคุณ (เราสามารถเปลี่ยนตัวเลขและสมมติฐานเหล่านี้ แต่นั่นควรทำให้ปัญหาแย่ลง) ตอนนี้ คุณจะสามารถกู้คืนความสัมพันธ์นั้นภายใต้เงื่อนไข (ใจกว้าง) เหล่านี้ได้ดีเพียงใด? นั่นคือชุดที่ถูกต้องจะเป็นชุดเดียวที่ให้ความแม่นยำสมบูรณ์แบบบ่อยเพียงใด หรือกล่าวอีกนัยหนึ่งว่าจะมีฟีเจอร์เก้าชุดที่เหมาะสมโดยบังเอิญเพียงลำพัง?

คณิตศาสตร์และการจำลองอย่างง่าย (มากไป) ควรให้เบาะแสบางอย่างกับคำถามนี้ ขั้นแรกด้วยตัวแปร 9 ตัวซึ่งแต่ละตัวอาจเป็น 0 หรือ 1 จำนวนรูปแบบที่สังเกตสามารถแสดงได้คือแต่คุณจะมีเพียง 90 ข้อ ดังนั้นจึงเป็นไปได้โดยสิ้นเชิงว่าสำหรับชุดของตัวแปรไบนารี 9 ตัวการสังเกตทุกครั้งจะมีค่าตัวทำนายที่แตกต่างกัน - ไม่มีการจำลองซ้ำ หากไม่มีการทำซ้ำด้วยค่าตัวทำนายเดียวกันซึ่งบางคนมี y = 0 และบาง y = 1 คุณจะมีการแยกอย่างสมบูรณ์และการทำนายที่สมบูรณ์แบบของการสังเกตทุกครั้งจะเป็นไปได้ 29=512

ด้านล่างฉันมีแบบจำลอง (เขียนเป็น R) เพื่อดูว่าคุณอาจไม่มีรูปแบบของค่า x ที่มีทั้ง 0s และ 1s บ่อยแค่ไหน วิธีการทำงานคือฉันได้รับชุดของตัวเลขจาก 1 ถึง 512 ซึ่งแสดงถึงรูปแบบที่เป็นไปได้และดูว่ารูปแบบใด ๆ ใน 45 ตัวแรก (นั่นอาจเป็น 0) ตรงกับรูปแบบใด ๆ ในช่วงที่สอง 45 (นั่นอาจเป็น 1 วินาที) นี่ถือว่าคุณมีข้อมูลการตอบสนองที่สมดุลอย่างสมบูรณ์ซึ่งช่วยให้คุณสามารถป้องกันปัญหานี้ได้ดีที่สุด โปรดทราบว่าการที่มีเวกเตอร์ x ที่ถูกจำลองที่มีค่า y ต่างกันนั้นไม่ได้ช่วยให้คุณหลุดพ้นจากป่ามันหมายความว่าคุณจะไม่สามารถทำนายการสังเกตการณ์ทุกครั้งในชุดข้อมูลของคุณได้อย่างสมบูรณ์แบบซึ่งเป็นมาตรฐานที่เข้มงวดมากฉัน ใช้งานที่นี่

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

การจำลองแนะนำว่าคุณจะมีปัญหานี้โดยประมาณ 1.8% ของชุดตัวแปร x 9 ตัว ทีนี้มี 9 เซตอยู่กี่ชุด? อย่างเคร่งครัดนั่นก็คือ (เนื่องจากเราได้ระบุไว้ว่าตัวแปรสาเหตุที่แท้จริง 9 ตัวกำหนดอยู่ในชุดของคุณ) อย่างไรก็ตามชุดเหล่านั้นจำนวนมากจะทับซ้อนกัน จะมีชุดที่ไม่ทับซ้อนกันภายในพาร์ทิชันที่ระบุของตัวแปรของคุณ (กับพาร์ทิชันดังกล่าวเป็นไปได้มาก) ดังนั้นภายในพาร์ติชั่นที่กำหนดเราอาจคาดหวังว่าจะมีคูณชุดของตัวแปร x 9 ตัวที่จะทำนายการสังเกตทุกอย่างในชุดข้อมูลของคุณได้อย่างสมบูรณ์แบบ 1991 / 9 221 221 × 0.018 41991 choose 9=1.3×10241991/9221221×0.0184

โปรดทราบว่าผลลัพธ์เหล่านี้ใช้สำหรับกรณีที่คุณมีชุดข้อมูลที่ค่อนข้างใหญ่กว่า (ภายใน "หลักสิบ") จำนวนตัวแปรที่ค่อนข้างน้อยกว่า (ภายใน "หลักพัน") จะค้นหาเฉพาะกรณีที่สามารถคาดการณ์การสังเกตการณ์ทุกครั้งได้อย่างสมบูรณ์แบบ ( จะมีฉากอีกหลายฉากที่เกือบจะสมบูรณ์แบบ) ฯลฯ กรณีที่แท้จริงของคุณไม่น่าจะเป็นไปได้ว่า ยิ่งกว่านั้นเรายังระบุว่าความสัมพันธ์นั้นถูกกำหนดอย่างสมบูรณ์แบบ จะเกิดอะไรขึ้นถ้ามีสัญญาณรบกวนในความสัมพันธ์? ในกรณีนั้นคุณจะยังคงมีชุด ~ 4 (null) ที่ทำนายข้อมูลของคุณได้อย่างสมบูรณ์แบบแต่ชุดที่ถูกต้องอาจไม่ได้อยู่ในกลุ่มเดียวกัน

Tl; drจุดพื้นฐานที่นี่คือชุดตัวแปรของคุณมีขนาดใหญ่เกินไป / สูงมากและปริมาณข้อมูลของคุณน้อยเกินไปสำหรับทุกสิ่งที่เป็นไปได้ ถ้ามันเป็นความจริงที่ว่าคุณมีตัวอย่าง "สิบ" ตัวแปร "หลายพัน" และไม่มีความคิดทางโลกว่าตัวแปรใดที่เหมาะสม ไปทำอย่างอื่นกับเวลาของคุณ


1
ตอนนี้เป็นคำนำดั้งเดิมของคำตอบฉันรักมัน
Łukasz Grad

1
การละทิ้งโครงการมักเป็นตัวเลือกที่สมเหตุสมผล ในขณะที่สัดส่วนของคดีเล็ก ๆ น้อย ๆ ฉันมีลูกค้าที่แนะนำมากกว่าหนึ่งครั้งว่าโครงการที่พวกเขามีอยู่จะไม่สามารถทำงานได้
gung - Reinstate Monica

1

สำหรับจุดประสงค์ในการตอบของฉันฉันจะแสดงตัวแปรไบนารีของผลประโยชน์เป็นและตัวทำนายX i j  ; , .Yi ;(i=1,,n)และสมมติว่า Yมีค่าของ Y = 0และ Y = 1 นอกจากนี้ยังจะสะดวกในการกำหนด γ mเพื่อระบุรุ่น m  ; ( m = 1Xij ;(j=1,,p)YY=0Y=1γmเช่นนั้น γ T m X i jเท่ากับ X i jหากตัวแปรjthอยู่ในโมเดลmthและ 0 เป็นอย่างอื่นm ;(m=1,..,M)γmTXijXij0

ฉันจะทำการดัดแปลงวิธีการของคุณและให้เหตุผล คุณกำลังใช้รูปแบบการจําแนกซึ่งหมายความว่าคุณต้องการที่จะทำนายค่าของตัวแปรเด็ดขาดในอนาคต - ดังนั้นคุณควรจะกำหนดกฎการทำนาย (รับชุดใหม่ของการพยากรณ์วิธีการที่คุณจะคาดการณ์ว่าY = 1หรือY = 0 )XjY=1Y=0

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

ตอนนี้คุณต้องตัดสินใจ

  1. สิ่งที่คุณต้องการให้ "ดีที่สุด" หมายถึงทางคณิตศาสตร์
  2. วิธีแบ่งข้อมูลของคุณออกเป็นส่วน "กระชับ" และ "ทำนาย"

ฉันจะให้คำแนะนำสำหรับแต่ละ:

  1. Y=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

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

100F

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

Y

ข้อสังเกตสองประการสุดท้าย:

  1. คุณสามารถใช้เครื่องจักรนี้เพื่อตัดสินใจว่า step-wise ดีกว่าการเลือกไปข้างหน้า (เพิ่มตัวแปรเท่านั้น) หรือการเลือกย้อนหลัง (เริ่มจากแบบจำลองเต็มรูปแบบและลบเฉพาะตัวแปร)
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ

ขอบคุณสำหรับคำแนะนำ. แม้ว่าจะมีปัญหาสามประการด้วยกัน: 1. ฉันสนใจเกี่ยวกับการวัดปริมาณความไม่แน่นอนในการทำนายของฉันและการสนับสนุนของแต่ละตัวแปรไม่ใช่แค่ความแม่นยำในการทำนายแบบไบนารี 2. เนื่องจากธรรมชาติของชุดข้อมูลของฉันมันเป็นวิธีการคำนวณที่เข้มข้นเกินไป 3. จากความรู้เกี่ยวกับโดเมนฉันเชื่อว่าปัญหา optima ท้องถิ่นไม่สำคัญ
dsimcha

100nFเป็นตัวชี้วัดความไม่แน่นอนของการทำนายของคุณนั่นคือความน่าจะเป็นที่คุณจะจำแนกอย่างถูกต้องเมื่อได้รับข้อมูลการฝึกอบรมและแบบจำลองที่คุณเลือก
ความน่าจะเป็นที่เป็นไปได้

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

FFFchosenF(j)ตัวแปรเกี่ยวกับความแม่นยำในการทำนายเนื่องจากแต่ละตัวแปร)
ความน่าจะเป็นทาง

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