การใช้งานที่เพิ่มประสิทธิภาพของอัลกอริทึมป่าสุ่ม


44

ฉันได้สังเกตเห็นว่ามีการใช้งานไม่กี่ของป่าสุ่มเช่น ALGLIB, วาฟเฟิลและบางส่วนแพคเกจ R randomForestเช่น ใครช่วยบอกฉันได้ไหมว่าห้องสมุดเหล่านี้ได้รับการปรับให้เหมาะสมที่สุดหรือไม่? โดยพื้นฐานแล้วพวกเขาเทียบเท่ากับป่าสุ่มตามรายละเอียดในองค์ประกอบของการเรียนรู้ทางสถิติหรือมีเทคนิคพิเศษมากมายหรือไม่?

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


จังเกิ้ลสุ่มสามารถทำงานบนเซิร์ฟเวอร์หลายเครื่องในลักษณะคู่ขนาน ดู: Schwarz, et al (2010) บนซาฟารีไปยังป่าสุ่ม: การนำป่าสุ่มมาใช้อย่างรวดเร็วสำหรับข้อมูลมิติสูง ชีวสารสนเทศศาสตร์, 26 , 14, PP 1752-8, doi.org/10.1093/bioinformatics/btq257 รหัส: 1 ; 2 ; 3 ; 4 .
User128525

คำตอบ:


31

(อัปเดต 6 IX 2558 พร้อมคำแนะนำจากความคิดเห็นและยังทำให้ CW)

มีสองแพ็คเกจใหม่ที่ดีสำหรับ R ซึ่งได้รับการปรับให้เหมาะสมสำหรับเงื่อนไขบางประการ:

  • เรนเจอร์ - C ++, แพคเกจ R เหมาะสำหรับปัญหาคู่ขนานการรักษาพิเศษของข้อมูล GWASพี>>n
  • Arborist - C ++, R และ Python ผูกเหมาะสำหรับขนาดใหญ่ปัญหาเห็นได้ชัดว่าแผนสำหรับ GPGPUn

การใช้งาน RF อื่น ๆ :

  • Original One - รหัส Fortran แบบสแตนด์อโลนไม่ใช่แบบขนานสวยใช้ยาก
  • แพคเกจrandomForest - C, R อาจเป็นที่นิยมมากที่สุดไม่ใช่แบบขนานจริง ๆ แล้วค่อนข้างเร็วเมื่อเทียบกับแบบ single-core speed โดยเฉพาะอย่างยิ่งสำหรับข้อมูลขนาดเล็ก
  • randomForestSRC - C, R แพ็คเกจ, โคลนของ randomForest สนับสนุนการประมวลผลแบบขนานและปัญหาการเอาชีวิตรอด
  • ปาร์ตี้ - C, R แพ็คเกจค่อนข้างช้า แต่ออกแบบมาเป็นระนาบสำหรับการทดลองกับ RF
  • bigrf - C + R / แพคเกจ R, สร้างขึ้นเพื่อการทำงานเกี่ยวกับข้อมูลขนาดใหญ่ภายในกรอบ bigmemory ; ค่อนข้างไกลจากความสมบูรณ์
  • scikit Learn ป่า Ensemble - Python ส่วนหนึ่งของ scikit-Learn framework ขนานกันใช้ RF หลายสายพันธุ์
  • นม 's RF - งูหลามซึ่งเป็นส่วนหนึ่งของกรอบนม
  • Waffles - C ++ ซึ่งเป็นส่วนหนึ่งของชุดเครื่องมือ ML ขนาดใหญ่ขนานและค่อนข้างเร็ว
  • RF ที่เรียกว่า WEKA - Java / WEKA ขนาน
  • ALGLIB
  • ป่าสุ่ม - ละทิ้ง?
  • rt-rank - ละทิ้ง?
  • PARF - ถูกทอดทิ้งหรือไม่

กระดาษ Rangerมีการเปรียบเทียบความเร็ว / หน่วยความจำ แต่ไม่มีมาตรฐานอย่างละเอียด


6
ตอนนี้เราสามารถเพิ่มsklearn.ensembleจากกล่องเครื่องมือ Scikit-Learn ของ Python
chl

1
Milk in Python มีการนำป่าสุ่มมาใช้
JEquihua

3
ป่าสุ่มถูกแทนที่โดยแรนเจอร์ ฉันได้ลองใช้ R ver (มี C ++ เวอร์ชั่นอื่น) และมันเร็วกว่าอย่างเห็นได้ชัดกว่า randomForest (ฉันไม่ได้ใช้เวลา) ผู้เขียนได้ทำการทดสอบในกระดาษแยกต่างหาก ( arxiv.org/abs/1508.04409 )
NoviceProg

11

เท่าที่ฉันรู้รุ่นสุ่มของ R ป่าเรียกรหัส Fortran เช่นเดียวกับรุ่นเดิม นอกจากนี้มันเป็นเรื่องเล็กน้อยที่จะขนานกับฟังก์ชั่น randomForest เป็นจริงหนึ่งในตัวอย่างที่ระบุไว้ในเอกสาร foreach

library(foreach)
library(randomForest)
rf <- foreach(ntree = rep(250, 4), .combine = combine, .packages = "randomForest") %dopar% 
randomForest(x, y, ntree = ntree)

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

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


7

ELSIIใช้randomForest (ดูเช่นเชิงอรรถ 3 p.591) ซึ่งคือการดำเนินการวิจัยของ Breiman และมีดของรหัส Fortranจากซอล รหัสของ Andy Liaw อยู่ใน C

มีการใช้งาน RFs อีกอันที่เสนอในแพ็คเกจปาร์ตี้ (ใน C) ซึ่งต้องอาศัย R / Lapack ซึ่งมีการพึ่งพา BLAS บางส่วน (ดู/include/R_ext/Lapack.hในไดเรกทอรี R ของคุณ)

เท่าที่เกี่ยวกับการใส่ถุงก็ไม่ควรยากเกินกว่าที่จะทำการขนานกัน แต่ฉันจะให้ผู้ใช้ที่เชี่ยวชาญมากขึ้นตอบคำถามนี้


5

ทีมที่อยู่เบื้องหลัง RandomJungle อ้างว่าเป็นลำดับความสำคัญเร็วกว่าการใช้ R randomForest และใช้ขนาดหน่วยความจำน้อยกว่า แพ็คเกจสำหรับ randomJungle ได้รับการพัฒนาสำหรับ R แต่ฉันยังไม่สามารถสร้างได้

https://r-forge.r-project.org/projects/rjungler/


ไม่แน่ใจว่าสิ่งนี้ยังเป็นที่สนใจของคุณหรือไม่หลังจาก 4 ปี แต่ผู้เขียนของ RandomJungle ได้แทนที่ Ranger แล้ว ฉันได้ลองใช้ R ver และเห็นได้ชัดว่าเร็วกว่า randomForest ด้วยข้อมูลตัวอย่าง (แน่นอนฉันไม่ได้ใช้มัน)
NoviceProg

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