reduce_class_svm
— Approximieren einer bereits trainierten Support-Vektor-Maschine
durch eine reduzierte Support-Vektor-Maschine für schnellere
Klassifikation.
reduce_class_svm( : : SVMHandle, Method, MinRemainingSV, MaxError : SVMHandleReduced)
Wie bei create_class_svm
beschrieben hängt die
Klassifikationszeit der SVM von der Anzahl der Kernel-Auswertungen
zwischen Support-Vektoren und dem Merkmalsvektor ab. Während die
Länge des Datenvektors mit einer Vorverarbeitung wie
'pricipal_components' oder 'canonical_variates'
(siehe create_class_svm
für Details) reduziert werden kann,
wird die Gesamtanzahl der SV erst während des Trainings
festgestellt. Um die Klassifikationszeit weiter zu reduzieren ist es
möglich, die originale separierende Hyperebene mit weniger SV als
ursprünglich notwendig zu approximieren. Hierfür wird eine Kopie
der originalen SVM, die in SVMHandle
übergeben wird, als
SVMHandleReduced
zurückgegeben. Diese neue SVM hat die
gleiche Parametrisierung wie das Original, enthält aber eine
kleinere Anzahl von SV. Die Trainingsdaten, die in
SVMHandle
gespeichert waren, werden hierbei nicht kopiert.
Die originale SVM wird durch reduce_class_svm
nicht
modifiziert.
Das Reduktionsverfahren wird mit Method
ausgewählt. Zur
Zeit wird nur ein Bottom-Up-Ansatz unterstützt, der iterativ die SV
verschmilzt. Der Algorithmus bricht ab, wenn entweder eine
minimal Anzahl von SV erreicht ist (MinRemainingSV
) oder der
akkumulierte Fehler eine Schwelle überschreitet (MaxError
).
Dabei ist anzumerken, dass aufgrund der Approximation die Komplexität der
Hyperebene reduziert wird, was als Folge eine verschlechterte
Klassifikationsrate hat. Das übliche Vorgehen ist deshalb, mit
einem kleinen MaxError
, z.B. 0.001, anzufangen
und diesen schrittweise zu erhöhen. Um die Reduktionsrate zu
steuern, sollte bei jedem Schritt die Anzahl der SV mit
get_support_vector_num_class_svm
und die Klassifikationsrate
mit einem separaten Testdatensatz mit classify_class_svm
überprüft werden.
SVMHandle
(input_control) class_svm →
(handle)
Handle der originalen SVM.
Method
(input_control) string →
(string)
Art der Nachbearbeitung, um die Anzahl der SV zu reduzieren.
Defaultwert: 'bottom_up'
Werteliste: 'bottom_up'
MinRemainingSV
(input_control) integer →
(integer)
Minimale Anzahl der verbleibenden SV.
Defaultwert: 2
Wertevorschläge: 2, 3, 4, 5, 7, 10, 15, 20, 30, 50
Restriktion: MinRemainingSV >= 2
MaxError
(input_control) real →
(real)
Maximal erlaubter Fehler, der durch die Reduktion erzeugt wird.
Defaultwert: 0.001
Wertevorschläge: 0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05
Restriktion: MaxError > 0.0
SVMHandleReduced
(output_control) class_svm →
(handle)
Handle der reduzierten SVM.
* Train an SVM create_class_svm (NumFeatures, 'rbf', 0.01, 0.01, NumClasses,\ 'one-versus-all', 'normalization', NumFeatures,\ SVMHandle) read_samples_class_svm (SVMHandle, 'samples.mtf') train_class_svm (SVMHandle, 0.001, 'default') * Create a reduced SVM reduce_class_svm (SVMHandle, 'bottom_up', 2, 0.01, SVMHandleReduced) write_class_svm (SVMHandleReduced, 'classifier.svm')
Sind die Parameterwerte korrekt, dann liefert
train_class_svm
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
train_class_svm
,
get_support_vector_num_class_svm
classify_class_svm
,
write_class_svm
,
get_support_vector_num_class_svm
Foundation