| Operatoren |
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.
Handle der originalen SVM.
Art der Nachbearbeitung, um die Anzahl der SV zu reduzieren.
Defaultwert: 'bottom_up'
Werteliste: 'bottom_up'
Minimale Anzahl der verbleibenden SV.
Defaultwert: 2
Wertevorschläge: 2, 3, 4, 5, 7, 10, 15, 20, 30, 50
Restriktion: MinRemainingSV >= 2
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
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')
clear_class_svm (SVMHandleReduced)
clear_class_svm (SVMHandle)
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
| Operatoren |