AdaBoost น้อยลงหรือคว่ำง่ายกว่า


20

ฉันได้อ่านข้อความที่ขัดแย้งกัน (ดูเหมือน) หลายฉบับว่า AdaBoost (หรือเทคนิคการส่งเสริมอื่น ๆ ) นั้นมีความเป็นไปได้น้อยหรือมีแนวโน้มที่จะมีน้ำหนักเกินกว่าวิธีการเรียนรู้อื่น ๆ

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


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

คำตอบ:


17

อย่างที่คุณพูดไปมากมีการพูดคุยกันเกี่ยวกับเรื่องนี้และมีทฤษฎีที่ค่อนข้างหนักหน่วงที่ได้รับพร้อมกับที่ฉันต้องยอมรับว่าฉันไม่เคยเข้าใจ จากประสบการณ์การใช้งานจริงของฉัน AdaBoost นั้นค่อนข้างแข็งแกร่งในการ overfitting และ LPBoost (Linear Programming Boosting) ยิ่งกว่านั้นมาก (เนื่องจากฟังก์ชันวัตถุประสงค์ต้องมีการผสมผสานของผู้เรียนที่อ่อนแอซึ่งเป็นรูปแบบของการควบคุมความจุ) ปัจจัยหลักที่มีอิทธิพลต่อมันคือ:

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

  • ระดับเสียงรบกวนในข้อมูล: AdaBoost โดยเฉพาะอย่างยิ่งมีแนวโน้มที่จะ overfitting ในชุดข้อมูลที่มีเสียงดัง ในการตั้งค่าแบบฟอร์มปกตินี้ (RegBoost, AdaBoostReg, LPBoost, QPBoost) จะดีกว่า

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

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


9

ฉันเห็นด้วยกับประเด็นส่วนใหญ่ที่กล่าวถึงในความคิดเห็น tdc อย่างไรก็ตามฉันต้องเพิ่มและแก้ไขบางสิ่ง

  • ดังที่แสดงใน L2Boost โดย Peter Bühlmannเมื่อจำนวนผู้เรียนที่อ่อนแอ (รอบการกระตุ้น) เพิ่มขึ้นความเอนเอียงจะมาบรรจบกันอย่างรวดเร็วในขณะที่ความแปรปรวนเพิ่มขึ้นตามขนาดที่ลดลงทางเรขาคณิตซึ่งหมายความว่ามันจะช้ากว่าวิธีอื่นมากที่สุด
  • มันถูกกล่าวถึงอย่างไม่ถูกต้องในความคิดเห็นของ Zach ว่าดีกว่าป่าสุ่มในแง่ของความพอดี มันผิดอย่างสมบูรณ์ ตามความเป็นจริงตามทฤษฎี (ดูที่กระดาษป่าแบบสุ่มโดย Breiman) ป่าสุ่มนั้นมีภูมิคุ้มกันต่อการมีชีวิตอยู่อย่างสมบูรณ์ตราบใดที่ตัวจําแนกอ่อนแอของมันไม่เหมาะกับข้อมูล
  • แตกต่างจากที่ระบุไว้ในความคิดเห็น tdc วิธีการส่งเสริมส่วนใหญ่มีความไวสูงต่อเสียงการติดฉลากและอาจง่ายเกินไปเมื่อมีสัญญาณรบกวน
  • ในชุดข้อมูลที่อัตราความผิดพลาดของเบย์อยู่ไกลจาก 0 (เช่นฟีเจอร์นั้นไม่ได้เลือกปฏิบัติเพียงพอ) วิธีการเพิ่มประสิทธิภาพก็สามารถรองรับได้อย่างง่ายดายเช่นกัน เนื่องจากพวกเขาพยายามลดข้อผิดพลาดในการฝึกอบรมให้เหลือศูนย์ในความเป็นจริงแม้แต่ตัวแยกประเภทที่ดีที่สุดนั่นคือตัวจําแนกเบย์สามารถเข้าถึงอัตราการผิดพลาด 40%
  • ในที่สุดและสิ่งนี้ยังไม่ได้รับการเผยแพร่ใด ๆ (ที่ดีที่สุดของความรู้ของฉัน) มีชนิดของการ overfitting ซึ่งข้อผิดพลาดทั่วไปไม่เพิ่มขึ้นเมื่อรอบการส่งเสริมเพิ่มขึ้น แต่มันก็ไม่ลดลงเช่นกัน หมายความว่าอัลกอริทึมติดอยู่ใน optima ท้องถิ่น ในสถานการณ์เช่นนี้ข้อผิดพลาดการฝึกอบรมจะลดลงอย่างต่อเนื่องในขณะที่ข้อผิดพลาดการทดสอบยังคงเกือบคงที่ จนถึงตอนนี้เราไม่เคยคิดว่าปรากฏการณ์นี้เป็นตัวบ่งชี้ถึงการ overfitting แต่ฉันเชื่อว่ามันเป็นสัญญาณของการ overfitting และโดยการใช้ผู้เรียนที่มีความอ่อนแอมากขึ้น (แปลก!) จริง ๆ แล้วเราอาจขัดแย้งกับมัน (ประเด็นสุดท้ายนี้ควรพิจารณาด้วยความระมัดระวัง : D)

1
เป็นมูลค่าเพิ่มในคำตอบนี้ที่ฉันอาจได้พบ overfitting ชนิดหลังวันนี้ด้วยทั้ง AdaBoost และ Random Forest ในการตรวจสอบความถูกต้องข้ามข้อผิดพลาดแบบพับออกมารวมกันเป็นค่าคงที่โดยมีตัวประมาณค่าพื้นฐานเพียง 20 ตัวจากนั้นก็เด้งกลับไปรอบ ๆ ค่าคงที่ด้วยความแปรปรวนสูง ความสงสัยของฉันเหมือนกันทั้งหมด: อัลกอริทึมโลภติดอยู่ในท้องถิ่นที่เหมาะสมที่สุด นี่ไม่ใช่การยืนยันสิ่งที่เกิดขึ้น แต่ก็ยินดีที่ได้รู้จักคนอื่นที่มีความคิดเดียวกัน
shadowtalker

@ssdecontrol คุณสามารถแบ่งปันสิ่งที่คุณทำหรือไม่? ฉันต้องการสร้างผลลัพธ์ที่มีความเข้าใจที่ดีขึ้น
saurabh agarwal

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