ความลึกของการโต้ตอบหมายถึงอะไรใน GBM


30

ฉันมีคำถามเกี่ยวกับพารามิเตอร์ความลึกของการโต้ตอบใน gbm ใน R นี่อาจเป็นคำถาม noob ซึ่งฉันต้องขออภัย แต่พารามิเตอร์ที่ฉันเชื่อว่าหมายถึงจำนวนของโหนดขั้วในต้นไม้โดยทั่วไปบ่งบอกถึงวิธี X ปฏิสัมพันธ์ระหว่างผู้ทำนายหรือไม่ แค่พยายามที่จะเข้าใจวิธีการทำงาน นอกจากนี้ฉันได้รับแบบจำลองที่แตกต่างกันมากถ้าฉันมีชุดข้อมูลที่มีตัวแปรปัจจัยสองตัวที่แตกต่างกันเมื่อเทียบกับชุดข้อมูลเดียวกันยกเว้นตัวแปรตัวประกอบสองตัวนั้นรวมกันเป็นปัจจัยเดียว (เช่นระดับ X ในปัจจัย 1, Y ระดับในปัจจัย 2) ปัจจัย X * Y) หลังมีความหมายมากกว่าเดิม ฉันคิดว่าการเพิ่มความลึกของการมีปฏิสัมพันธ์จะทำให้ความสัมพันธ์นี้ดีขึ้น

คำตอบ:


22

คำตอบก่อนหน้านี้ทั้งคู่นั้นผิด แพ็คเกจ GBM ใช้interaction.depthพารามิเตอร์เป็นจำนวนของการแยกที่จะต้องดำเนินการบนต้นไม้ (เริ่มต้นจากโหนดเดียว) เมื่อแต่ละการแบ่งเพิ่มจำนวนโหนดทั้งหมดโดย 3 และจำนวนโหนดเทอร์มินัลโดย 2 (โหนด {โหนดด้านซ้าย, โหนดด้านขวา, โหนด NA}) จำนวนโหนดทั้งหมดในต้นไม้จะเท่ากับ3 N + 1และจำนวน ของโหนดมินัล2 * N + 1 สิ่งนี้สามารถตรวจสอบได้โดยดูที่ผลลัพธ์ของฟังก์ชัน3* * * *ยังไม่มีข้อความ+12* * * *ยังไม่มีข้อความ+1pretty.gbm.tree

พฤติกรรมค่อนข้างหลอกลวงเนื่องจากผู้ใช้คาดหวังว่าความลึกจะเป็นความลึกของต้นไม้ที่เกิดขึ้น มันไม่ใช่.


N คืออะไรที่นี่: จำนวนโหนด, interaction.depth หรืออย่างอื่น?
Julian

มันเป็นจำนวนของการแยกที่ดำเนินการเริ่มต้นจากโหนดเดียว (เช่นกันความลึกของการโต้ตอบ)
สุ่ม

1
ฉันคิดว่าแต่ละการแบ่งเพิ่มจำนวนเทอร์มินัลโหนดทั้งหมดโดย 1 เท่านั้นดังนั้นสมมติว่าทรีมีการแบ่งเพียงครั้งเดียวจากนั้นก็มี 2 เทอร์มินัลโหนดตอนนี้คุณทำการแยกในหนึ่งในเทอร์มินัลโหนดก่อนหน้านี้ โหนดในขณะนี้ ดังนั้นการเพิ่มขึ้นเป็นเพียงแค่ 1 ฉันจะได้รับสิทธินี้หรือฉันเข้าใจผิดบางอย่าง?
Lily Long

1
@LilyLong มันอาจไม่ชัดเจนทันที แต่จริง ๆ แล้ว gbm จะแยกโหนดออกเป็นสามส่วนลูกที่สามที่จัดกลุ่มค่า NA (เช่นที่ไม่สามารถเปรียบเทียบโดยตรงกับค่าที่กำหนด) นั่นหมายความว่าแต่ละการแบ่งเพิ่มจำนวนโหนดสอง แพคเกจอาจมีวิวัฒนาการตั้งแต่ฉันใช้มันครั้งล่าสุดเพื่อหลีกเลี่ยงการสร้างลูกคนที่สามดังนั้นโปรดตรวจสอบอีกครั้งโดยใช้ฟังก์ชั่น pretty.gbm.tree
สุ่ม

2

ฉันมีคำถามเกี่ยวกับพารามิเตอร์ความลึกของการโต้ตอบใน gbm ใน R นี่อาจเป็นคำถาม noob ซึ่งฉันต้องขออภัย แต่พารามิเตอร์ที่ฉันเชื่อว่าหมายถึงจำนวนของโหนดขั้วในต้นไม้โดยทั่วไปบ่งบอกถึงวิธี X ปฏิสัมพันธ์ระหว่างผู้ทำนายหรือไม่

ลิงก์ระหว่าง interaction.depth และจำนวนโหนดเทอร์มินัล

หนึ่งที่จะเห็นinteraction.depthว่าเป็นจำนวนของการแยกปม interaction.depthคงที่ k จะส่งผลในต่อมน้ำกับ k + 1 โหนดขั้ว (ถนัดโหนด NA) ดังนั้นเรา:

ผมnเสื้ออีRaเสื้อผมโอn.dอีพีเสื้อชั่วโมง=#{TอีRม.ผมnaล.ยังไม่มีข้อความโอdอีs}+1

เชื่อมโยงระหว่าง interaction.depth และลำดับการโต้ตอบ

ลิงก์ระหว่างinteraction.depthและลำดับการโต้ตอบนั้นน่าเบื่อกว่า

แทนการให้เหตุผลกับ interaction.depth ให้เหตุผลกับจำนวนโหนดสถานีซึ่งเราจะเรียกว่าJ

ตัวอย่าง: สมมติว่าคุณมีเทอร์มินัล J = 4 (interaction.depth = 3) คุณสามารถ:

  1. ทำการแยกแรกบนรูตจากนั้นแยกที่สองบนโหนดด้านซ้ายของรูทและแบ่งที่สามบนโหนดด้านขวาของรูท ลำดับการโต้ตอบสำหรับต้นไม้นี้จะเป็น 2
  2. ทำการแยกแรกบนรูทจากนั้นก็แยกที่สองบนโหนดด้านซ้าย (ตามลำดับขวา) ของรูทและอีกฝั่งที่สามบนโหนดนี้ที่เหลือ (ขวาตามลำดับ) ลำดับการโต้ตอบสำหรับต้นไม้นี้จะเป็น 3

Pม.ผมn(J-1,n)

1

คำตอบก่อนหน้านี้ไม่ถูกต้อง

ตอจะมีการโต้ตอบความลึกของ 1 (และมีสองใบ) แต่ interaction.depth = 2 ให้สามใบ

ดังนั้น: NumberOfLeaves = interaction.depth + 1


0

ที่จริงแล้วคำตอบก่อนหน้านี้ไม่ถูกต้อง

ยังไม่มีข้อความ=2(K+1)-1L=2K
สามารถแสดงสูตร 2 สูตรก่อนหน้านี้ได้อย่างง่ายดาย: ต้นไม้ที่มีความลึก K สามารถมองเห็นได้ว่ามี K + 1 ระดับ k ตั้งแต่ 0 (ระดับราก) ถึง K (ระดับใบไม้)

2k

ยังไม่มีข้อความ=Σk=0K2k)

ซึ่งเทียบเท่ากับ:

ยังไม่มีข้อความ=2(K+1)-1

0

คุณสามารถลอง

ตาราง (ทำนาย (gbm (y ~., data = TrainingData, การกระจาย = "gaussian", verbose = FALSE, n.trees = 1, การหดตัว = 0.01, bag.fraction = 1, interaction.depth = 1), n.trees = 1))

และดูว่ามีค่าคาดการณ์ที่ไม่ซ้ำกัน 2 ค่าเท่านั้น interaction.depth = 2 คุณจะได้รับ 3 ค่าที่ทำนายได้ และโน้มน้าวตัวเอง


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