เจาะลึก Random Forests และ Bagging ตัวแปรและความแปรปรวนหายไปไหน
ทำความเข้าใจกลไกเบื้องหลัง Random Forests และ Bagging ว่าเหตุใดการเฉลี่ยผลลัพธ์ของต้นไม้ตัดสินใจจำนวนมากจึงช่วยลดความแปรปรวนได้อย่างแม่นยำทางคณิตศาสตร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Random Forests ใช้การเฉลี่ยต้นไม้ตัดสินใจเชิงลึกเพื่อกำจัดความแปรปรวนไม่ใช่ลดอคติ
- Bagging และ Random Feature Selection คือหัวใจสำคัญที่ทำให้ต้นไม้ตัดสินใจมีความแตกต่างกัน
- สูตรความแปรปรวนอธิบายได้ว่าเหตุใดการเพิ่มต้นไม้ถึงจุดหนึ่งจึงไม่ช่วยให้โมเดลดีขึ้นอีก
- การประเมินแบบ Out-of-Bag อาศัยข้อมูลประมาณ 37% ที่ไม่ได้ถูกเลือกในกระบวนการ Bootstrap
อัลกอริทึม Random Forest ทำงานด้วยการนำต้นไม้ตัดสินใจเชิงลึกจำนวนมากมาเฉลี่ยรวมกัน โดยแต่ละต้นจะถูกสร้างขึ้นจากข้อมูลตัวอย่างแบบสุ่มที่แตกต่างกัน การเฉลี่ยนี้ไม่สามารถทำให้ต้นไม้แต่ละต้นเก่งขึ้นได้ด้วยตัวมันเอง และไม่สามารถลดอคติ (bias) ได้ สิ่งที่กระบวนการนี้กำจัดได้คือความแปรปรวน (variance) ซึ่งสามารถพิสูจน์ได้ด้วยสมการทางคณิตศาสตร์เพียงสองบรรทัด พร้อมทั้งอธิบายได้ด้วยว่าเหตุใดการเพิ่มต้นไม้ต้นที่หนึ่งพันจึงไม่มีผลใดๆ ต่อโมเดล
กระบวนการแรกคือ Bagging ซึ่งเป็นการสร้างต้นไม้แต่ละต้นด้วยตัวอย่างแบบ Bootstrap โดยการสุ่มหยิบข้อมูลจำนวน n แถวแบบใส่คืน (with replacement) ส่งผลให้ต้นไม้แต่ละต้นเห็นชุดข้อมูลที่ไม่เหมือนกันและสร้างข้อผิดพลาดที่แตกต่างกัน
กระบวนการที่สองคือ Random Feature Selection ซึ่งเป็นตัวแบ่งแยกความแตกต่างระหว่าง Random Forest กับชุดต้นไม้แบบ Bagged ธรรมดา ในทุกๆ จุดแยก (split) ต้นไม้จะได้รับอนุญาตให้พิจารณาเฉพาะคอลัมน์ชุดย่อยแบบสุ่มเท่านั้น โดยทั่วไปคือรากที่สองของจำนวนคอลัมน์ทั้งหมดสำหรับงานจำแนกประเภท หรือหนึ่งในสามสำหรับงานถดถอย หากไม่มีกระบวนการนี้ ฟีเจอร์ที่ทรงอิทธิพลที่สุดจะไปกองอยู่ที่รากของทุกต้นไม้ทำให้ต้นไม้ทั้งหมดหน้าตาเหมือนกันหมด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ต้นไม้แต่ละต้นจะถูกปลูกให้เติบโตลึกและไม่ถูกตัดแต่งกิ่ง (unpruned) ต้นไม้เชิงลึกเดี่ยวๆ จัดเป็นตัวประมาณค่าที่มีออคบิตต่ำแต่ความแปรปรวนสูง มันเข้ากับข้อมูลฝึกฝนได้แทบจะสมบูรณ์แบบและเปลี่ยนแปลงอย่างรวดเร็วเมื่อข้อมูลขยับเขยื้อน ซึ่งนี่คือองค์ประกอบในอุดมคติสำหรับการนำมาหาค่าเฉลี่ย ตรงกันข้ามกับต้นไม้ตื้นๆ ที่กระบวนการ Boosting เลือกใช้
ตัวอย่างเช่น เมื่อกำหนดให้แถวที่ถูกคัดออกมีค่าที่แท้จริงเท่ากับ 41 และมีต้นไม้ห้าต้นทำนายผลลัพธ์ได้ 30, 45, 38, 52 และ 35 ตามลำดับ ค่าความคลาดเคลื่อนกำลังสองเฉลี่ยของต้นไม้เดี่ยวแต่ละต้นจะเท่ากับ 60.6 ในขณะที่ค่าเฉลี่ยการทำนายของ ensemble ทั้งหมดจะอยู่ที่ 40 ทำให้ค่าความคลาดเคลื่อนกำลังสองของ ensemble เหลือเพียง 1.0 เท่านั้น แสดงให้เห็นว่าการเฉลี่ยสามารถลดความผิดพลาดลงได้อย่างมหาศาลผ่านความเห็นที่ไม่ตรงกันของสมาชิกแต่ละตัว
ในมุมมองทางสถิติ ความไม่เห็นพ้องต้องกัน (disagreement) ระหว่างโมเดลย่อยไม่ใช่ข้อบกพร่องที่ต้องกำจัดทิ้ง แต่เป็นกลไกหลักที่ทำให้ Random Forest มีประสิทธิภาพสูง หากต้นไม้ทุกลำต้นในป่ามีความคิดเห็นเหมือนกันทุกประการ ค่าความแปรปรวนส่วนต่างจะเป็นศูนย์และประสิทธิภาพของโมเดลรวมจะตกลงมาเท่ากับต้นไม้เดี่ยวทันที การออกแบบทุกส่วนของ Random Forest จึงมุ่งเน้นไปที่การสร้างความแตกต่างนี้ให้มากที่สุด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในส่วนของการตรวจสอบความถูกต้อง Scikit-learn มีฟังก์ชัน oob_score=True มาให้ใช้งาน ซึ่งอาศัยข้อมูลราว 37% ที่ตกหล่นไปจากกระบวนการ Bootstrap ของต้นไม้แต่ละต้น นำมาประเมินผลโดยไม่ต้องสูญเสียข้อมูลสำหรับการทดสอบเพิ่มเติม อย่างไรก็ตาม หากมีข้อมูลกลุ่มก้อนเช่นลูกค้าคนเดียวกันปรากฏอยู่ในหลายแถว การประเมินแบบ Out-of-bag อาจเกิดการรั่วไหลของข้อมูลได้เช่นเดียวกับการแบ่งข้อมูลแบบสุ่มทั่วไป
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น