ป่าสุ่มสามารถทำได้ดีกว่าข้อผิดพลาดการทดสอบ 2.8% ใน MNIST หรือไม่?


10

ฉันไม่ได้พบวรรณกรรมใด ๆ เกี่ยวกับการใช้ Random Forests กับ MNIST, CIFAR, STL-10 ฯลฯ ดังนั้นฉันจึงคิดว่าฉันจะลองใช้มันด้วยMNIST ที่ไม่เปลี่ยนแปลง

ในRฉันลอง:

randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)

สิ่งนี้ใช้เวลา 2 ชั่วโมงและมีข้อผิดพลาดการทดสอบ 2.8%

ฉันยังได้ลองscikit เรียนรู้ด้วย

RandomForestClassifier(n_estimators=2000,
                       max_features="auto", 
                       max_depth=None)

หลังจาก 70 นาทีฉันได้รับข้อผิดพลาดการทดสอบ 2.9% แต่ด้วย n_estimators = 200 แทนฉันได้รับข้อผิดพลาดการทดสอบ 2.8% หลังจากเพียง 7 นาที

ด้วยOpenCVฉันพยายาม

rf.train(images.reshape(-1, 28**2), 
         cv2.CV_ROW_SAMPLE, 
         labels.astype('int'))

การดำเนินการนี้ใช้เวลา 6.5 นาทีและrfการคาดการณ์ทำให้ข้อผิดพลาดในการทดสอบ 15% ฉันไม่ทราบว่ามีต้นไม้กี่ต้นที่ได้รับการฝึกฝนเนื่องจาก Python ของพวกเขาที่เชื่อมโยงกับ Random Forests ดูเหมือนจะเพิกเฉยต่อparamsข้อโต้แย้งอย่างน้อยในเวอร์ชัน 2.3.1 ฉันยังไม่สามารถหาวิธีที่จะทำให้ชัดเจนกับ OpenCV ที่ฉันต้องการแก้ปัญหาการจัดหมวดหมู่มากกว่าการถดถอย - ฉันมีข้อสงสัยของฉันเพราะแทนที่astype('int')ด้วยastype('float32')ให้ผลที่เหมือนกัน

ในเครือข่ายประสาทสำหรับการเปลี่ยนแปลงคงที่มาตรฐาน MNIST รัฐของศิลปะที่เป็นข้อผิดพลาดการทดสอบ 0.8% แม้ว่าการฝึกอบรมอาจจะใช้เวลานานกว่า 2 ชั่วโมงในหนึ่ง CPU

เป็นไปได้ไหมที่จะทำดีกว่าข้อผิดพลาดการทดสอบ 2.8% ใน MNIST โดยใช้ป่าสุ่ม ฉันคิดว่าฉันทามติทั่วไปคือป่าสุ่มมักจะดีเท่ากับเคอร์เนล SVMs ซึ่งฉันเชื่อว่าจะได้รับข้อผิดพลาดการทดสอบ 1.4%


5
โปรดจำไว้ว่าฟอเรสต์แบบสุ่มกำลังตัดสินใจ 1 ตัวแปร (เช่นพิกเซล) ในแต่ละครั้ง ดังนั้นจึงไม่ดีสำหรับการประมวลผลภาพ - วาด คุณควรเริ่มใช้ preprocessing (เช่น PCA และอื่น ๆ ) ก่อนเพื่อพัฒนาตัวแปรการตัดสินใจที่มีความหมายมากขึ้น
seanv507

สิ่งที่ seanv507 พูด OpenCV มีฟังก์ชั่นมากมายสำหรับการดึงฟีเจอร์ซึ่งสามารถตรวจจับตัวแปรอธิบายที่มีประโยชน์มากสำหรับฟอเรสต์แบบสุ่มเพื่อใช้งาน
JEquihua

3
ผมคิดว่านายพลเป็นเอกฉันท์ว่าสุ่มป่ามักจะมีอย่างน้อยดีเท่า SVMs ไม่มีฉันทามติดังกล่าว
Marc Claesen

คำตอบ:


15

เป็นไปได้ไหมที่จะทำดีกว่าข้อผิดพลาดการทดสอบ 2.8% ใน MNIST โดยใช้ป่าสุ่ม

อาจจะใช่. แต่นั่นไม่ได้หมายความว่าคุณจะใช้คุณสมบัติเดียวกับที่คุณได้รับตามค่าเริ่มต้น โดยทั่วไปการตัดสินใจต้นไม้จะทำงานได้ไม่ดีกับปัญหาที่มีมิติสูงเช่นนี้เนื่องจากคุณแยกคุณลักษณะเพียงครั้งเดียว ป่าสุ่มขยายประโยชน์ของต้นไม้ตัดสินใจ แต่พวกเขายังคงมีปัญหาเดียวกัน การเอาชนะด้วย 2.8% ด้วย RF อาจทำให้คุณต้องทำการประมวลผลล่วงหน้าและเปลี่ยนฟีเจอร์ให้เป็นชุดย่อยที่มีประโยชน์มากขึ้น

Neural Networks และ Kernel SVMs กำลังทำการเปลี่ยนแปลงคุณสมบัติ / วิศวกรรมโดยปริยาย ดังนั้นในความรู้สึกบางอย่างมันน่าประทับใจที่ Random Forest เข้าใกล้อย่างเหมาะสมโดยไม่มีงานพิเศษใด ๆ (จริง ๆ แล้วเหตุผลที่ RF ได้รับความนิยมก็คือมันง่ายอย่างยิ่งที่จะได้ผลลัพธ์ที่ "ดีพอ")

ฉันคิดว่าฉันทามติทั่วไปคือป่าสุ่มมักจะดีเท่ากับเคอร์เนล SVM

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

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