การวิเคราะห์ส่วนที่เหลือถดถอยโลจิสติก


12

คำถามนี้เป็นคำถามทั่วไปและยาวเหยียด แต่โปรดอดทนกับฉัน

ในแอปพลิเคชันของฉันฉันมีชุดข้อมูลจำนวนมากแต่ละชุดประกอบด้วย ~ 20,000 ดาต้าพอยน์พร้อมด้วยคุณลักษณะ ~ 50 และตัวแปรไบนารีที่ขึ้นต่อกันเพียงตัวเดียว ฉันพยายามที่จะสร้างแบบจำลองชุดข้อมูลโดยใช้การถดถอยโลจิสติกปกติ (R package glmnet )

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

นี่คือตัวอย่างพล็อตที่เหลือ:

ในพล็อตข้างต้นสถานที่มีช่วง [0,1] (มีความเข้มข้นมากที่ 1) อย่างที่คุณเห็นเมื่อค่าคุณลักษณะต่ำโมเดลจะมีอคติต่อการประเมินความเป็นไปได้ของ 1-output ตัวอย่างเช่นในที่ฝากข้อมูลด้านซ้ายสุดโมเดลจะประมาณค่าความน่าจะเป็นประมาณ 9%

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

xx

หรือ

xfa(x)={a if x<a x else

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

ตามคำถามทั่วไปนี่เป็นแนวทางที่ถูกต้องใช่ไหม Google ค้นหา "การวิเคราะห์ส่วนที่เหลือถดถอยโลจิสติก" ไม่ได้ผลลัพธ์จำนวนมากพร้อมคำแนะนำการปฏิบัติที่ดี ดูเหมือนว่าพวกเขาจะได้รับการแก้ไขเมื่อตอบคำถามว่า "รุ่นนี้เหมาะสมหรือไม่" และเสนอการทดสอบต่าง ๆ เช่น Hosmer-Lemeshow เพื่อตอบคำถาม แต่ฉันไม่สนใจว่าแบบจำลองของฉันดีหรือไม่ฉันต้องการทราบวิธีทำให้ดีขึ้น!

คำตอบ:


4

คุณไม่สามารถประเมินอคติในวิธีการถดถอยโลจิสติกได้ การถดถอยของ Logisitic นั้นคาดว่าจะไม่เอนเอียงกับอัตราต่อรองของล็อกหรือคะแนน logit, log (p / (1-p)) สัดส่วนจะเบ้ดังนั้นจึงดูลำเอียง คุณต้องพล็อตเรื่องที่เหลือในแง่ของอัตราต่อรอง


ฉันจะรวมส่วนที่เหลือของล็อกคี่ภายในถังได้อย่างไร ค่าเฉลี่ยเลขคณิต? นี่เป็นสิ่งที่ทำให้ฉันสับสนเล็กน้อย โดยสัญชาตญาณหากการวิเคราะห์ส่วนที่เหลือไม่แสดงอคติฉันคาดหวังว่าเมื่อแบบจำลองทำนาย Pr [y = 1] <0.2 ดังนั้น y ควรเท่ากับ 1 ที่มีความน่าจะเป็นน้อยกว่า 0.2 แต่คำตอบของคุณดูเหมือนว่าจะไม่เป็นเช่นนั้น ฉันเข้าใจถูกต้องหรือไม่
dshin

นี่อาจเป็นการโพสต์ที่ดีกว่าเป็นความคิดเห็น
ความน่าจะเป็นทางการ

ไม่ใช่เดวิดมันไม่ได้หมายความถึงสิ่งอื่นนอกจากความน่าจะเป็น 0.2 บางทีการแก้ไขของฉันอาจทำให้ชัดเจนขึ้น
John

ขออภัยฉันยังสับสนอยู่เล็กน้อย ความเข้าใจที่หยั่งรู้ของฉันเกี่ยวกับแบบจำลองที่เป็นกลางคือถ้าโมเดลทำนาย p = 0.2 สำหรับดาต้าพอยน์ทุกอันจำนวนมากดังนั้น 20% ของดาต้าพอยน์เหล่านั้นควรมี y = 1 ความเข้าใจนี้ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นดูเหมือนว่าวิธีการวางแผนของฉันควรแสดงอคติอย่างถูกต้อง ถ้าไม่ใช่ ... ถ้าอย่างนั้นฉันก็ไม่มีความสุขกับแนวคิดเรื่อง "อคติ" นี้! ถ้าแบบจำลองที่ไม่เอนเอียงซึ่งมีค่าเท่ากับ 0.2 ไม่ได้บอกอะไรฉันเกี่ยวกับความน่าจะเป็นที่ y = 1 ความเป็นกลางที่ดีคืออะไร
dshin

ใช่ 20% ควรมี y = 1 แต่มันจะไม่ตายเลยมันจะถูกปิดโดยจำนวนเงิน ในพื้นที่ความน่าจะเป็นซึ่งคุณคิดว่าทิศทางจะถูกปิดโดยและเท่าใด? ถ้ามันไม่เอนเอียงมันจะตกเท่ากันใน. 2: 1 หรือ 0: .2 อย่างไรก็ตามในขณะที่คุณสามารถดูขนาดของช่องว่างเหล่านั้นพวกเขาจะมีแนวโน้มที่จะอยู่ห่างออกไปในพื้นที่ขนาดใหญ่เพียงเพราะพวกเขาสามารถ ในพื้นที่ logit ระยะห่างควรเท่ากับ + หรือ -
John

2

ไม่น่าจะมีซอฟต์แวร์ทั่วไปสำหรับการทำเช่นนี้ เป็นไปได้มากที่สุดเนื่องจากไม่มีทฤษฎีทั่วไปสำหรับการแก้ไขปัญหาในการถดถอย ด้วยเหตุนี้นี่เป็นประเภทของ "สิ่งที่ฉันจะทำ" มากกว่าคำตอบในเชิงเหตุผล

พล็อตที่คุณสร้างนั้นเป็นแบบทดสอบ HL ที่มองเห็นได้ด้วย 100 ถังขยะ แต่ใช้ตัวทำนายเดียวแทนความน่าจะเป็นที่คาดการณ์ไว้ในการทำ binning นี่หมายถึงโพรซีเดอร์ของคุณมีแนวโน้มที่จะสืบทอดคุณสมบัติบางอย่างของการทดสอบ HL

ขั้นตอนของคุณฟังดูสมเหตุสมผลแม้ว่าคุณควรตระหนักถึง "overfitting" เกณฑ์ของคุณ เกณฑ์ของคุณก็มีประโยชน์น้อยกว่าการวินิจฉัยเนื่องจากมันได้กลายเป็นส่วนหนึ่งของกระบวนการประมาณ นอกจากนี้เมื่อใดก็ตามที่คุณทำอะไรโดยสัญชาตญาณคุณควรจดบันทึกกระบวนการตัดสินใจในรายละเอียดมากที่สุดเท่าที่จะทำได้ นี่เป็นเพราะคุณอาจค้นพบเมล็ดพันธุ์ของกระบวนการทั่วไปหรือทฤษฎีซึ่งเมื่อพัฒนาแล้วนำไปสู่กระบวนการที่ดีขึ้น (อัตโนมัติมากขึ้นและเหมาะสมที่สุดเมื่อเทียบกับทฤษฎีบางอย่าง)

ฉันคิดว่าวิธีหนึ่งที่จะไปคือการลดจำนวนแปลงที่คุณต้องตรวจสอบก่อน วิธีหนึ่งในการทำเช่นนี้คือการปรับให้พอดีกับตัวแปรแต่ละตัวเป็นลูกบาศก์อิสระแล้วตรวจสอบพล็อตที่ไม่มีการประมาณเชิงเส้นตรง เมื่อกำหนดจำนวนของจุดข้อมูลสิ่งนี้ก็เป็นวิธีแก้ไขอัตโนมัติที่ง่ายสำหรับการไม่เป็นเชิงเส้น สิ่งนี้จะขยายโมเดลของคุณจาก 50 เป็น 200 + 50k โดยที่ k คือจำนวนนอต คุณอาจคิดว่าสิ่งนี้เป็นการใช้ "การขยายอนุกรมเทย์เลอร์เชิงสถิติ" ของการแปลง "ที่แท้จริง"

หากการวินิจฉัยของคุณยังคงดูไม่ดีหลังจากนี้ฉันจะลองเพิ่มคำที่ตอบโต้กัน

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


ขอบคุณสำหรับคำตอบนี้ ฉันจะดูความคิดลูกบาศก์อิสระ ฉันใช้วิธีนี้ "ดูที่แปลงและปรับคุณลักษณะ" ในการตั้งค่าการถดถอยเชิงเส้นซึ่งดูเหมือนชัดเจนมากขึ้นว่าจะบรรลุความเหมาะสมได้อย่างไร ตัวอย่างเช่นหากคุณเห็นไม้ฮอกกี้ก็เห็นได้ชัดว่าการใช้การแก้ไข f_a (x) จะทำให้เหมาะสมยิ่งขึ้น บ่อยครั้งที่ความรู้จากโดเมนปัญหาเกิดขึ้นพร้อมกับการตัดสินใจครั้งนี้: หากคุณทำนายความสุขจากรายได้ตัวอย่างเช่นมันจะสมเหตุสมผลที่จะเพิ่มรายได้เว้นแต่ว่าคุณคิดว่าเศรษฐีมีความสุขมากกว่าเศรษฐี 1000 เท่า
dshin

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