การใช้ SVM ที่เร็วที่สุด


16

คำถามทั่วไปเพิ่มเติม ฉันใช้ rbf SVM สำหรับการสร้างแบบจำลองการคาดการณ์ ฉันคิดว่าโปรแกรมปัจจุบันของฉันต้องใช้เวลาเพิ่มขึ้นเล็กน้อย ฉันใช้ scikit เรียนรู้ด้วยการค้นหากริดแบบหยาบไปจนถึงแบบละเอียด + การตรวจสอบความถูกต้องไขว้

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


1
SGDClassifier ใน scikit-learn นั้นเร็วมากแต่สำหรับ SVM เชิงเส้น คุณอาจถามพวก Scikit เรียนรู้เพิ่มแท็ก Scikit เรียนรู้
denis

เคอร์เนล SVM ที่ไม่ใช่เชิงเส้นถูกกำหนดให้ช้า บางทีคุณควรเริ่มเล่นกับโมเดลเชิงเส้น (ลองดู Vowpal Wabbit) จากนั้นไปที่ไม่ใช่เชิงเส้น คุณสามารถรับความไม่เป็นเชิงเส้นได้ด้วยการสร้างคุณสมบัติที่ซับซ้อนมากขึ้นด้วยตัวแบบเชิงเส้น บ่อยครั้งที่โมเดลที่ไม่ใช่เชิงเส้นส่งผลให้มีการเพิ่มขึ้นของค่าใช้จ่ายในการคำนวณที่สูงขึ้น ไม่มีอะไรเทียบกับเคอร์เนล SVM ที่ไม่ใช่แบบเส้นตรง แต่จำไว้เสมอจากมุมมองเชิงปฏิบัติ
Vladislavs Dovgalecs

1
คุณสามารถเร่งความเร็วได้โดยใช้ไลบรารีการปรับแต่งแบบพิเศษสำหรับการค้นหาพารามิเตอร์ที่มีประสิทธิภาพมากกว่าการค้นหาแบบตาราง (เช่นต้องทดสอบชุดพารามิเตอร์ที่น้อยกว่า) ตัวอย่างของการปรับจูนไลบรารี ได้แก่Optunityและ Hyperopt
Marc Claesen

คำตอบ:


16

โซเฟียอัลกอริทึมของ Google มีการนำ SVM เชิงเส้นมาใช้อย่างรวดเร็ว มันเป็นหนึ่งใน SVM ที่เร็วที่สุด แต่ฉันคิดว่ามันรองรับเฉพาะการจำแนกประเภทและสนับสนุน SVM เชิงเส้นเท่านั้น

แม้มีแพ็คเกจ R !


ลิงก์ของคุณในตอนนี้บอกว่า "แพ็คเกจ 'RSofia' ถูกลบออกจากที่เก็บ CRAN แล้ว" มีความคิดอะไรไหม
James Hirschorn

@JamesHirschorn ผู้พัฒนาอาจหยุดทำการบำรุงรักษา คุณสามารถติดตั้งได้จากไฟล์เก็บถาวร CRAN
Zach

10

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

คาเร็ตสามารถจัดการกับรถยนต์หลายรุ่นรวมถึง rbf SVMs:

library(caret)
library(doMC)
registerDoMC()
model <-  train(Species ~ ., data = iris, method="svmRadial", 
    trControl=trainControl(method='cv', number=10))
> confusionMatrix(model)
Cross-Validated (10 fold) Confusion Matrix 

(entries are percentages of table totals)

            Reference
Prediction   setosa versicolor virginica
  setosa       32.4        0.0       0.0
  versicolor    0.0       30.9       2.0
  virginica     0.9        2.4      31.3

โปรดทราบว่าไลบรารี doMC () มีเฉพาะใน mac และ linux เท่านั้นควรเรียกใช้จากบรรทัดคำสั่งไม่ใช่จาก GUI และแบ่งรุ่นใด ๆ จาก RWeka นอกจากนี้ยังง่ายต่อการใช้MPIหรือSNOW clusters เป็นแบ็คเอนด์แบบขนานซึ่งไม่มีปัญหาเหล่านี้


ขอบคุณซัค ฉันเชื่อว่า scikits ยังมีวิธีการรันการตรวจสอบข้ามแบบขนานซึ่งเป็นสิ่งที่ฉันวางแผนจะทำ ไม่รวมถึงคำแนะนำอื่น ๆ ในการเร่งความเร็วหรือไม่ ขอบคุณ
มัส

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

ขอบคุณ Zach ฉันจะดูเป็นพันธุ์ขนาน ฉันทำประมาณ 650 คุณสมบัติและตัวอย่าง 5000 รายการ
มัส

4

ฉันรู้ว่านี่เป็นคำถามที่ค่อนข้างเก่า แต่ก็เป็นไปได้ (ขึ้นอยู่กับขนาดของชุดข้อมูลของคุณที่จะมีประสิทธิภาพมากกว่าหรือน้อยกว่า) เพื่อใช้การประมาณค่ามิติต่ำของแผนผังคุณลักษณะเคอร์เนลจากนั้นใช้ใน Linear-SVM ดูhttp://scikit-learn.org/stable/modules/kernel_approximation.html



2

R มีแพ็คเกจsvm ที่ใช้GPU เร่งความเร็วที่ยอดเยี่ยมrpusvmใช้เวลาประมาณ 20 วินาทีในการฝึกฝนบนตัวอย่าง 20K * 100 มิติและฉันพบว่า CPU นั้นไม่เคยโอเวอร์โหลดดังนั้นจึงใช้ GPU อย่างมีประสิทธิภาพ อย่างไรก็ตามมันต้องใช้ NVIDIA GPU


1

การแจ้งเตือน: นี่เป็นปลั๊กที่ไร้ยางอาย

พิจารณา DynaML a ห้องสมุด ML ที่ใช้สกาล่าฉันกำลังทำงานอยู่ ฉันใช้ K-based LS-SVM แบบเคอร์เนล (Least Squares Support Vector Machine) ที่น้อยที่สุดพร้อมกับการปรับแต่งเคอร์เนลอัตโนมัติโดยใช้การค้นหากริดหรือ Coupling Simulated Annealing

http://mandar2812.github.io/DynaML/

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