การประมาณความผิดพลาดนอกถุงเพื่อเพิ่ม?


9

ในฟอเรสต์ฟอเรสต์ต้นไม้แต่ละต้นจะเติบโตขนานกันบนตัวอย่าง Boostrap ที่เป็นเอกลักษณ์ของข้อมูล เนื่องจากตัวอย่าง Boostrap แต่ละอันคาดว่าจะมีการสังเกตการณ์ที่เป็นเอกลักษณ์ประมาณ 63% ทำให้มีการสำรวจประมาณ 37% ของการสังเกตออกซึ่งสามารถใช้สำหรับการทดสอบต้นไม้

ตอนนี้ดูเหมือนว่าใน Stochastic Gradient Boosting ยังมีการคล้ายกับค่าใน RF:OOBอีRRโอR

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

แหล่งที่มา: Ridgeway (2007) , ส่วน 3.3 (หน้า 8)

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

ดังนั้นสิ่งนี้เรียกว่าการประมาณค่าข้อผิดพลาด "out-of-bag" สำหรับฉันมันดูเหมือนจะไม่ "ออก" ของกระเป๋าใด ๆ ตั้งแต่การสังเกตได้เห็นแล้ว?


1
ดูการอภิปรายที่นี่github.com/scikit-learn/scikit-learn/pull/1806 คุณไม่ได้เป็นคนเดียวในการแสดงความกังวลเกี่ยวกับวิธีการคำนวณ OOB
mpiktas

ขอบคุณสำหรับลิงค์ แต่น่าเสียดายที่ผู้ร่วมกระทู้ทั้งหมดดูเหมือนจะหายไปเหมือนฉัน!
แอนทอน

1
ไม่จริง ดูgithub.com/scikit-learn/scikit-learn/pull/2188 ในการกระทำนี้ให้คะแนน OOB ถูกเปลี่ยนเป็นการปรับปรุง OOB วิธีที่ gbm ทำ ฉันไม่ทราบว่าแนวคิดนี้ทำงานได้อย่างแม่นยำ แต่จากสิ่งที่ฉันรวบรวมได้ตัวอย่าง oob สำหรับต้นไม้ปัจจุบันจะใช้ในการคำนวณการปรับปรุง OOB ฉันไม่สามารถหาสูตรทางคณิตศาสตร์ได้ดังนั้นจึงจำเป็นต้องขุดลงในโค้ด gbm เพื่อดูว่าการคำนวณการปรับปรุงนี้แม่นยำเพียงใด
mpiktas

@Antoine คำถามที่น่าตื่นเต้นจริงๆ! พบคำตอบที่ชัดเจน?
Soren Havelund Welling

1
ไม่น่าเสียดาย คำแนะนำบางอย่างได้รับจากลิงก์ด้านบน (ในความคิดเห็น), เธรดนี้และเธรดอื่นนี้ นี่ทำให้ฉันบ้าอย่างสมบูรณ์ สักวันหนึ่งมีคนส่งอีเมลไปหาดร. ฟรีดแมน / แฮสซี่ ... ขอบคุณสำหรับความสนใจของคุณ
แอนทอน

คำตอบ:


2

ตอบเพียงบางส่วน (และเพิ่มคำถามใหม่ให้กับคำถามของคุณ)

การติดตั้ง gbm ใน R http://www.rdocumentation.org/packages/gbm/functions/gbm มีพารามิเตอร์สองตัวในการปรับค่าบางค่า

a) train.fractionจะกำหนดสัดส่วนของข้อมูลที่ใช้ในการฝึกอบรมต้นไม้ทั้งหมดและข้อมูล 1- train.fractionจะเป็นข้อมูล OOB ที่แท้จริง (นอกถุง)

b) bag.fractionจะกำหนดสัดส่วนของข้อมูลการฝึกอบรมที่จะใช้ในการสร้างต้นไม้ถัดไปในการเพิ่ม ดังนั้นอาจมีข้อมูลบางอย่างที่ไม่เคยใช้สำหรับการสร้างแผนภูมิใด ๆ และสามารถใช้เป็นข้อมูล OOB ได้อย่างแท้จริง (แต่ไม่น่าเป็นไปได้โปรดดูคำถามด้านล่าง)

ซึ่งทำให้ฉันมีคำถาม การวิเคราะห์ข้อมูลของคุณ 37% ว่าเป็น OOB นั้นเป็นจริงสำหรับต้นไม้หนึ่งต้น แต่โอกาสที่จะมีข้อมูลใด ๆ ที่ไม่ได้ใช้ในต้นไม้ใด ๆ นั้นมีขนาดเล็กกว่ามาก - (มันต้องอยู่ใน OOB สำหรับต้นไม้ทั้งหมด- ความเข้าใจของฉันคือต้นไม้แต่ละต้นทำ bootstrap ของมันเอง) ดังนั้นใน RandomForests ไม่น่าจะเป็น OOB ใด ๆ ในการทดสอบป่า และการนำไปใช้งานแบบสุ่มใน R (ขึ้นอยู่กับรหัสดั้งเดิมของ Breiman) พูดถึง OOB มากมาย (เช่นข้อมูลผลลัพธ์และดูhttp://www.rdocumentation.org/packages/randomForest/functions/randomForest )0.37nเสื้อRอีอีsnเสื้อRอีอีerr.rateconfusion

ฉันไม่รู้ว่าจะตอบอย่างไร (และฉันขอขอบคุณ (+1) สำหรับการถามคำถามและทำให้ฉันรู้ว่าฉันไม่เข้าใจลักษณะของป่าสุ่มนี้ ทางออกที่เป็นไปได้คือมี bootstrap เพียงอันเดียวและต้นไม้ทั้งหมดสร้างจากมัน - แต่เท่าที่ฉันรู้มันไม่ใช่อย่างนั้น


สำหรับ RF / Bagging ไม่มีปัญหา: ในขั้นตอนที่กำหนดในกระบวนการสร้างชุดการสังเกตใด ๆ ในชุดข้อมูลดั้งเดิมสามารถส่งไปยังต้นไม้ทั้งหมดที่ผ่านการฝึกอบรมในตัวอย่าง Boostrap ที่ปราศจากการสังเกตนี้ ประมาณหนึ่งในสาม (~ 37%) ของจำนวนต้นไม้ทั้งหมดจะเป็นไปตามเงื่อนไขนี้ นอกจากนี้หากปล่อยให้ต้นไม้เหล่านี้ลงคะแนนและเข้าชั้นเรียนที่ได้รับความนิยมสูงสุด จำนวนครั้งที่การทำนายแตกต่างจากป้ายกำกับที่แท้จริงของการสังเกตโดยเฉลี่ยในทุกชั้นเรียนให้การประมาณข้อผิดพลาดนอกถุง
แอนทอน

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

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

@ user2835597 ขอบคุณสำหรับคำอธิบายเกี่ยวกับ RF ดังนั้นข้อผิดพลาดของ OOB ของ RF คือการประเมินต้นไม้เพียงหนึ่งในสามของป่า (ซึ่งไม่ได้ดูมีประโยชน์สำหรับฉัน) เรียนรู้บางสิ่งบางอย่างทุกวัน
Jacques Wainer

อย่างไรก็ตามพารามิเตอร์ train.fraction น่าจะเป็นคำตอบสำหรับคำถามของคุณ การดำเนินการ sklearn ยังมีพารามิเตอร์ที่คล้ายกันตัวอย่างย่อย (ดูscikit-learn.org/stable/modules/generated/ …
Jacques Wainer

-2

ฉันเชื่อว่าพวกเขาประเมินราคากระเป๋าในแต่ละขั้นตอน เนื่องจากมีการเพิ่มผลลัพธ์ของทุกขั้นตอน (ด้วยค่าสัมประสิทธิ์) จึงสามารถเพิ่มข้อผิดพลาด OOB ด้วยค่าสัมประสิทธิ์เดียวกันได้

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