การบรรจุมากเกินไปแย่มากจนคุณไม่ควรเลือกแบบจำลองที่มีน้ำหนักเกินแม้ว่าจะมีข้อผิดพลาดในการทดสอบน้อยกว่าหรือไม่? ไม่ แต่คุณควรมีเหตุผลในการเลือก
พฤติกรรมนี้ไม่ได้ จำกัด อยู่ที่ XGBoost มันเป็นเรื่องธรรมดาในทุกเทคนิคการเรียนรู้ของเครื่อง ค้นหาการแลกเปลี่ยนที่ถูกต้องระหว่างการทำ underfitting และ overfitting ความหมายอย่างเป็นทางการเป็นถ่วงดุลอำนาจอคติแปรปรวน (วิกิพีเดีย)
การแลกเปลี่ยนอคติแปรปรวน
ต่อไปนี้คือการทำให้ Bias-variance tradeoff ง่ายขึ้นเพื่อช่วยปรับการเลือกรูปแบบของคุณ
เราบอกว่าแบบจำลองมีอคติสูงหากไม่สามารถใช้ข้อมูลในข้อมูลได้อย่างเต็มที่ มันพึ่งพาข้อมูลทั่วไปมากเกินไปเช่นกรณีที่พบบ่อยที่สุดค่าเฉลี่ยของการตอบกลับหรือคุณสมบัติที่ทรงพลังไม่กี่ตัว ความลำเอียงอาจมาจากการสันนิษฐานที่ผิดสำหรับตัวอย่างที่สมมติว่าตัวแปรมีการแจกแจงแบบปกติหรือแบบจำลองเป็นแบบเส้นตรง
เราบอกว่าแบบจำลองมีความแปรปรวนสูงหากใช้ข้อมูลมากเกินไปจากข้อมูล ขึ้นอยู่กับข้อมูลที่มีเฉพาะในชุดการฝึกอบรมที่ได้รับการนำเสนอเท่านั้นซึ่งไม่ได้พูดคุยกันพอแล้ว โดยทั่วไปรูปแบบจะเปลี่ยนไปมากถ้าคุณเปลี่ยนชุดฝึกอบรมดังนั้นชื่อ "ความแปรปรวนสูง"
คำจำกัดความเหล่านั้นคล้ายกันมากกับคำจำกัดความของการ underfitting และ overfitting อย่างไรก็ตามคำจำกัดความเหล่านั้นมักจะง่ายเกินไปที่จะตรงกันข้าม
- โมเดลกำลังอยู่ระหว่างการทดสอบและข้อผิดพลาดในการทดสอบสูง ซึ่งหมายความว่าแบบจำลองนั้นง่ายเกินไป
- รูปแบบเป็น overfitting ถ้าข้อผิดพลาดการทดสอบสูงกว่าข้อผิดพลาดการฝึกอบรม ซึ่งหมายความว่าแบบจำลองนั้นซับซ้อนเกินไป
แน่นอนว่าการลดความซับซ้อนเหล่านั้นมีประโยชน์เนื่องจากช่วยเลือกความซับซ้อนที่เหมาะสมของโมเดล แต่พวกเขามองข้ามจุดสำคัญความจริงที่ว่า (เกือบ) ทุกรุ่นมีทั้งอคติและองค์ประกอบความแปรปรวน underfitting / overfitting คำอธิบายบอกคุณว่าคุณมีอคติมากเกินไป / แปรปรวนมากเกินไป แต่คุณ (เกือบ) มักจะมีทั้ง
หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับการแลกเปลี่ยนความแปรปรวนแบบอคติพวกเขามีการสร้างภาพข้อมูลที่เป็นประโยชน์มากมายและมีแหล่งข้อมูลที่ดีผ่านทาง Google หนังสือเรียนรู้ของเครื่องทุกเครื่องจะมีหัวข้อเกี่ยวกับการแลกเปลี่ยนความเอนเอียง - อคตินี่คือบางส่วน
- ความรู้เบื้องต้นเกี่ยวกับการเรียนรู้ทางสถิติและองค์ประกอบของการเรียนรู้ทางสถิติ(ที่นี่)
- การจดจำรูปแบบและการเรียนรู้ของเครื่องโดย Christopher Bishop
- การเรียนรู้ของเครื่อง: มุมมองที่น่าจะเป็น, โดย Kevin Murphy
นอกจากนี้โพสต์ดีบล็อกที่ช่วยให้ฉันเข้าใจคือสกอตต์ Fortmann ยองของการทำความเข้าใจอคติแปรปรวนถ่วงดุลอำนาจ
ประยุกต์ใช้กับปัญหาของคุณ
ดังนั้นคุณมีสองรุ่น
MARSXGBoostรถไฟแม่∼ 4.0∼ 0.3ทดสอบแม่∼ 4.0∼ 2.4ความแปรปรวนต่ำอคติที่สูงขึ้น,ความแปรปรวนสูงขึ้นอคติต่ำ,
และคุณต้องเลือกอย่างใดอย่างหนึ่ง ในการทำเช่นนั้นคุณต้องกำหนดว่าอะไรคือโมเดลที่ดีกว่า พารามิเตอร์ที่ควรรวมอยู่ในการตัดสินใจของคุณคือความซับซ้อนและประสิทธิภาพของโมเดล
- คุณยินดีที่จะแลกเปลี่ยน "หน่วย" ของความซับซ้อนกี่หน่วยสำหรับหนึ่งหน่วยของประสิทธิภาพ
- ความซับซ้อนมากขึ้นเกี่ยวข้องกับความแปรปรวนที่สูงขึ้น หากคุณต้องการให้แบบจำลองของคุณสรุปได้ดีบนชุดข้อมูลที่แตกต่างกันเล็กน้อยจากที่คุณได้ฝึกฝนมาคุณควรตั้งเป้าหมายให้มีความซับซ้อนน้อยลง
- หากคุณต้องการโมเดลที่เข้าใจได้ง่ายคุณสามารถทำได้ด้วยต้นทุนของประสิทธิภาพโดยการลดความซับซ้อนของโมเดล
- หากคุณตั้งเป้าหมายเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดในชุดข้อมูลที่คุณรู้ว่ามาจากกระบวนการกำเนิดเดียวกันกับชุดฝึกอบรมของคุณคุณสามารถจัดการกับความซับซ้อนเพื่อเพิ่มประสิทธิภาพข้อผิดพลาดในการทดสอบและใช้เป็นตัวชี้วัด สิ่งนี้จะเกิดขึ้นเมื่อชุดการฝึกของคุณสุ่มตัวอย่างจากชุดที่ใหญ่กว่าและโมเดลของคุณจะถูกนำไปใช้กับชุดนี้ นี่เป็นกรณีในการแข่งขัน Kaggle ส่วนใหญ่สำหรับสุดยอด
เป้าหมายที่นี่ไม่ใช่เพื่อค้นหาโมเดลที่ "ไม่เหมาะสม" มันคือการหารูปแบบที่มีการแลกเปลี่ยนอคติแปรปรวนที่ดีที่สุด ในกรณีนี้ฉันขอยืนยันว่าการลดอคติที่สำเร็จโดยรุ่น XGBoost นั้นดีพอที่จะพิสูจน์ความแปรปรวนที่เพิ่มขึ้น
คุณทำอะไรได้บ้าง
อย่างไรก็ตามคุณสามารถทำได้ดีกว่าโดยการปรับพารามิเตอร์ไฮเปอร์
การเพิ่มจำนวนรอบและลดอัตราการเรียนรู้เป็นไปได้ บางสิ่งบางอย่างที่เป็น "แปลก" เกี่ยวกับการไล่ระดับสีการส่งเสริมคือว่าทำงานได้ดีที่ผ่านมาจุดที่ผิดพลาดการฝึกอบรมได้ตีศูนย์ดูเหมือนว่าจะยังคงปรับปรุงข้อผิดพลาดการทดสอบ (ตามที่กล่าวนี่: ลึกที่ดีขึ้นเท่านั้นเมื่อตื้นดีหรือไม่? ) คุณสามารถลองฝึกโมเดลของคุณบนชุดข้อมูลของคุณได้นานขึ้นเมื่อคุณตั้งค่าพารามิเตอร์อื่น ๆ
ความลึกของต้นไม้ที่คุณปลูกเป็นจุดเริ่มต้นที่ดีมาก คุณต้องทราบว่าสำหรับความลึกทุกหน่วยคุณต้องเพิ่มจำนวนของใบไม้ที่จะสร้าง ถ้าคุณจะปลูกต้นไม้ขนาดสองแทนขนาด 16 มันจะต้องใช้1 / 214ของเวลา! คุณควรลองปลูกต้นไม้เล็ก ๆ ให้มากขึ้น เหตุผลก็คือว่าความลึกของต้นไม้ที่ควรจะเป็นตัวแทนระดับของการมีปฏิสัมพันธ์คุณลักษณะ นี่อาจเป็นศัพท์แสง แต่หากคุณลักษณะของคุณมีระดับของการโต้ตอบที่ 3 (ประมาณ: การรวมกันของ 4 คุณสมบัติไม่ได้มีประสิทธิภาพมากกว่าการรวม 3 ของคุณลักษณะเหล่านั้น + ที่สี่) ดังนั้นการปลูกต้นไม้ที่มีขนาดใหญ่กว่า 3 คือ เป็นอันตราย ต้นไม้สองต้นที่มีความลึกสามต้นจะมีอำนาจการวางนัยทั่วไปมากกว่าต้นไม้ที่มีความลึกสี่ต้น นี่เป็นแนวคิดที่ค่อนข้างซับซ้อนและฉันจะไม่เข้าไปในตอนนี้ แต่คุณสามารถตรวจสอบเอกสารชุดนี้เพื่อเริ่มต้นได้ นอกจากนี้โปรดทราบว่าต้นไม้ลึกนำไปสู่ความแปรปรวนสูง
การใช้การย่อยตัวอย่างหรือที่รู้จักกันในชื่อการห่อเป็นสิ่งที่ดีในการลดความแปรปรวน ถ้าต้นไม้แต่ละต้นของคุณมีความแปรปรวนสูงการห่อจะเฉลี่ยต้นไม้และค่าเฉลี่ยจะมีความแปรปรวนน้อยกว่าต้นไม้แต่ละต้น หากหลังจากปรับความลึกของต้นไม้คุณยังคงพบกับความแปรปรวนสูงให้ลองเพิ่มการสุ่มตัวอย่าง (นั่นคือลดสัดส่วนของข้อมูลที่ใช้) การขยายพื้นที่ของฟีเจอร์เพื่อให้บรรลุเป้าหมายนี้