ฉันควรเลือกตัวแยกป่าแบบสุ่มหรือตัวแยกประเภทของฟอเรสต์ป่าหรือไม่


11

ฉันพอดีกับชุดข้อมูลที่มีคลาสเป้าหมายไบนารีโดยฟอเรสต์แบบสุ่ม ในไพ ธ อนฉันสามารถทำได้ทั้งโดย randomforestclassifier หรือ randomforestregressor

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

นอกจากนี้ฉันสามารถสังเกตได้ว่า

randomforestclassifier.predict_proba(X_test)[:,1]) 

แตกต่างจาก

randomforestregressor.predict(X_test)

ดังนั้นฉันแค่ต้องการยืนยันว่าทั้งสองวิธีนั้นถูกต้องแล้ววิธีใดดีกว่าในแอปพลิเคชันฟอเรสต์แบบสุ่ม


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

คำตอบ:


7

ใช้ตัวจําแนก ไม่พวกเขาไม่ถูกต้องทั้งคู่

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

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

ฉันสามารถเรียกใช้ randomforestregressor ก่อนและกลับมาเป็นชุดของความน่าจะเป็นโดยประมาณ

NO คุณไม่ได้รับความน่าจะเป็นจากการถดถอย มันแค่พยายาม "คาดการณ์" ค่าที่คุณให้ (ในกรณีนี้มีเพียง 0 และ 1) ซึ่งหมายความว่าค่าที่สูงกว่า 1 หรือต่ำกว่า 0 นั้นถูกต้องสมบูรณ์ในฐานะเอาต์พุตการถดถอยเนื่องจากไม่ได้คาดหวังเพียงสองค่าที่ไม่ต่อเนื่องเป็นเอาต์พุต (ที่เรียกว่าการจำแนก !) แต่ค่าต่อเนื่อง

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

เพียงพูดถึงที่นี่: .predict vs .predict_proba (สำหรับลักษณนาม!)
.predict ใช้เอาต์พุต. predict_proba และเปลี่ยนทุกอย่างเป็น 0 ต่ำกว่าขีด จำกัด ที่แน่นอน (ปกติ 0.5) ตามลำดับเป็น 1 เหนือขีด จำกัด นั้น

หมายเหตุ: แน่นอนว่าภายในจะเหมือนกันยกเว้นจาก "เลเยอร์สุดท้าย" ฯลฯ ! ยังเห็นพวกเขา (หรือดีกว่าปัญหาที่พวกเขากำลังแก้ไข) แตกต่างอย่างสิ้นเชิง!

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