อัลกอริธึมทรีถดถอยด้วยโมเดลการถดถอยเชิงเส้นในแต่ละใบไม้


14

ฉบับย่อ:ฉันกำลังมองหาแพ็คเกจ R ที่สามารถสร้างแผนภูมิการตัดสินใจในขณะที่ใบไม้แต่ละใบในแผนผังการตัดสินใจเป็นรูปแบบการถดถอยเชิงเส้นเต็มรูปแบบ AFAIK ไลบรารีrpartสร้างแผนผังการตัดสินใจที่ตัวแปรตามคงที่ในแต่ละใบไม้ มีห้องสมุดอื่น (หรือการrpartตั้งค่าที่ฉันไม่ทราบ) ที่สามารถสร้างต้นไม้ดังกล่าวได้หรือไม่?

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

อัลกอริทึมเป็นดังนี้:

  1. เริ่มต้นด้วยชุดข้อมูลแบบเต็มซึ่งเป็นโหนดรูทของทรี เลือกโหนดนี้และเรียกว่าNN
  2. สร้างรูปแบบการถดถอยเชิงเส้นกับข้อมูลในNN
  3. หากโมเดลเชิงเส้นของNสูงกว่าขีด จำกัด บางθ R 2 แสดงว่าเราเสร็จด้วยNดังนั้นให้ทำเครื่องหมายNR2NθR2NNเป็นใบและข้ามไปยังขั้นตอนที่ 5
  4. ลองตัดสินใจแบบสุ่มและเลือกหนึ่งที่มีอัตราผลตอบแทนที่ดีที่สุดR 2ในโหนดย่อยนี้: nR2
    • เลือกตัวแปรอิสระแบบสุ่มเช่นเดียวกับเกณฑ์แบบสุ่มθ iviθiฉัน
    • การตัดสินใจแยกชุดข้อมูลของN เป็นสองโหนดใหม่ Nและ~ NviθiNN^N~ N
    • สร้างแบบจำลองการถดถอยเชิงเส้นทั้งNและ~ NและคำนวณของพวกเขาR 2 (เรียกพวกเขาrและ~ RN^N~R2r^r~ )
    • จากทั้งหมดที่ tuples ( วีฉัน , θ ฉัน , R , ~ R )เลือกหนึ่งที่มีสูงสุดเมตรฉันn ( R , ~ R ) นี้อัตราผลตอบแทนการตัดสินใจใหม่ในต้นไม้และNมีสองโหนดย่อยใหม่Nและ~ Nn(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. เรามีการประมวลผลเสร็จแล้วNเลือกโหนดใหม่Nซึ่งยังไม่ได้ประมวลผลและกลับไปที่ขั้นตอนที่ 2 หากโหนดทั้งหมดได้รับการประมวลผลอัลกอริทึมจะสิ้นสุดลงNN

สิ่งนี้จะสร้างทรีการตัดสินใจซ้ำซึ่งแบ่งข้อมูลออกเป็นส่วนย่อย ๆ และคำนวณโมเดลเชิงเส้นในแต่ละส่วนเหล่านั้น

ขั้นตอนที่ 3 เป็นเงื่อนไขการออกซึ่งป้องกันไม่ให้อัลกอริทึมจากการล้น แน่นอนว่ายังมีเงื่อนไขการออกจากที่เป็นไปได้อื่น ๆ :

  • Exit ถ้าความลึก 's ในต้นไม้อยู่เหนือθ d อีพีทีเอชNθdepth
  • Exit ถ้าชุดข้อมูลในมีขนาดเล็กกว่าθ d เสื้อs อีทีNθdataset

มีอัลกอริทึมในแพ็คเกจ R หรือไม่?


4
ลองดูแพ็คเกจปาร์ตี้และดูว่าสิ่งนี้เหมาะสมกับความต้องการของคุณหรือไม่ มันสามารถรองรับโมเดลหลายประเภทในโหนดของต้นไม้ IIRC
Reinstate Monica - G. Simpson

คำตอบ:


11

แม้ว่าพวกเขาจะทำงานแตกต่างจากอัลกอริทึมของคุณ แต่ฉันเชื่อว่าคุณจะพบกับ mob () และ FTtree ที่น่าสนใจ สำหรับม็อบ Zeileis ให้ดูที่http://cran.r-project.org/web/packages/party/vignettes/MOB.pdfสำหรับ FTtree ต้นไม้ที่ใช้งานได้ของ Gama จะมีการนำมาใช้ใน Weka และ RWeka ดูhttp://cran.r-project.org/web/packages/RWeka/index.htmlเพื่อดูรายละเอียด


1
+1 สำหรับม็อบซึ่งอนุญาตให้เสียบเกือบทุกรุ่นลงในเฟรมเวิร์กการแบ่งพาร์ติชันแบบซ้ำ
etov

8

แพคเกจRWekaเสนอวิธีการถดถอยมากมาย ในหมู่พวกเขาคุณสามารถค้นหา M5P (M5 Prime) ซึ่งเป็นรูปแบบการถดถอยตามต้นไม้ที่มีสมการเชิงเส้นในใบไม้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการ M5 ดูสิ่งพิมพ์

โค้ดตัวอย่างจะเป็น:

library(RWeka)
M5_model = M5P (Dep_var ~ ., data = train, control = Weka_control(N=F, M=10))
train_predicted = predict(M5_model, train)
test_predicted = predict(M5_model, test)

หากคุณต้องการใช้ชุดถุงด้วยวิธี M5 ลองทำสิ่งต่อไปนี้:

M5_bag = Bagging(Dep_var ~ ., data = train, control = Weka_control(P=100, I = 100, W = list("weka.classifiers.trees.M5P", M = 4)))

หากต้องการดูตัวเลือกการควบคุมสำหรับรุ่น M5P ลอง:

WOW(M5P)

หากคุณต้องการเพิ่มประสิทธิภาพวิธี M5 มีวิธีแก้ไขปัญหาในcaretแพคเกจ:

library(caret)
Optimization = train (Dep_var ~ .,data = train, method = 'M5')

7

ฉันคิดว่านี่เป็นคำตอบสำหรับคำถามสั้น ๆ ของคุณ:

Cubist แพคเกจเหมาะกับรูปแบบตามกฎ (คล้ายกับต้นไม้) ที่มีรูปแบบการถดถอยเชิงเส้นในใบ terminal, แก้ไขอินสแตนซ์ที่ใช้และการส่งเสริม

จากมุมมองภารกิจ Cran: การเรียนรู้ของเครื่อง


คุณรู้หรือไม่ว่านี่คือ (คล้ายกับ) M5 ของ Quinlan
Momo

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