ข้ามไปยังเนื้อหาหลัก

สมมติฐานโลจิสติกรีเกรสชัน: สิ่งที่ต้องตรวจสอบก่อนทำโมเดล

แนวทางปฏิบัติจริงเกี่ยวกับสมมติฐานของโลจิสติกรีเกรสชัน การวินิจฉัยที่จับการละเมิดใน Python และ R และทางเลือกเมื่อสมมติฐานใช้ไม่ได้
อัปเดตแล้ว 15 มิ.ย. 2569  · 15 นาที อ่าน

หลังจากฝึกโมเดลโลจิสติกรีเกรสชันแล้ว จะมั่นใจได้อย่างไรว่าค่าสัมประสิทธิ์ที่ได้เชื่อถือได้?

โลจิสติกรีเกรสชันขึ้นชื่อเรื่องความเรียบง่าย ด้วย scikit-learn เพียงเรียก .fit() อ่านอัตราส่วนออดส์ แล้วก็จบแค่นั้น แต่สิ่งที่ผู้เริ่มต้นส่วนใหญ่ไม่รู้คือ โมเดลมีสมมติฐานของตัวเอง และเมื่อไม่ปฏิบัติตาม ค่าสัมประสิทธิ์จะทำให้เข้าใจผิด และการพยากรณ์ก็จะเพี้ยนในแบบที่ตัวชี้วัดไหน ๆ ก็บอกคุณไม่ได้

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

ในบทความนี้ ฉันจะพาคุณไล่ดูทุกสมมติฐานที่โลจิสติกรีเกรสชันตั้งไว้ วิธีตรวจสอบแต่ละข้อใน Python และ R จะเกิดอะไรขึ้นเมื่อถูกละเมิด และควรใช้ทางเลือกใดเมื่อไม่สามารถปฏิบัติตามสมมติฐานได้

หากยังใหม่กับวิทยาการข้อมูลและการเรียนรู้ของเครื่อง แนะนำอ่านบล็อกเกี่ยวกับ Simple Linear Regression เพื่อทำความเข้าใจสมมติฐานและการวินิจฉัยของมัน

โลจิสติกรีเกรสชันคืออะไร?

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

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

ใต้ฉาก โมเดลจะฟิตผลรวมเชิงเส้นของตัวทำนาย แล้วส่งผลลัพธ์ผ่านฟังก์ชันลอจิสติก ผลลัพธ์คือความน่าจะเป็น และค่าสัมประสิทธิ์บอกว่าตัวทำนายแต่ละตัวเลื่อนค่า log-odds อย่างไร

ควรสังเกตว่าโลจิสติกรีเกรสชันต่างจากเชิงเส้นรีเกรสชัน ตัวแรกมีสมมติฐานคุ้นเคยอย่างความเป็นปกติของเศษเหลือ (residuals) ความแปรปรวนคงที่ ความเป็นเชิงเส้นระหว่างตัวทำนายและเป้าหมาย โลจิสติกรีเกรสชันไม่ตั้งสมมติฐานเหล่านั้น มันมีรายการของตัวเอง ซึ่งแตกต่างพอที่การใช้สมมติฐานของเชิงเส้นรีเกรสชันจะทำให้ผลลัพธ์หลงทาง

อ่านรายละเอียดเพิ่มเติมเกี่ยวกับโลจิสติกรีเกรสชันได้จากบล็อกที่สาธิตการใช้งานใน Python

ทำไมสมมติฐานของโลจิสติกรีเกรสชันจึงสำคัญ

สมมติฐานสำคัญเพราะเชื่อมโยงโดยตรงกับสิ่งที่ทำกับโมเดล

หากเคารพสมมติฐาน ค่าสัมประสิทธิ์ก็จะหมายความตามที่คิด อัตราส่วนออดส์ที่อ่านได้ถูกต้อง และความน่าจะเป็นของโมเดลสอดคล้องกับผลลัพธ์จริง เมื่อไม่เคารพสมมติฐาน ทั้งหมดนั้นจะสั่นคลอนในแบบที่เมตริกใด ๆ เช่น confusion matrix ก็ไม่แสดงให้เห็น

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

สิ่งที่ไม่ควรทำคือข้ามการตรวจ โดยไม่มีการวินิจฉัย จะบอกไม่ได้ว่าปัญหาเล็กหรือใหญ่จนกว่าการพยากรณ์จะผิดพลาด

ภาพรวมสมมติฐานของโลจิสติกรีเกรสชัน

ก่อนเจาะแต่ละข้อ ต่อไปนี้คือรายการเต็มที่ต้องตรวจ

สมมติฐาน ต้องการอะไร การวินิจฉัยที่พบบ่อย
การสังเกตเป็นอิสระต่อกัน ไม่มีระเบียนใดมีอิทธิพลต่ออีกรายการ ออกแบบการศึกษา, intra-class correlation
ตัวแปรผลลัพธ์เหมาะสม ไบนารี หรือจำลองด้วยตัวแปรย่อยที่ถูกต้อง ตรวจสอบตัวแปรเป้าหมาย
ความเป็นเชิงเส้นของลอจิต ตัวทำนายเป็นเชิงเส้นใน log-odds การทดสอบ Box-Tidwell, splines
ไม่มีมัลติโคลิเนียร์ริตี้รุนแรง ตัวทำนายไม่สหสัมพันธ์กันอย่างแรง VIF, เมทริกซ์สหสัมพันธ์
ขนาดตัวอย่างเพียงพอ มีจำนวนเหตุการณ์ต่อหนึ่งตัวแปรเพียงพอ กฎนิ้ว EPV
ไม่มีเอาต์ไลเออร์ที่มีอิทธิพลสูง ไม่มีระเบียนเดี่ยวบิดเบือนการฟิต Cook's distance, leverage

ตารางสมมติฐานของโลจิสติกรีเกรสชัน

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

สมมติฐานหลักของโลจิสติกรีเกรสชัน

สมมติฐานที่ 1: ตัวแปรผลลัพธ์เป็นไบนารี (หรือจำลองอย่างเหมาะสม)

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

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

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

การยัดผลลัพธ์หลายคลาสเข้าโมเดลไบนารีมักหมายถึงการรวมหมวดที่ไม่ควรรวม หากมีตัวแปรพึงพอใจ 5 ระดับแล้วตัดเหลือ "พอใจ vs ไม่พอใจ" จะสูญเสียข้อมูลที่อาจช่วยโมเดลได้ เลือกตัวแปรย่อยที่ตรงกับลักษณะของเป้าหมาย

สมมติฐานที่ 2: การสังเกตเป็นอิสระ

แต่ละแถวในชุดข้อมูลควรให้ข้อมูลแก่โมเดลที่แถวอื่นยังไม่ได้ให้ หากสองระเบียนเชื่อมโยงกันในลักษณะที่ละเมิดข้อนี้ ค่าคลาดเคลื่อนมาตรฐานและค่า p จะไม่หมายความตามที่ควร

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

เมื่อมองข้ามแล้วฟิตโลจิสติกรีเกรสชันแบบปกติ โมเดลจะมองแต่ละแถวเป็นข้อมูลใหม่และลดค่าคลาดเคลื่อนมาตรฐานเกินควร ค่าสัมประสิทธิ์อาจดูดีภายนอก แต่ค่า p และช่วงความเชื่อมั่นจะมั่นใจเกินจริง

ทางเลือกมาตรฐานคือโลจิสติกรีเกรสชันแบบผลผสม (mixed-effects) และ GEE โมเดลผลผสมเพิ่มเอฟเฟ็กต์สุ่มสำหรับกลุ่ม (ผู้ป่วย ห้องเรียน) เพื่อให้โมเดลคำนึงถึงสหสัมพันธ์ภายในกลุ่ม GEE หรือ generalized estimating equations ให้เอฟเฟ็กต์เฉลี่ยระดับประชากรพร้อมค่าคลาดเคลื่อนมาตรฐานที่ปรับแก้ โดยไม่ต้องใช้เครื่องจักรของเอฟเฟ็กต์สุ่ม

เลือกโมเดลผลผสมเมื่อสนใจความแปรปรวนภายในกลุ่ม เลือก GEE เมื่ออยากได้เอฟเฟ็กต์เชิงมาร์จินของทั้งประชากร

สมมติฐานที่ 3: ความเป็นเชิงเส้นของลอจิต

นี่คือสมมติฐานที่คนส่วนใหญ่เข้าใจผิดเกี่ยวกับโลจิสติกรีเกรสชัน

โมเดลไม่ได้สมมติว่าตัวทำนายมีความสัมพันธ์เชิงเส้นกับผลลัพธ์ แต่สมมติว่ามีความสัมพันธ์เชิงเส้นกับ log-odds ของผลลัพธ์ นี่เป็นคนละประโยค และเปลี่ยนสิ่งที่ควรตรวจสอบ

ลอจิตคืออะไร

ลอจิตคือธรรมลอการิทึมของออดส์ สำหรับความน่าจะเป็น p ออดส์คือ p / (1 - p) และลอจิตคือ log ของอัตราส่วนนี้:

The logit

ลอจิต

จากนั้นโลจิสติกรีเกรสชันจะฟิตสมการเชิงเส้นบนสเกลนี้:

Logistic regression formula

สูตรโลจิสติกรีเกรสชัน

ฝั่งขวาเป็นเชิงเส้นในตัวทำนาย ฝั่งซ้ายคือ log-odds ไม่ใช่ความน่าจะเป็น ความน่าจะเป็นที่สนใจจริงจะได้มาจากการส่งผลรวมเชิงเส้นผ่านฟังก์ชันลอจิสติกซึ่งไม่เชิงเส้น

ดังนั้น ความสัมพันธ์ระหว่างตัวทำนายใด ๆ กับความน่าจะเป็นจึงไม่เชิงเส้น ความสัมพันธ์ระหว่างตัวทำนายกับ log-odds ต่างหากที่ควรเป็นเชิงเส้น

ทำไมเรื่องนี้จึงสำคัญในการใช้งานจริง

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

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

การตรวจความเป็นเชิงเส้นของลอจิต

มีหลายทางเลือกในการตรวจสมมติฐานนี้

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

การทดสอบ Box-Tidwell เพิ่มเทอมปฏิสัมพันธ์ระหว่างตัวทำนายเชิงต่อเนื่องแต่ละตัวกับ log ตามธรรมชาติของตัวมันเอง หากปฏิสัมพันธ์มีนัยสำคัญทางสถิติ แสดงว่าสมมติฐานความเป็นเชิงเส้นของลอจิตถูกละเมิดสำหรับตัวนั้น การทดสอบใช้ได้เฉพาะตัวทำนายที่เป็นค่าบวกเท่านั้น (เพราะหา log ของศูนย์หรือติดลบไม่ได้) และไวต่อขนาดตัวอย่างเหมือนการทดสอบนัยสำคัญใด ๆ

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

ทำอย่างไรเมื่อความเป็นเชิงเส้นล้มเหลว

หากสมมติฐานล้มเหลวสำหรับตัวทำนาย มีสองทางเลือกหลัก:

  • แปลงตัวทำนาย (ลอกรูทหรือสแควร์รูทมักได้ผล) จนความสัมพันธ์ดูเป็นเส้นตรงใน log-odds
  • ใช้สพลายน์และยอมรับโมเดลที่ซับซ้อนขึ้นเล็กน้อย

ทั้งสองวิธีคงอยู่ในตระกูลโลจิสติกรีเกรสชัน และดีกว่าการตัดตัวทำนายที่ให้ข้อมูลออก

สมมติฐานที่ 4: ไม่มีมัลติโคลิเนียร์ริตี้รุนแรง

โลจิสติกรีเกรสชันทนกับตัวทำนายที่สหสัมพันธ์กันได้ถึงจุดหนึ่ง หลังจากนั้นโมเดลจะเริ่มทำตัวแปลกในแบบที่ยากจะเห็นจากตัวชี้วัดใด ๆ

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

เมื่อมีมัลติโคลิเนียร์ริตี้ จะมีสองเรื่องผิดพลาด:

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

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

การตรวจสองอย่างคือเมทริกซ์สหสัมพันธ์และค่า variance inflation factor (VIF) เมทริกซ์สหสัมพันธ์ควรดูเป็นอย่างแรก โดยเฉพาะคู่ตัวทำนายที่สหสัมพันธ์เกิน 0.8 หรือ 0.9 แบบค่าสัมบูรณ์ ข้อจำกัดคือจับได้แค่ความโคเรียนเป็นคู่ ไม่ใช่กรณีหลายทางที่ตัวทำนายสามตัวขึ้นไปรวมกันแล้วซ้ำซ้อน

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

เมื่อ VIF แจ้งเตือน วิธีแก้ง่ายสุดคือเอาตัวทำนายที่โคเรียนกันตัวใดตัวหนึ่งออก หรือรวมเป็นฟีเจอร์เดียวเช่นผลรวมหรืออัตราส่วน หากอยากเก็บทุกตัวไว้ การทำ regularization (ridge หรือ elastic net) จะทำให้ค่าสัมประสิทธิ์เสถียรขึ้นโดยไม่ต้องเลือก

สมมติฐานที่ 5: ขนาดตัวอย่างเพียงพอ

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

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

ตรงนี้เองที่ events per variable (EPV) เข้ามา EPV คือจำนวนสังเกตในคลาสส่วนน้อยหารด้วยจำนวนตัวทำนายในโมเดล หากมีกรณีฉ้อโกง 50 และตัวทำนาย 10 ตัว EPV จะเท่ากับ 5

กฎนิ้วเดิมคือ EPV อย่างน้อย 10 งานจำลองล่าสุดชี้ว่าค่าที่เหมาะสมขึ้นกับขนาดเอฟเฟ็กต์ในข้อมูลและระดับการทำ regularization EPV ต่ำถึง 5 อาจพอได้ในบางบริบท และอาจต้องการ 20 หรือมากกว่านั้นในบริบทอื่น

ข้อสรุปคือมอง EPV เป็นข้อมูลเตือน ต่ำกว่า 10 คาดการณ์ได้ว่าค่าประมาณไม่เสถียร และควรพิจารณาวิธีมีโทษปรับ (เช่น โลจิสติกของ Firth หรือ ridge) ต่ำกว่า 5 ควรหาข้อมูลเพิ่มหรือลดความซับซ้อนโมเดลก่อนเชื่อถือค่าสัมประสิทธิ์รายตัว

ความไม่สมดุลของคลาสเกี่ยวข้องกันแต่เป็นปัญหาคนละเรื่อง

ชุดข้อมูลที่ 99% เป็นคลาสเดียวก็ยังมีจำนวนเหตุการณ์ต่อหนึ่งตัวแปรมากพอได้ สิ่งที่เปลี่ยนคืออัตราฐานของผลลัพธ์ ไม่ใช่ EPV ข้อมูลไม่สมดุลมักให้ค่าความน่าจะเป็นแบบอนุรักษ์นิยม และ accuracy ไม่ใช่ตัวชี้วัดที่มีประโยชน์อีกต่อไป เพื่อเลี่ยงปัญหา ประเมินด้วย log-loss หรือ Brier score แทน accuracy และพิจารณาถ่วงน้ำหนักคลาสหรือปรับ threshold หากต้องการการตัดสินใจที่สมดุล

สมมติฐานที่ 6: ไม่มีเอาต์ไลเออร์ที่มีอิทธิพลสูง

โลจิสติกรีเกรสชันไม่สมมติว่าตัวทำนายมีการแจกแจงปกติ ตัวทำนายเบ้และตัวแปรนับล้วนโอเคในตัวเอง สิ่งที่โมเดลสนใจคือมีสังเกตใดมีอิทธิพลต่อค่าสัมประสิทธิ์ที่ฟิตเกินควรหรือไม่

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

ควรใช้การวินิจฉัยหลายตัวที่ดูมุมต่าง ๆ ของอิทธิพล:

  • Leverage วัดว่าค่าตัวทำนายของสังเกตหนึ่งผิดแปลกจากส่วนที่เหลือแค่ไหน Leverage เพียงอย่างไม่ได้แปลว่าสังเกตนั้นมีอิทธิพล หมายถึงมีศักยภาพจะมีอิทธิพลหากผลลัพธ์ไม่สอดคล้องกับสิ่งที่ตัวทำนายบอก
  • Cook's distance รวม leverage กับเศษเหลือเป็นตัวเลขเดียวที่ประมาณว่าค่าสัมประสิทธิ์ที่ฟิตจะเปลี่ยนเท่าไรหากลบสังเกตนั้น ค่า Cook's distance ใหญ่ชี้จุดที่ควรตรวจสอบ แนวปฏิบัติทั่วไปคือค่ามากกว่า 4/n (n คือขนาดตัวอย่าง) หรือดูค่าที่ใหญ่สุดสองสามค่าของชุดข้อมูล
  • การวินิจฉัยเศษเหลือ มีประโยชน์ในกรณีที่ leverage และ Cook's distance จับไม่ได้ Deviance residuals และ Pearson residuals แจ้งสังเกตที่โมเดลฟิตยาก จุดที่มีเศษเหลือใหญ่ควรดู แม้ leverage ปานกลาง เพราะโมเดลกำลังบอกว่าไม่สามารถอธิบายกรณีนั้นด้วยตัวทำนายอื่น

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

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับสมมติฐานของโลจิสติกรีเกรสชัน

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

โลจิสติกรีเกรสชันต้องการตัวแปรแจกแจงปกติ

ไม่จริง โลจิสติกรีเกรสชันไม่ตั้งสมมติฐานความเป็นปกติกับตัวแปรใดในโมเดล

ผลลัพธ์ควรเป็นไบนารี ไม่ใช่ปกติ ซึ่งครอบคลุมไปแล้วในสมมติฐานที่ 1 ตัวทำนายก็ไม่สมมติให้ปกติ และมีรูปทรงตามข้อมูลได้ สิ่งที่สำคัญคือความสัมพันธ์ระหว่างตัวทำนายกับ log-odds ไม่ใช่การแจกแจงชายขอบของตัวแปรใดตัวหนึ่ง

โลจิสติกรีเกรสชันต้องการความแปรปรวนคงที่ (homoscedasticity)

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

ความแปรปรวนของผลลัพธ์ในโลจิสติกรีเกรสชันขึ้นกับความน่าจะเป็นที่พยากรณ์เอง สำหรับผลลัพธ์แบบ Bernoulli ความแปรปรวนเท่ากับ p(1 - p) ซึ่งสูงสุดใกล้ p = 0.5 และต่ำสุดใกล้ 0 และ 1 ความแปรปรวนจึงไม่คงที่ และโมเดลคำนึงถึงสิ่งนี้ผ่านฟังก์ชันไลเคลี่ฮูดที่มันแม็กซิไมซ์

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

ตัวทำนายต้องแจกแจงปกติ

ไม่จริง โลจิสติกรีเกรสชันไม่ตั้งสมมติฐานการแจกแจงกับตัวทำนาย

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

หากความเบ้ของตัวทำนายสร้างปัญหา มักเป็นเพราะความเป็นเชิงเส้นของลอจิตหรือเอาต์ไลเออร์ที่มีอิทธิพล

เศษเหลือต้องแจกแจงปกติ

ไม่จริง ไม่มีสมมติฐานความเป็นปกติกับเศษเหลือของโลจิสติกรีเกรสชัน

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

ดังนั้นเมื่อดูการวินิจฉัยเศษเหลือสำหรับโลจิสติกรีเกรสชัน (เช่นในสมมติฐานที่ 6) เป้าหมายคือหาสังเกตที่มีอิทธิพลและจุดที่โมเดลอธิบายไม่ได้ ไม่ใช่มองหารูประฆัง

วิธีตรวจสมมติฐานโลจิสติกรีเกรสชันใน Python

ฉันจะทำการวินิจฉัยด้วย statsmodels Scikit-learn ฟิตโลจิสติกรีเกรสชันได้แต่ไม่ให้ VIF สถิติอิทธิพล หรือการวินิจฉัยเศษเหลือแบบพร้อมใช้

ตั้งค่าตัวอย่าง

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

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

np.random.seed(42)
n = 1000

age = np.random.normal(40, 12, n).clip(18, 80)
income = 30000 + 1500 * age + np.random.normal(0, 8000, n)
spending_score = np.random.uniform(1, 100, n)
logit_p = -3 + 0.04 * age + 0.02 * spending_score
p = 1 / (1 + np.exp(-logit_p))
y = np.random.binomial(1, p)

df = pd.DataFrame({
    "churned": y,
    "age": age,
    "income": income,
    "spending_score": spending_score,
})

model = smf.glm(
    "churned ~ age + income + spending_score",
    data=df, family=sm.families.Binomial()
).fit()
print(model.summary())

Model summary

สรุปโมเดล

สรุปแสดงค่าสัมประสิทธิ์ ค่าคลาดเคลื่อนมาตรฐาน สถิติ z และค่า p age และ spending_score ออกมาเป็นตัวทำนายที่มีความหมาย ค่าสัมประสิทธิ์ของ income เล็กมากเพราะผลลัพธ์ไม่ขึ้นกับรายได้โดยตรง ผลที่เห็นถูกดูดซับโดยอายุ

มัลติโคลิเนียร์ริตี้ด้วย VIF

Statsmodels ทำให้คำนวณได้ง่ายมาก:

from statsmodels.stats.outliers_influence import variance_inflation_factor

X = sm.add_constant(df[["age", "income", "spending_score"]])
vif = pd.DataFrame({
    "feature": X.columns,
    "VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
})
print(vif[vif["feature"] != "const"])

VIF output

ผลลัพธ์ VIF

VIF ของ age และ income ประมาณ 5.5 แสดงความโคเรียนระดับอ่อน spending_score ใกล้ 1 ซึ่งดี ความแปรปรวนไม่ได้พองจากความโคเรียนกับตัวอื่น VIF เกิน 5 เป็นสัญญาณเบา; เกิน 10 เป็นปัญหารุนแรงที่ต้องแก้ทันที ทางเลือกคือเอา age หรือ income ออกตัวใดตัวหนึ่ง หรือรวมเป็นฟีเจอร์เดียว

ความเป็นเชิงเส้นของลอจิตด้วย Box-Tidwell

การทดสอบ Box-Tidwell เพิ่มเทอมปฏิสัมพันธ์ระหว่างตัวทำนายเชิงต่อเนื่องแต่ละตัวกับ log ตามธรรมชาติของตัวมันเอง ปฏิสัมพันธ์ที่มีนัยสำคัญจะแจ้งความสัมพันธ์ log-odds ที่ไม่เป็นเชิงเส้นสำหรับตัวนั้น

df_bt = df.copy()
for col in ["age", "income", "spending_score"]:
    df_bt[f"{col}_logx"] = df_bt[col] * np.log(df_bt[col])

bt_formula = (
    "churned ~ age + income + spending_score + "
    "age_logx + income_logx + spending_score_logx"
)
bt_model = smf.glm(
    bt_formula, data=df_bt, family=sm.families.Binomial()
).fit()

interactions = ["age_logx", "income_logx", "spending_score_logx"]
print(bt_model.pvalues[interactions])

Box-Tidwell output

ผลลัพธ์ Box-Tidwell

หากค่า p ใดต่ำกว่า 0.05 ให้สงสัยว่าสมมติฐานความเป็นเชิงเส้นของลอจิตอาจไม่เป็นจริงสำหรับตัวนั้น กรณีนี้เราสร้างลอจิตแบบเชิงเส้น จึงไม่ควรมีนัยสำคัญ บนข้อมูลจริง ให้พล็อต log-odds เชิงประจักษ์กับตัวทำนายที่ทดสอบติด แล้วตัดสินใจว่าจะใช้ทรานส์ฟอร์มหรือสพลายน์

การวินิจฉัยอิทธิพล

Statsmodels ให้เข้าถึง Cook's distance และ leverage ผ่าน get_influence().

influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
leverage = influence.hat_matrix_diag

flagged = pd.DataFrame({
    "cooks_d": cooks_d,
    "leverage": leverage,
}).sort_values("cooks_d", ascending=False).head(10)
print(flagged)

Influence diagnostics output

ผลลัพธ์การวินิจฉัยอิทธิพล

เกณฑ์ Cook's distance ที่ควรตรวจคือประมาณ 4/n ด้วย 1000 แถวจึงเท่ากับ 0.004 อะไรที่สูงกว่านั้นมากควรดูใกล้ ๆ ในชุดนี้ค่า Cook's distance ที่ใหญ่สุดยังเล็ก ซึ่งเป็นผลลัพธ์ที่ดีและน่าเบื่อซึ่งโดยมากอยากได้

ต่อไปจะสร้างภาพช่วยให้อ่านการกระจายได้ง่ายขึ้น:

Influence diagnostics visualized

การวินิจฉัยอิทธิพลแบบภาพ

จุดที่อยู่เหนือเส้นประมาก ๆ คือจุดที่ควรตรวจสอบ มีอยู่บ้างแต่ไม่มาก

การวินิจฉัยเศษเหลือ

Deviance residuals บอกว่าสังเกตใดที่โมเดลฟิตยาก

deviance_resid = model.resid_deviance
fitted = model.fittedvalues

resid_df = pd.DataFrame({
    "fitted": fitted,
    "deviance": deviance_resid,
}).sort_values("deviance", key=abs, ascending=False).head(10)
print(resid_df)

Residual diagnostics output

ผลลัพธ์การวินิจฉัยเศษเหลือ

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

วิธีตรวจสมมติฐานโลจิสติกรีเกรสชันใน R

R มีการสนับสนุนในตัวแน่นกว่า สิ่งที่ต้องใช้ส่วนใหญ่มาจาก glm() ของ base R ร่วมกับแพ็กเกจ car

ตั้งค่าตัวอย่าง

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

set.seed(42)
n <- 1000

age <- pmin(pmax(rnorm(n, mean = 40, sd = 12), 18), 80)
income <- 30000 + 1500 * age + rnorm(n, sd = 8000)
spending_score <- runif(n, min = 1, max = 100)
logit_p <- -3 + 0.04 * age + 0.02 * spending_score
p <- 1 / (1 + exp(-logit_p))
churned <- rbinom(n, size = 1, prob = p)

df <- data.frame(churned, age, income, spending_score)

model <- glm(churned ~ age + income + spending_score,
             data = df, family = binomial)
summary(model)

Model summary output

ผลลัพธ์สรุปโมเดล

เอาต์พุตของ summary(model) ให้ค่าสัมประสิทธิ์ ค่าคลาดเคลื่อนมาตรฐาน สถิติ z และค่า p age และ spending_score ควรดูมีความหมาย ขณะที่ผลของ income ถูกดูดซับโดย age

มัลติโคลิเนียร์ริตี้ด้วย VIF

แพ็กเกจ car มี vif() สำหรับ glm ใด ๆ :

library(car)

vif(model)

VIF output in R

ผลลัพธ์ VIF ใน R

age และ income จะมี VIF ราว 5.7 ซึ่งสะท้อนมัลติโคลิเนียร์ริตี้ที่ฝังในข้อมูล spending_score ใกล้ 1 เช่นเดียวกับใน Python ค่าเกิน 5 ควรใส่ใจ และเกิน 10 คือปัญหาชัดเจน

ความเป็นเชิงเส้นของลอจิตด้วย Box-Tidwell

ฟังก์ชัน car::boxTidwell ถูกออกแบบมาสำหรับเชิงเส้นรีเกรสชัน ดังนั้นสำหรับโลจิสติกรีเกรสชัน วิธีที่ดีที่สุดคือเพิ่มเทอมปฏิสัมพันธ์เองแล้วฟิตใหม่:

df_bt <- df
df_bt$age_logx <- df_bt$age * log(df_bt$age)
df_bt$income_logx <- df_bt$income * log(df_bt$income)
df_bt$spending_score_logx <- df_bt$spending_score * log(df_bt$spending_score)

bt_model <- glm(
  churned ~ age + income + spending_score +
    age_logx + income_logx + spending_score_logx,
  data = df_bt, family = binomial
)

interactions <- c("age_logx", "income_logx", "spending_score_logx")
summary(bt_model)$coefficients[interactions, ]

Box-Tidwell output in R

ผลลัพธ์ BoX-Tidwell ใน R

เอาต์พุตแสดงค่าสัมประสิทธิ์และค่า p สำหรับเทอมปฏิสัมพันธ์แต่ละตัว ค่า p ที่มีนัยสำคัญชี้การละเมิดสมมติฐานความเป็นเชิงเส้นของลอจิตสำหรับตัวทำนายนั้น ในข้อมูลสังเคราะห์นี้ การทดสอบไม่ควรปฏิเสธความเป็นเชิงเส้น บนข้อมูลจริง ให้ตามด้วยพล็อต log-odds เชิงประจักษ์หรือฟิตโมเดลที่มีสพลายน์ (จากแพ็กเกจ splines) สำหรับตัวทำนายที่การทดสอบชี้

การวินิจฉัยอิทธิพล

R มี cooks.distance() และ hatvalues() ใน base จึงไม่ต้องใช้แพ็กเกจเสริม

cooks_d <- cooks.distance(model)
leverage <- hatvalues(model)

influence_df <- data.frame(
  index = seq_along(cooks_d),
  cooks_d = cooks_d,
  leverage = leverage
)
head(influence_df[order(-influence_df$cooks_d), ], 10)

Influence diagnostics in R

การวินิจฉัยอิทธิพลใน R

เกณฑ์ Cook's distance เหมือนใน Python: 4/n หรือ 0.004 สำหรับชุด 1000 แถว อะไรที่เกินกว่านั้นมากควรตรวจ สำหรับการดูอย่างเร็ว plot(model, which = 4) ของ base R ให้กราฟ Cook's distance ในบรรทัดเดียว

การวินิจฉัยอิทธิพลใน R แบบภาพ

การวินิจฉัยเศษเหลือ

ฟังก์ชัน residuals() ของ R ให้ deviance residuals จาก glm

deviance_resid <- residuals(model, type = "deviance")
fitted_vals <- fitted(model)

resid_df <- data.frame(
  fitted = fitted_vals,
  deviance = deviance_resid
)
head(resid_df[order(-abs(resid_df$deviance)), ], 10)

Residual diagnostics in R

การวินิจฉัยเศษเหลือใน R

Deviance residuals ค่าสัมบูรณ์สูงคือกรณีที่โมเดลพยากรณ์พลาด ควรไขว้ตรวจสิ่งเหล่านี้กับธงของ Cook's distance ด้านบนเพื่อหาสังเกตที่ทั้งฟิตแย่และมีอิทธิพล

หากอยากดูทุกอย่างในคราวเดียว influence.measures(model) จะคืนตารางที่รวม Cook's distance leverage DFBETAs และสถิติอิทธิพลอื่น ๆ ไว้ด้วยกัน เป็นวิธีเร็วที่สุดในการสแกนการวินิจฉัยมาตรฐานทั้งหมดบน glm ที่ฟิตแล้ว

จะเกิดอะไรขึ้นเมื่อสมมติฐานถูกละเมิด?

ส่วนใหญ่แล้วการละเมิดสมมติฐานจะไม่ทำให้โมเดลพังจนใช้ไม่ได้ แต่มักทำให้มันผิดพฤติกรรมอย่างแนบเนียน ซึ่งจะสังเกตได้ก็ต่อเมื่อรู้ว่าจะมองหาอะไร

ผลที่ตามมาสี่ข้อที่พบบ่อยคือ:

  1. ค่าสัมประสิทธิ์ไม่เสถียร: การเปลี่ยนข้อมูลเล็กน้อย (เพิ่มหรือลดไม่กี่แถว เปลี่ยนฟีเจอร์นิดหน่อย) อาจทำให้ค่าสัมประสิทธิ์เปลี่ยนมากหรือกลับเครื่องหมาย นี่คือสิ่งที่มัลติโคลิเนียร์ริตี้ทำ และยังเกิดเมื่อขนาดตัวอย่างเล็กเกินสำหรับจำนวนตัวทำนาย
  2. การปรับเทียบ (calibration) แย่: ความน่าจะเป็นที่พยากรณ์ไม่ตรงกับอัตราจริง โมเดลพยากรณ์ churn 30% แต่พบจริง 15% Accuracy อาจยังดูดี แต่ความน่าจะเป็นเพี้ยน การละเมิดความเป็นเชิงเส้นของลอจิตและเอาต์ไลเออร์ที่มีอิทธิพลล้วนมีส่วน
  3. การอนุมานทำให้เข้าใจผิด: ข้อนี้ยากสุดจะจับ เพราะโมเดลยังผลิตค่าคลาดเคลื่อนมาตรฐานและค่า p ที่ดูดี การสังเกตที่โคเรียนกันลดค่าคลาดเคลื่อนมาตรฐานต่ำกว่าที่ควร และสเปกตัวทำนายที่ผิดทำให้มันพองตัว ไม่ว่าจะทางไหน ค่า p ที่ได้ก็ไม่หมายความตามที่คิด
  4. คุณภาพการพยากรณ์ลดลง: อาการที่เห็นชัดที่สุด แม้มักเล็กที่สุดในทางปฏิบัติ การพยากรณ์มักทนทานกว่าค่าสัมประสิทธิ์ นี่จึงเป็นเหตุผลที่ทีมที่โฟกัสแค่ accuracy มักพลาดสัญญาณเตือน

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

ทางเลือกเมื่อสมมติฐานของโลจิสติกรีเกรสชันใช้ไม่ได้

หากการวินิจฉัยชี้ปัญหาที่แก้ภายในโลจิสติกรีเกรสชันไม่ได้ ขั้นต่อไปคือใช้โมเดลที่ไม่ตั้งสมมติฐานเหล่านั้น

Generalized additive models (GAMs) เป็นสิ่งที่ควรมองต่อ GAM คงฟังก์ชันลิงก์แบบลอจิสติกและโครงสร้างเชิงบวกที่ตีความได้ แต่แทนเทอมเชิงเส้นด้วยฟังก์ชันเรียบของตัวทำนายแต่ละตัว คุณจะได้ “ค่าสัมประสิทธิ์พร้อมรูปทรง” แทนตัวเลขเดี่ยว ซึ่งแก้ปัญหาความเป็นเชิงเส้นของลอจิต GAM ยังมีความเป็นพาราเมตริกพอให้ตรวจและตีความได้ จึงเป็นก้าวที่ดีจากโลจิสติกรีเกรสชันเมื่อสมมติฐานความเป็นเชิงเส้นใช้ไม่ได้

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

การเลือกระหว่าง GAM กับโมเดลต้นไม้ขึ้นกับสิ่งที่ต้องการจากโมเดล

  • เลือก GAM เมื่อให้ความสำคัญกับการตีความ และอยากเห็นผลของตัวทำนายแต่ละตัวต่อ log-odds
  • เลือกต้นไม้แบบ gradient boosting เมื่อให้ความสำคัญกับคุณภาพการพยากรณ์และยอมรับโมเดลที่โปร่งใสน้อยลงได้

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

ดังนั้น ไปหา GAM หรือโมเดลต้นไม้เมื่อการวินิจฉัยบอกว่าสมมติฐานใช้ไม่ได้จริง ๆ ไม่ใช่เพียงเพราะโลจิสติกรีเกรสชันไม่ใช่อัลกอริทึมล้ำสมัย

แนวปฏิบัติที่ดีสำหรับการทำโมเดลโลจิสติกรีเกรสชัน

สุดท้ายนี้ ทำตามรายการสั้น ๆ นี้เพื่อได้โมเดลที่เชื่อถือได้เสมอ:

  • ตรวจสมมติฐานก่อนตีความ: รัน VIF การทดสอบ Box-Tidwell และการวินิจฉัยอิทธิพลก่อนอ่านค่าสัมประสิทธิ์ หากตีความก่อนแล้วค่อยตรวจ คุณจะต้องปกป้องตัวเลขที่ยังไม่ได้ยืนยัน ซึ่งไม่อยากเป็นคน ๆ นั้นในที่ประชุม
  • ใช้ regularization เมื่อขนาดตัวอย่างเล็ก: Ridge หรือ elastic net ทำให้ค่าสัมประสิทธิ์เสถียรเมื่อ EPV ต่ำหรือมีตัวทำนายโคเรียน การแลกเปลี่ยนคืออคติเล็กน้อยเพื่อแลกกับการลดความแปรปรวนมาก ซึ่งโดยมากคุ้ม
  • ตรวจสอบบนข้อมูลที่โมเดลไม่เคยเห็น: แยกชุดทดสอบหรือใช้ครอสวาลิเดชัน เมตริกฝึกมักโอ้อวดเมื่อโมเดลมีช่องให้โอเวอร์ฟิต ซึ่งโลจิสติกรีเกรสชันก็มีเมื่อมีตัวทำนายจำนวนมากหรือเหตุการณ์หายาก
  • ประเมินการปรับเทียบ: Accuracy ซ่อนว่าความน่าจะเป็นที่พยากรณ์สอดคล้องกับอัตราจริงหรือไม่ ใช้ log-loss หรือ Brier score สำหรับการประเมิน และดูกราฟ calibration เมื่อความน่าจะเป็นมีผลต่อการตัดสินใจทางธุรกิจ

สรุป

เอาตามตรง โลจิสติกรีเกรสชันเป็นหนึ่งในโมเดลที่ให้อภัยมากกว่าแบบอื่น

มันทนกับตัวทำนายเบ้และผลลัพธ์ไม่สมดุล และไม่สนว่าเศษเหลือมีหน้าตาอย่างไร สิ่งที่ทนไม่ได้คือความสัมพันธ์กับ log-odds ที่ระบุผิด หรือชุดตัวทำนายที่มีข้อมูลซ้ำกันทั้งหมด

นั่นคือเหตุผลที่ความเป็นเชิงเส้นของลอจิตและมัลติโคลิเนียร์ริตี้คือสองการตรวจสมมติฐานที่ควรถือว่า “ต้องมี” พวกมันบิดเบือนโมเดลในแบบที่เมตริกใด ๆ ก็จับไม่ได้ สมมติฐานอีกสี่ข้อก็สำคัญ แต่สองข้อนี้คือสิ่งที่ควรโฟกัสจริง ๆ

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

หากทั้งหมดนี้ฟังดูซับซ้อน ก็เพราะมันซับซ้อน ต้องใช้หลายอย่างในการเป็นวิศวกรแมชชีนเลิร์นนิงที่ดี จึงขอแนะนำให้ลงทะเบียนใน Machine Learning Scientist in Python ของเรา เนื้อหา 85 ชั่วโมงจะทำให้พร้อมทำงานในปี 2026

FAQs

โลจิสติกรีเกรสชันมีสมมติฐานหรือไม่?

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

สมมติฐานที่สำคัญที่สุดของโลจิสติกรีเกรสชันคืออะไร?

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

จะเกิดอะไรขึ้นหากสมมติฐานของโลจิสติกรีเกรสชันถูกละเมิด?

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

โลจิสติกรีเกรสชันต้องการตัวทำนายแจกแจงปกติหรือไม่?

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

เกณฑ์ VIF ที่ดีสำหรับโลจิสติกรีเกรสชันคือเท่าไร?

ค่า VIF ไม่เกิน 5 มักใช้ได้ ระหว่าง 5 ถึง 10 บ่งชี้มัลติโคลิเนียร์ริตี้ระดับปานกลางที่ควรตรวจ และเกิน 10 เป็นสัญญาณว่ามีตัวทำนายซ้ำซ้อน เกณฑ์เหล่านี้ไม่ใช่กฎตายตัวแต่เป็นแนวปฏิบัติ เพราะการตีความ VIF ขึ้นกับขนาดตัวอย่างและความแม่นยำที่ต้องการ หาก VIF ของตัวทำนายสูงและค่าคลาดเคลื่อนมาตรฐานไม่เสถียรเมื่อดูบนซับเซ็ตข้อมูล นั่นเป็นหลักฐานว่าความโคเรียนก่อปัญหา

หัวข้อ

เรียนกับ DataCamp

Courses

Introduction to Regression in R

4 ชม.
77.1K
Predict housing prices and ad click-through rate by implementing, analyzing, and interpreting regression analysis in R.
ดูรายละเอียดRight Arrow
เริ่มหลักสูตร
ดูเพิ่มเติมRight Arrow