วิธีการเลือกตัวแปรที่สำคัญอย่างรวดเร็วจากชุดข้อมูลที่มีขนาดใหญ่มาก?


9

ฉันมีชุดข้อมูลที่มีตัวแปรไบนารีประมาณ 2,000 ตัว / 200,000 แถวและฉันพยายามที่จะทำนายตัวแปรไบนารีที่ขึ้นต่อกันเพียงตัวเดียว เป้าหมายหลักของฉันในขั้นตอนนี้ไม่ได้รับความแม่นยำในการทำนาย แต่เพื่อระบุว่าตัวแปรใดเป็นตัวทำนายที่สำคัญ ฉันอยากจะลดจำนวนตัวแปรในตัวแบบสุดท้ายของฉันลงไปประมาณ 100

มีวิธีที่รวดเร็วในการรับตัวแปรที่สำคัญที่สุดหรือไม่? ป่าสุ่มดูเหมือนจะใช้เวลานาน

ฉันไม่ต้องใช้การสังเกตทั้งหมด 200,000 ครั้งดังนั้นการสุ่มตัวอย่างจึงเป็นตัวเลือกบนโต๊ะ


โดย "สำคัญ" แทนที่จะเป็น "ตัวพยากรณ์" ที่ถูกต้องคุณหมายถึงคุณต้องการค้นหาคนที่เหมาะสมที่สุดในการอธิบายผลลัพธ์และช่วยคุณสร้างทฤษฎีหรือไม่? หากเป็นเช่นนั้นตัวแปรอธิบาย 100 รายการจะมีจำนวนมาก - มีขนาดใหญ่มาก การสร้างทฤษฎีและคำอธิบายที่แท้จริง (แทนที่จะเป็นเพียงการคาดการณ์) อาจทำให้คุณต้องลดจำนวน X ลงเหลือ 10 หรือ 15
rolando2

2
@ rolando2 ในบางแอปพลิเคชั่น 100 มีขนาดไม่ใหญ่เลย ตัวอย่างเช่นวรรณกรรมเกี่ยวกับการเข้าถึงจุดบรอดแบนด์ความเร็วสูงถึงตัวแปรประมาณ 150 ตัว (จากการวิเคราะห์หลายร้อยครั้ง) และทั้งหมดนั้นสมเหตุสมผล: พวกมันเกี่ยวข้องกับความสะดวกในด้านวิศวกรรม (ภูมิประเทศ, ประเภทของหิน, สภาพภูมิอากาศ, ฯลฯ ) เพื่อเศรษฐศาสตร์ (SES และอื่น ๆ ), เพื่อประชากร, เรขาคณิตของโครงสร้างพื้นฐานการขนส่งท้องถิ่น, การเมือง (ภาษีและบรรยากาศทางธุรกิจ), ฯลฯ ฉันเชื่อว่าแบบจำลองทางเศรษฐกิจจำนวนมากในทำนองเดียวกันอาจรวมถึงตัวแปรสำคัญหลายร้อยทฤษฎี
whuber

@whuber - ฉันกำลังคิดถึงจุดของคุณ ... คุณยอมรับไหมว่ามันต้องใช้นักวิเคราะห์ที่มีความสามารถพิเศษและมีประสบการณ์เพื่อแยกแยะบทบาทที่เป็นสาเหตุ (แทนที่จะเป็นเพียงการทำนาย) ที่มีตัวแปรมากมาย
rolando2

@rolando แน่นอน ตัวแปร 2000 นั้นทำงานได้มากมาย!
whuber

คำตอบ:


6

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


ขอบคุณ ฉันเพิ่งอ่านกระดาษและดูเหมือนว่าจะเป็นแนวทางที่มั่นคง อย่างไรก็ตามฉันพบปัญหาหน่วยความจำบางอย่างในระบบหน่วยความจำ 64 บิต 4MB ของฉัน
DevX

1
@DevX: หากคุณมีข้อมูลมากเกินไปคุณสามารถลองสุ่มตัวอย่างและเลือกตัวแปรตามตัวอย่างได้หรือไม่?
ซัค

13

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

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

  • Lasso ประสบความสำเร็จในการเลือกตัวแปรโดยใช้ฟังก์ชั่นการลงโทษที่ไม่ราบรื่น (the 1-norm) ซึ่งโดยทั่วไปแล้วจะส่งผลให้ประมาณการพารามิเตอร์โดยที่พารามิเตอร์บางตัวมีค่าเท่ากับ 0 จำนวนพารามิเตอร์ที่ไม่เป็นศูนย์ที่คาดการณ์ไว้และจำนวนพารามิเตอร์ที่ไม่เป็นศูนย์จะถูกย่อลงโดยพารามิเตอร์การปรับแต่ง ประสิทธิภาพของการใช้งานในglmnetขึ้นอยู่กับความจริงที่ว่าสำหรับบทลงโทษที่มีขนาดใหญ่เพียงไม่กี่พารามิเตอร์จะแตกต่างจาก 0
  • การเลือกพารามิเตอร์การปรับแต่งมักกระทำโดยการตรวจสอบความถูกต้องไขว้ แต่ถึงแม้จะไม่มีขั้นตอนการตรวจสอบความถูกต้องข้ามวิธีการอาจให้ลำดับที่ดีของตัวแปรที่เลือกซึ่งจัดทำดัชนีโดยพารามิเตอร์การลงโทษ
  • ข้อเสียสำหรับการเลือกตัวแปรคือเชือกอาจไม่เสถียรในการเลือกตัวแปรโดยเฉพาะถ้ามีความสัมพันธ์กันบ้าง การลงโทษสุทธิที่ยืดหยุ่นมากขึ้นถูกคิดค้นเพื่อปรับปรุงความไม่แน่นอนนี้ แต่ก็ไม่สามารถแก้ปัญหาได้อย่างสมบูรณ์ Adaptive Lassoเป็นแนวคิดที่จะปรับปรุงการเลือกตัวแปรสำหรับ Lasso
  • การเลือกความเสถียรเป็นวิธีการทั่วไปที่แนะนำโดย Meinshausen และBühlmannเพื่อให้เกิดความเสถียรของตัวแปรที่เลือกด้วยวิธีการเช่น lasso มันต้องการจำนวนที่พอดีกับชุดย่อยของชุดข้อมูลและเป็นเช่นนั้นความต้องการการคำนวณที่มากขึ้น
  • วิธีคิดที่สมเหตุสมผลของ Lasso นั้นเป็นวิธีหนึ่งในการสร้างโมเดล "ดี" หนึ่งมิติตั้งแต่แบบตัวแปรเดี่ยวไปจนถึงแบบจำลองที่ซับซ้อนมากขึ้น ในทางตรงกันข้ามตัวกรอง univariate จะสร้างตัวเลือกหรือการสั่งซื้อสำหรับรุ่นตัวแปรเดี่ยวที่ดีเท่านั้น

สำหรับ Python นั้นจะมีการนำไปใช้ในscikit-learnของวิธีการเช่น lasso และ elastic net


ในฐานะที่เป็นความคิดเพิ่มถ้าจำนวนของ skyrockets ทำนายที่อาจเกิดขึ้นเหมือนใน GWAS คุณสามารถทำสิ่งที่ชอบในบทความนี้เพื่อเลือกก่อน: การวิเคราะห์จีโนมสมาคมกว้างโดยเชือกถดถอยโลจิสติลงโทษ
นิค Sabbe

@NickSabbe ขอบคุณสำหรับการอ้างอิงนี้ มันมีประโยชน์มาก ในบริบทของ GWAS และอาจเป็นในบริบทอื่นที่มีตัวทำนายที่สัมพันธ์กันจำนวนมากฉันได้ยินว่าSylvia Richardsonแนะนำการเลือกแบบจำลองแบบเบส์ตามการเปรียบเทียบกับการเลือกความเสถียร การคำนวณ MCMC นั้นเป็นที่ต้องการอย่างมาก
NRH

ฉันคิดว่ามันคุ้มค่าที่จะเน้นความหนักแน่นของ Adaptive lasso มากกว่าเพราะมันง่ายต่อการใช้งาน (เกือบสองสายแทนที่จะเป็นสายเดียวกับglmnetR) อีกทางเลือกหนึ่งคือ Thresholding the Lasso ซึ่งค่อนข้างใช้งานง่าย ดูในส่วนของ 2.9 springer.com/gp/book/9783642201912
Benjamin Christoffersen

2

คุณสามารถทำการทดสอบการเชื่อมโยง / การทดสอบไคสแควร์ของความสัมพันธ์แบบโลจิสติกสำหรับแต่ละตัวแปรและเก็บเฉพาะค่าที่มีค่า p น้อยกว่าค่าบางค่าเช่น. 2


4
เพื่อให้เข้าใจว่าข้อเสนอแนะนี้อาจเล่นได้อย่างไรให้พิจารณากรณีที่มีตัวพยากรณ์สำคัญ 100 ตัว (มีความสัมพันธ์กับตัวแปรตาม) และที่เหลือไม่เกี่ยวข้องกับตัวแปรตามและกันและกัน การรักษาผู้ที่มีค่า p น้อยกว่า 0.2 รับรองว่าคุณจะจบลงด้วยการประมาณ 100 + 0.2 * (2000-100) = 480 ตัวแปรที่ 380 ไม่มีค่า สำหรับชุดข้อมูลขนาดเล็กบางครั้งวิธีนี้ใช้เป็นหน้าจอเริ่มต้นอย่างรวดเร็ว แต่ไม่สามารถพิจารณาได้อย่างจริงจังที่นี่
whuber

จุดดี @whuber คุณจะต้องตั้งค่าระดับอัลฟาของคุณให้ต่ำกว่ามากเพื่อคงไว้ที่ประมาณ 100 แต่คุณอาจพลาดตัวแปรที่อาจส่งผลต่อการปรับตัวของผู้อื่นเท่านั้น อย่างไรก็ตามการเปลี่ยนจาก 2000 เป็น 480 สามารถจัดการได้ง่ายขึ้นในการใช้งานบางอย่างเช่นฟอเรสต์แบบสุ่ม
เกลน

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