Random Forest
Random Forest (RF) คือชุด Decision Tree ที่ Decision Tree แต่ละต้นได้รับการฝึกด้วยสัญญาณรบกวนแบบสุ่มที่เฉพาะเจาะจง ป่าแบบสุ่มเป็นรูปแบบที่นิยมที่สุดของชุดการตัดสินใจแบบต้นไม้ หน่วยนี้จะกล่าวถึงเทคนิคต่างๆ ในการสร้างต้นไม้การตัดสินใจอิสระเพื่อเพิ่มโอกาสในการสร้าง Random Forest ที่มีประสิทธิภาพ
การจัดเก็บ
Bagging (bootstrap aggregating) หมายถึงการฝึกต้นไม้การตัดสินใจแต่ละต้นจากชุดย่อยแบบสุ่มของตัวอย่างในชุดการฝึก กล่าวคือ ต้นไม้การตัดสินใจแต่ละต้นใน Random Forest ได้รับการฝึกจากชุดย่อยที่แตกต่างกันของตัวอย่าง
การบรรจุถุงเป็นเรื่องแปลก ต้นไม้การตัดสินใจแต่ละต้นได้รับการฝึกด้วยจํานวนตัวอย่างเดียวกันกับในชุดการฝึกเดิม เช่น หากชุดข้อมูลการฝึกเดิมมี 60 ตัวอย่าง ระบบจะฝึกต้นไม้การตัดสินใจแต่ละต้นด้วยตัวอย่าง 60 รายการ อย่างไรก็ตาม การแบ่งกลุ่มจะฝึกต้นไม้การตัดสินใจแต่ละต้นเฉพาะกับชุดย่อย (โดยทั่วไปคือ 67%) ของตัวอย่างเหล่านั้น ดังนั้น ตัวอย่าง 40 รายการนั้นในชุดย่อยจึงต้องนํามาใช้ซ้ำขณะฝึกแผนผังการตัดสินใจหนึ่งๆ การนำมาใช้ซ้ำนี้เรียกว่าการฝึก "ด้วยการแทนที่"
ตัวอย่างเช่น ตารางที่ 6 แสดงวิธีที่การแบ่งกลุ่มตัวอย่างอาจกระจายตัวอย่าง 6 รายการไปยังต้นไม้การตัดสินใจ 3 ต้น โปรดสังเกตสิ่งต่อไปนี้
- ต้นไม้การตัดสินใจแต่ละต้นจะฝึกด้วยตัวอย่างทั้งหมด 6 รายการ
- ต้นไม้การตัดสินใจแต่ละต้นจะฝึกจากชุดตัวอย่างที่แตกต่างกัน
- แผนภูมิการตัดสินใจแต่ละแผนภูมิใช้ตัวอย่างบางอย่างซ้ำ เช่น มีการใช้ตัวอย่างที่ 4 2 ครั้งในการฝึกแผนผังการตัดสินใจ 1 ดังนั้น น้ำหนักที่เรียนรู้ของตัวอย่างที่ 4 จะเพิ่มขึ้นเป็น 2 เท่าในแผนผังการตัดสินใจ 1
ตาราง 6 การบรรจุตัวอย่างการฝึก 6 รายการไว้ในต้นไม้การตัดสินใจ 3 ต้น ตัวเลขแต่ละตัวแสดงจํานวนครั้งที่ตัวอย่างการฝึก (#1-6) ซ้ำกันในชุดข้อมูลการฝึกของต้นไม้การตัดสินใจหนึ่งๆ (1-3)
ตัวอย่างการฝึกอบรม | ||||||
---|---|---|---|---|---|---|
#1 | #2 | #3 | #4 | #5 | #6 | |
ชุดข้อมูลต้นฉบับ | 1 | 1 | 1 | 1 | 1 | 1 |
แผนภูมิการตัดสินใจ 1 | 1 | 1 | 0 | 2 | 1 | 1 |
แผนภูมิการตัดสินใจ 2 | 3 | 0 | 1 | 0 | 2 | 0 |
แผนภูมิการตัดสินใจ 3 | 0 | 1 | 3 | 1 | 0 | 1 |
ใน bagging ต้นไม้การตัดสินใจแต่ละต้นได้รับการฝึกเกือบทุกครั้งจากจํานวนตัวอย่างทั้งหมดในชุดการฝึกเดิม การฝึกต้นไม้การตัดสินใจแต่ละต้นด้วยตัวอย่างมากหรือน้อยมีแนวโน้มที่จะลดคุณภาพของ Random Forest
แม้ว่าจะไม่ได้อยู่ในบทความต้นฉบับเกี่ยวกับ Random Forest แต่บางครั้งการสุ่มตัวอย่างตัวอย่างก็ทําแบบ "ไม่แทนที่" กล่าวคือ ตัวอย่างการฝึกอบรมต้องไม่ปรากฏมากกว่า 1 ครั้งในชุดการฝึกอบรมต้นไม้การตัดสินใจ เช่น ในตารางก่อนหน้า ค่าทั้งหมดจะเป็น 0 หรือ 1
bootstrap_training_dataset=False
การสุ่มตัวอย่างแอตทริบิวต์
การสุ่มตัวอย่างแอตทริบิวต์หมายความว่าแทนที่จะมองหาเงื่อนไขที่ดีที่สุดในฟีเจอร์ทั้งหมดที่มี ระบบจะทดสอบเฉพาะฟีเจอร์ชุดย่อยแบบสุ่มในแต่ละโหนด ระบบจะสุ่มชุดฟีเจอร์ที่ทดสอบในแต่ละโหนดของต้นไม้การตัดสินใจ
แผนผังการตัดสินใจต่อไปนี้แสดงการสุ่มตัวอย่างแอตทริบิวต์ / ฟีเจอร์ ที่นี่มีการฝึกแผนผังการตัดสินใจด้วยฟีเจอร์ 5 รายการ (f1-f5) โหนดสีน้ำเงินแสดงถึงฟีเจอร์ที่ทดสอบแล้ว ส่วนโหนดสีขาวแสดงถึงฟีเจอร์ที่ยังไม่ได้ทดสอบ เงื่อนไขสร้างขึ้นจากฟีเจอร์ที่ทดสอบแล้วดีที่สุด (แสดงด้วยเส้นขอบสีแดง)
รูปที่ 21 การสุ่มตัวอย่างแอตทริบิวต์
อัตราส่วนของการสุ่มตัวอย่างแอตทริบิวต์เป็นไฮเปอร์พารามิเตอร์การถ่วงน้ำหนักที่สำคัญ รูปภาพก่อนหน้าใช้อัตราส่วนประมาณ ⅗ การใช้งาน Random Forest หลายรายการจะทดสอบ 1/3 ของฟีเจอร์สําหรับการหาค่าประมาณและ sqrt(จํานวนฟีเจอร์) สําหรับการจัดประเภทโดยค่าเริ่มต้น
ใน TF-DF ฮิเปอร์พารามิเตอร์ต่อไปนี้จะควบคุมการสุ่มตัวอย่างแอตทริบิวต์
num_candidate_attributes
num_candidate_attributes_ratio
เช่น หากเป็น num_candidate_attributes_ratio=0.5
ระบบจะทดสอบฟีเจอร์ครึ่งหนึ่งในแต่ละโหนด
การปิดใช้การปรับสมดุลต้นไม้การตัดสินใจ
ต้นไม้การตัดสินใจแต่ละต้นในป่าแบบสุ่มได้รับการฝึกฝนโดยไม่มีการตัดแต่ง (ดูหัวข้อการประมาณที่มากเกินไปและการลดขนาด) ซึ่งจะทําให้เกิดต้นไม้ที่ซับซ้อนเกินไปและมีคุณภาพการคาดการณ์ต่ำ ระบบจะรวมต้นไม้เข้าด้วยกันเพื่อให้การคาดการณ์โดยรวมแม่นยำยิ่งขึ้นแทนที่จะใช้การปรับรูปแบบต้นไม้แต่ละต้น
เราคาดหวังว่าความแม่นยำของการฝึกและทดสอบของ Random Forest จะแตกต่างกัน ความแม่นยำในการฝึกของ Random Forest โดยทั่วไปจะสูงกว่ามาก (บางครั้งเท่ากับ 100%) อย่างไรก็ตาม ความแม่นยำในการฝึกที่สูงมากใน Random Forest นั้นปกติและไม่ได้บ่งชี้ว่า Random Forest มีการประมาณค่ามากเกินไป
แหล่งที่มาของความสุ่ม 2 แหล่ง (การแบ่งกลุ่มและการสุ่มตัวอย่างแอตทริบิวต์) ช่วยเพิ่มความเป็นอิสระแบบสัมพัทธ์ระหว่างต้นไม้การตัดสินใจ ความเป็นอิสระนี้จะช่วยแก้ไขการประมาณที่มากเกินไปของต้นไม้การตัดสินใจแต่ละต้น ด้วยเหตุนี้ จึงเป็นชุดค่าผสมที่ไม่ฟิตมากเกินไป เราจะแสดงผลลัพธ์ที่ไม่น่าจะเกิดขึ้นนี้ในหน่วยถัดไป
ป่าแบบสุ่มบริสุทธิ์จะฝึกโดยไม่ต้องใช้ความลึกสูงสุดหรือจํานวนการสังเกตการณ์ขั้นต่ำต่อใบ ในทางปฏิบัติ การจํากัดความลึกสูงสุดและจํานวนการสังเกตขั้นต่ำต่อใบมีประโยชน์ โดยค่าเริ่มต้น ป่าแบบสุ่มหลายแห่งจะใช้ค่าเริ่มต้นต่อไปนี้
- ความลึกสูงสุดประมาณ 16
- จํานวนการสังเกตขั้นต่ำต่อใบประมาณ 5 รายการ
คุณสามารถปรับแต่งไฮเปอร์พารามิเตอร์เหล่านี้ได้
ความชัดเจนของเสียงรบกวน
เหตุใดสัญญาณรบกวนแบบสุ่มจึงช่วยปรับปรุงคุณภาพของ Random Forest ได้ รูปที่ 22 แสดงการคาดการณ์ของต้นไม้การตัดสินใจแบบคลาสสิก (ที่มีการกรอง) และ Random Forest ที่ผ่านการฝึกจากตัวอย่างปัญหา 2 มิติง่ายๆ 2-3 ตัวอย่างที่มีรูปแบบรูปวงรี เพื่อแสดงให้เห็นประโยชน์ของสัญญาณรบกวนแบบสุ่ม
รูปแบบรูปไข่เป็นรูปแบบที่อัลกอริทึมของต้นไม้การตัดสินใจและป่าการตัดสินใจเรียนรู้ได้ยากมากเมื่อใช้เงื่อนไขที่สอดคล้องกับแกน จึงเหมาะที่จะใช้เป็นตัวอย่าง โปรดทราบว่าต้นไม้การตัดสินใจที่ตัดแล้วจะให้การคาดการณ์ที่มีคุณภาพไม่เท่ากับ Random Forest
รูปที่ 22 ข้อมูลจากการสังเกตการณ์โดยตรงเทียบกับการคาดการณ์ที่สร้างขึ้นโดยต้นไม้การตัดสินใจที่มีการลดขนาดแล้วต้นเดียว และการคาดการณ์ที่สร้างขึ้นโดย Random Forest
ผังถัดไปแสดงการคาดการณ์ของแผนผังการตัดสินใจ 3 รายการแรกที่ไม่ได้ตัดแต่งของป่าแบบสุ่ม กล่าวคือ แผนผังการตัดสินใจทั้งหมดได้รับการฝึกด้วยชุดค่าผสมต่อไปนี้
- ถุง
- การสุ่มตัวอย่างแอตทริบิวต์
- ปิดใช้การตัด
โปรดทราบว่าการคาดการณ์แต่ละรายการของแผนผังการตัดสินใจ 3 รายการนี้แย่กว่าการคาดการณ์ของแผนผังการตัดสินใจที่มีการลดขนาดในรูปภาพก่อนหน้า อย่างไรก็ตาม เนื่องจากข้อผิดพลาดของต้นไม้การตัดสินใจแต่ละต้นมีความสัมพันธ์กันเพียงเล็กน้อย ต้นไม้การตัดสินใจ 3 ต้นจึงรวมกันเป็นกลุ่มเพื่อสร้างการคาดการณ์ที่มีประสิทธิภาพ
รูปที่ 23 แผนภูมิการตัดสินใจแบบไม่ตัด 3 รายการที่จะสร้างชุดค่าผสมที่มีประสิทธิภาพ
เนื่องจากไม่มีการตัดต้นไม้การตัดสินใจของ Random Forest การฝึก Random Forest จึงไม่จำเป็นต้องใช้ชุดข้อมูลที่ใช้ตรวจสอบ ในทางปฏิบัติและโดยเฉพาะอย่างยิ่งกับชุดข้อมูลขนาดเล็ก ควรฝึกโมเดลโดยใช้ข้อมูลที่มีอยู่ทั้งหมด
เมื่อฝึกแรนดอมฟอเรสต์ การเพิ่มต้นไม้การตัดสินใจจะทําให้ข้อผิดพลาดลดลงเกือบทุกครั้ง กล่าวคือ คุณภาพของโมเดลจะดีขึ้นเกือบทุกครั้ง ใช่ การเพิ่ม Decision Tree มักจะลดข้อผิดพลาดของ Random Forest เสมอ กล่าวคือ การเพิ่ม Decision Tree จะไม่ทําให้ Random Forest ปรับให้พอดีมากเกินไป เมื่อถึงจุดหนึ่ง โมเดลก็จะหยุดปรับปรุง Leo Breiman เคยกล่าวไว้ว่า "Random Forest จะไม่พอดีเกินจริงเมื่อเพิ่มต้นไม้มากขึ้น"
เช่น ผังต่อไปนี้แสดงการประเมินการทดสอบของโมเดล Random Forest เมื่อเพิ่ม Decision Tree มากขึ้น ความแม่นยำจะเพิ่มขึ้นอย่างรวดเร็วจนกว่าจะถึงจุดสูงสุดที่ประมาณ 0.865 อย่างไรก็ตาม การเพิ่ม Decision Tree จะไม่ทําให้ความแม่นยําลดลง กล่าวคือ โมเดลจะไม่พอดีเกินไป ลักษณะการทำงานนี้จะ (ส่วนใหญ่) เป็นจริงเสมอและไม่ขึ้นอยู่กับไฮเปอร์พารามิเตอร์
รูปที่ 24 ความแม่นยำจะยังคงเดิมเมื่อเพิ่มต้นไม้การตัดสินใจลงในแรนดอมฟอเรสต์อีก