2017-06-26 1 views
-2

Ich bin relativ neu in SVM, ich versuche, Ein-Klasse-SVM-Modell mit 'Fitcsvm' Funktion in Matlab zu trainieren. 'rbf' (~ gaussian kernel) Kernel-Funktion wird verwendet.Beschleunigen SVM (Model trainig)

Meine Datengröße beträgt etwa 150k. leider ist die Modell Trainingszeit langsam (ca. 3 min). Ich benutze die folgende Zeile in Matlab zum Trainieren eines SVM-Modells

SVMModel = fitcsvm (X, y, 'KernelScale', 'auto', 'Standardisieren', wahr, 'KernelFunction', 'rbf', 'Nu' , 1);

X n * m Matrix, wobei in der Anzahl der Datenpunkte (~ 150K) und m die Eigenschaften Zahl ist (= 2-Funktionen)

Y ist die Daten lable, wobei i trainiere ein Ein-Klassen-Modell y = one (n, 1);

Irgendwelche Tipps/Vorschläge zur Beschleunigung des Modells Trainingsschritt?

Dank

+0

Dies ist sehr breit! Beachten Sie, dass kernelSVM zwischen O (n^2) und O (n^3) komplexitätsorientiert ist (n = n_samples, hängt vom Caching ab). Ich bin mir nicht sicher, ob diese Implementierung libsvm intern verwendet (sie erwähnen eines dieser libsvm Papiere; aber nicht das, was ich erwartet habe), also wirst du etwas gewinnen, indem du libsvm irgendwie verwendest. – sascha

+1

In meiner persönlichen Erfahrung ist die Matlab-Integration von [LibSVM] (https://www.csie.ntu.edu.tw/~cjlin/libsvm/) viel schneller als die eingebaute fitcsvm. –

+0

Danke Sascha und Vahe LibSVM funktioniert gut Grüße; – Jason

Antwort

1

SVM leiden an Skalierbarkeit und Speicherprobleme. Wir können nichts dagegen tun, so funktioniert der Algorithmus. Es gibt einige Versuche, seine Berechnungen parallel durchzuführen, aber diese sind selten und beruhen oft auf (genauen?) Annäherungen. Wenn Sie sich an dieses bestimmte Modell halten müssen, bietet die Arbeit in 1 Code dafür. Ein anderer Vorschlag wäre der Versuch, den linearen Kernel (der viel leichter und wahrscheinlich genau genug für Ihren Datensatz ist) liblinear zu testen, der von dem gleichen Team entwickelt wurde, das LIBSVM erstellt hat (von sasha in früheren Kommentaren erwähnt), was wahrscheinlich am meisten ist komplette und optimierte SVM für MATLAB.

Viel Glück!

+0

Danke, LIBSVM funktioniert bisher gut, Grüße – Jason