ทำไมเราต้องมี XGBoost และ Random Forest?


25

ฉันไม่ชัดเจนเกี่ยวกับแนวคิดสองประการ:

  1. XGBoost แปลงผู้เรียนที่อ่อนแอเป็นผู้เรียนที่แข็งแกร่ง อะไรคือข้อดีของการทำเช่นนี้? รวมผู้เรียนที่อ่อนแอหลายคนเข้าด้วยกันแทนที่จะใช้ต้นไม้ต้นเดียว?

  2. ป่าสุ่มใช้ตัวอย่างต่าง ๆ จากต้นไม้เพื่อสร้างต้นไม้ อะไรคือข้อดีของวิธีนี้แทนที่จะใช้ต้นไม้เอกพจน์

คำตอบ:


35

เริ่มต้นด้วยคำถามที่สองของคุณง่ายกว่าจากนั้นไปที่คำถามแรก

การห่อ

ป่าสุ่มเป็นขั้นตอนวิธีการบรรจุถุง จะช่วยลดความแปรปรวน

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

ป่าสุ่มเป็นสิ่งที่เราเรียกว่าการบรรจุถุงที่นำไปใช้กับต้นไม้ตัดสินใจ แต่มันไม่ต่างจากอัลกอริทึมการบรรจุถุงอื่น ๆ

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

การส่งเสริม

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

มีสองอัลกอริธึมหลัก:

  • Adaboost: นี่คืออัลกอริทึมดั้งเดิม คุณบอกรุ่นต่อ ๆ ไปเพื่อลงโทษการสังเกตการณ์ที่ผิดพลาดมากขึ้นจากรุ่นก่อนหน้า
  • การไล่ระดับสีแบบค่อยเป็นค่อยไป: คุณฝึกฝนแต่ละโมเดลในภายหลังโดยใช้ส่วนที่เหลือ (ความแตกต่างระหว่างค่าที่ทำนายและค่าจริง)

ในวงดนตรีเหล่านี้ผู้เรียนพื้นฐานของคุณจะต้องอ่อนแอ ถ้ามันเหมาะสมกับข้อมูลจะไม่มีการตกค้างหรือข้อผิดพลาดใด ๆ สำหรับรุ่นถัดไปที่จะสร้าง ทำไมแบบจำลองที่ดีเหล่านี้คืออะไร การแข่งขันส่วนใหญ่ในเว็บไซต์อย่าง Kaggle ได้รับรางวัลโดยใช้ต้นไม้ที่ช่วยไล่ระดับสี วิทยาศาสตร์ข้อมูลเป็นวิทยาศาสตร์เชิงประจักษ์ "เพราะมันใช้ได้" ดีพอ อย่างไรก็ตามโปรดสังเกตว่าการเพิ่มแบบจำลองสามารถทำให้ได้มากเกินไป (แม้ว่าจะไม่ใช่เรื่องทั่วไป)

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

[บันทึกประวัติศาสตร์ที่น่าสนใจ: การเพิ่มประสิทธิภาพเดิมเป็นสิ่งประดิษฐ์เชิงทฤษฎีที่ได้รับแรงบันดาลใจจากคำถาม " เราสามารถสร้างแบบจำลองที่แข็งแกร่งขึ้นได้โดยใช้แบบจำลองที่อ่อนแอ "]


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


1
การส่งเสริมการลดอคติโดยการทำซ้ำแบบจำลองที่เหลือและความแปรปรวนโดยการเฉลี่ยถ่วงน้ำหนัก; cf เลย § 5.5 อคติ, ความแปรปรวนและความเสถียร , หน้า 118, การส่งเสริม: รากฐานและอัลกอริทึม , Robert E. Schapire, Yoav Freund
Emre

@ เกือบจะถูกต้องแล้ว ใครบางคนแก้ไขโพสต์ของฉันและการเปลี่ยนแปลงลดโดยเพิ่มขึ้น ฉันเปลี่ยนกลับแล้ว
Ricardo Cruz

8

เมื่อคุณสร้างทรีคุณต้องกำหนดเกณฑ์บางอย่างสำหรับการแยกโหนด เหล่านี้รวมถึงตัวชี้วัดเช่น Information Gain และดัชนี Gini สิ่งเหล่านี้เป็นวิธีการแก้ปัญหาพวกเขาไม่รับประกันว่าจะมีการแบ่งที่ดีที่สุด

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

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


1

ฉันจะเพิ่มส่วนเพิ่มเติมเล็กน้อยลงในคำตอบที่ดี ปัญหาหลักคือ overfitting ทันทีที่คุณมีพารามิเตอร์มากกว่าหนึ่งตัวและเพิ่มฟังก์ชั่นที่ไม่ใช่เชิงเส้นอัลกอริทึมทั้งหมดจะเริ่มมีความเหมาะสมมากขึ้น พวกเขาเห็นบางสิ่งในข้อมูลที่ไม่มีอยู่ เช่นเมื่อมันมืดหรือหมอกเป็นคนที่แข็งแกร่งมักจะเห็นสิ่งต่าง ๆ ในความมืด / หมอกที่ไม่มีอยู่ อัลกอริธึมการคำนวณเกือบทั้งหมดทำมากกว่าความเป็นจริงมากกว่ามนุษย์ แม้แต่การถดถอยเชิงเส้นก็เริ่มแสดงสัมประสิทธิ์แปลก ๆ เมื่อตัวแปรมีความสัมพันธ์สูง หากไม่มีการตัดสินใจมากเกินไปต้นไม้การตัดสินใจตามปกติซึ่งอัลกอริธึมเหล่านั้นอิงนั้นน่าจะดีกว่า Random Forest หรือ XGBoost

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

เครือข่ายนิวรัลบางแห่งและโดยเฉพาะอย่างยิ่งเครือข่ายนิวรัลแบบ convolutional ดูเหมือนจะมีกำลังไฟเหลือน้อย ในขณะเดียวกันความคิดดั้งเดิมของการเชื่อมต่อโครงข่ายประสาทเทียมอย่างสมบูรณ์ล้มเหลวด้วยจำนวนของเซลล์ประสาทที่สูงเนื่องจากการ overfitting

ความเป็นไปได้ที่สำคัญในการต่อสู้ overfitting คือ:

  1. การสุ่มตัวอย่าง
  2. เฉลี่ยหลายรุ่น
  3. การสุ่มแบบจำลอง (การลดลงของเซลล์ประสาทในขณะฝึกเครือข่ายประสาท)

ถ้าฉันเข้าใจอัลกอริทึมอย่างถูกต้องทั้ง Random Forest และ XGBoost ทำการสุ่มตัวอย่างและค่าเฉลี่ยในหลาย ๆ โมเดลและจัดการเพื่อลดการโอเวอร์โหลด

ในการแข่งขันการรับรู้ภาพ ImageNet แบบจำลองที่ดีที่สุดสำหรับปี 2559 (Shao et al) เป็นการรวมกันของแบบจำลองที่ดีหลายตัว บางคนชนะการแข่งขันในปีก่อนหน้า รุ่นนี้มีข้อผิดพลาดน้อยกว่า 20% จากรุ่นใด ๆ ที่เป็นพื้นฐาน นี่เป็นวิธีที่ค่าเฉลี่ยในหลาย ๆ โมเดลอาจแข็งแกร่งในการต่อสู้กับการมีน้ำหนักเกิน

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