อัลกอริธึมป่าไม้และต้นไม้ตัดสินใจแบบสุ่ม


14

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

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

แล้วมันทำงานอย่างไร


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

คำตอบ:


23

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

คุณอาจพบว่ามีประโยชน์ในการอ่านคำแนะนำเกี่ยวกับฟอเรสต์แบบสุ่มจากข้อความคุณภาพสูง หนึ่งคือ "Random Forest" โดย Leo Breiman นอกจากนี้ยังมีบทหนึ่งในองค์ประกอบของการเรียนรู้ทางสถิติโดย Hastie และคณะ

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


11

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

คุณอาจต้องการที่จะรู้ว่า "สุ่ม" ในป่าสุ่มมาจากไหน: มีสองวิธีที่การสุ่มถูกฉีดเข้าไปในกระบวนการเรียนรู้ต้นไม้ อันดับแรกคือการสุ่มเลือกจุดข้อมูลที่ใช้ในการฝึกอบรมต้นไม้แต่ละต้นและที่สองคือการสุ่มเลือกคุณลักษณะที่ใช้ในการสร้างต้นไม้แต่ละต้น เนื่องจากต้นไม้ตัดสินใจเดียวมักจะมีข้อมูลมากเกินไปการฉีดสุ่มในลักษณะนี้ทำให้ต้นไม้มีจำนวนมากโดยที่ต้นไม้แต่ละต้นมีความแม่นยำที่ดี . ดังนั้นเมื่อเราใช้ค่าเฉลี่ยของการทำนายจากต้นไม้ทุกต้นเราจะสังเกตเห็นการลดลงของการ overfitting (เปรียบเทียบกับกรณีของการฝึกอบรมต้นไม้ตัดสินใจเดียวเดียวในข้อมูลที่มีทั้งหมด )

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

  1. i=0
  2. ใช้ตัวอย่าง boostrapของ (เช่นการสุ่มตัวอย่างด้วยการเปลี่ยนและมีขนาดเดียวกับ ) ซึ่งเป็นที่แสดงโดยS_iMMSi
  3. ฝึกฝนต้นไม้ -th แสดงเป็นโดยใช้เป็นข้อมูลป้อนเข้า iTiSi
    • กระบวนการฝึกอบรมนั้นเหมือนกับการฝึกอบรมต้นไม้ตัดสินใจยกเว้นความแตกต่างที่แต่ละโหนดในต้นไม้มีเพียงการเลือกคุณสมบัติแบบสุ่มที่ใช้สำหรับการแยกในโหนดนั้น
  1. i=i+1
  2. หากไปที่ขั้นตอนที่ 2 ไม่เช่นนั้นต้นไม้ทั้งหมดจะได้รับการฝึกอบรมดังนั้นการฝึกอบรมในป่าจึงเสร็จสิ้นi<N

โปรดทราบว่าฉันอธิบายอัลกอริธึมเป็นอัลกอริธึมเรียงลำดับ แต่เนื่องจากการฝึกอบรมของต้นไม้ไม่ได้ขึ้นอยู่กับแต่ละอื่น ๆ ตอนนี้สำหรับขั้นตอนการทำนายขั้นแรกให้ทำการทำนายต้นไม้ทุกต้น (เช่น , , ... , ) ในป่าแล้ว:T1T2TN

  • ถ้ามันถูกใช้สำหรับภารกิจการถดถอยให้ใช้ค่าเฉลี่ยของการทำนายเป็นการคาดการณ์ขั้นสุดท้ายของป่าสุ่ม

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

นอกจากนี้มันเป็นสิ่งที่ควรค่าแก่การกล่าวถึงว่ามันเป็นไปได้ที่จะฝึกฝนต้นไม้ในลักษณะที่ต้องอาศัยลำดับและนั่นคือสิ่งที่อัลกอริทึมต้นไม้ไล่ระดับสีไล่ระดับซึ่งเป็นวิธีที่แตกต่างจากป่าสุ่ม


8

ฟอเรสต์แบบสุ่มเป็นอัลกอริธึมการห่อแทนที่จะเป็นอัลกอริธึมการเร่งความเร็ว

ป่าสุ่มสร้างต้นไม้อย่างอิสระโดยใช้ตัวอย่างข้อมูลแบบสุ่ม การใช้งานแบบขนานเป็นไปได้

คุณอาจต้องการตรวจสอบการไล่ระดับสีที่มีการสร้างต้นไม้ตามลำดับที่ต้นไม้ใหม่พยายามแก้ไขข้อผิดพลาดที่ทำไว้ก่อนหน้านี้


6

มันทำงานอย่างไร?

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

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

ทำไมต้องใช้ Random Forest บน Decision Tree แบบธรรมดา? Bias / Variance ทำการปิดการซื้อขาย ป่าสุ่มสร้างจากต้นไม้ที่ง่ายกว่ามากเมื่อเปรียบเทียบกับต้นไม้ตัดสินใจเดี่ยว โดยทั่วไปป่าสุ่มให้ลดข้อผิดพลาดใหญ่เนื่องจากความแปรปรวนและความผิดพลาดเพิ่มขึ้นเล็กน้อยเนื่องจากอคติ


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

3
@AbhayRajSingh - คุณไม่ต้อง "ส่งค่าที่ผิดประเภทไปข้างหน้า" ใน Random Forest ดังที่ Akavall กล่าวว่า "ต้นไม้สร้างขึ้นอย่างอิสระ"
Henry

1

ใช่ดังที่ผู้เขียนได้กล่าวไว้ว่าอัลกอริทึมแบบสุ่มของป่านั้นเป็นถุงไม่ใช่ขั้นตอนวิธีการเพิ่ม

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

การบรรจุถุงโดยทั่วไปและประสบความสำเร็จอย่างมากคือป่าสุ่ม

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

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