| Operatoren |
get_prep_info_class_gmm — Berechnen des Informationsgehaltes der vorverarbeiteten Merkmalsvektoren eines GMM.
get_prep_info_class_gmm( : : GMMHandle, Preprocessing : InformationCont, CumInformationCont)
get_prep_info_class_gmm berechnet den Informationsgehalt der mit der durch Preprocessing gegebenen Vorverarbeitung transformierten Komponenten der Trainingsvektoren. Preprocessing kann auf 'principal_components' oder 'canonical_variates' gesetzt werden. Die zugrundeliegenden Vorverarbeitungen sind bei create_class_gmm beschrieben. Der Informationsgehalt wird aus die Variation der transformierten Komponenten der Trainingsvektoren berechnet, d.h. er wird rein aufgrund der Trainingsdaten unabhängig von einer Fehlerrate bei einer Klassifikation der Trainingsdaten berechnet. Der Informationsgehalt wird für alle relevanten Komponenten der transformierten Merkmalsvektoren (NumComponents für 'principal_components' und 'canonical_variates', siehe create_class_gmm) in InformationCont zurückgegeben. Der Informationsgehalt wird als eine Zahl zwischen 0 und 1 dargestellt. Ein prozentualer Informationsgehalt kann leicht durch Multiplikation mit 100 berechnet werden. Der kumulierte Informationsgehalt der ersten n Komponenten wird in der n-ten Komponente von CumInformationCont zurückgegeben, d.h. CumInformationCont enthält die Summen der ersten n Elemente von InformationCont. Um get_prep_info_class_gmm verwenden zu können, müssen mit add_sample_class_gmm oder read_samples_class_gmm genügend viele Trainingsmuster zu dem durch GMMHandle gegebenen GMM hinzugefügt werden.
InformationCont und CumInformationCont können dazu verwendet werden, um zu entscheiden, wie viele Komponenten der transformierten Merkmalsvektoren relevante Information enthalten. Ein oft verwendetes Kriterium ist z.B. zu verlangen, dass die transformierten Daten x% (z.B. 90%) der Daten enthalten sollten. Dies kann leicht anhand des ersten Wertes von CumInformationCont, der über x% liegt, bestimmt werden. Der so erhaltene Wert kann bei einem neuerlichen Aufruf von create_class_gmm als NumComponents verwendet werden. Da zum Aufruf von get_prep_info_class_gmm schon ein GMM mit create_class_gmm erzeugt werden muss, also auch ein initialer Wert von NumComponents bei create_class_gmm angegeben werden muss, aber bei Verwendung von get_prep_info_class_gmm typischerweise noch nicht bekannt ist, wie viele Komponenten relevant sind, empfiehlt sich folgendes zweistufiges Vorgehen, um NumComponents zu bestimmen: In einem ersten Schritt wird ein GMM mit der maximalen Anzahl von NumComponents (NumComponents für 'principal_components' und 'canonical_variates') erzeugt. Dann werden die Trainingsmuster zu dem GMM hinzugefügt und mit write_samples_class_gmm in Datei gespeichert. Anschließend wird mit get_prep_info_class_gmm der Informationsgehalt der Komponenten und somit NumComponents bestimmt. Danach wird ein neues GMM mit der gewünschten Anzahl Komponenten erzeugt, und die abgespeicherten Trainingsdaten mit read_samples_class_gmm wieder eingelesen. Hierauf wird das GMM mit train_class_gmm trainiert.
Handle des GMM.
Art der Vorverarbeitung (Transformation) der Merkmalsvektoren.
Defaultwert: 'principal_components'
Werteliste: 'canonical_variates', 'principal_components'
Relativer Informationsgehalt der transformierten Merkmalsvektoren.
Kumulierter Informationsgehalt der transformierten Merkmalsvektoren.
* Create the initial GMM
create_class_gmm (NumDim, NumClasses, NumCenters, 'full',\
'principal_components', NumComponents, 42, GMMHandle)
* Generate and add the training data
for J := 0 to NumData-1 by 1
* Generate training features and classes
* Data = [...]
* ClassID = [...]
add_sample_class_gmm (GMMHandle, Data, ClassID, Randomize)
endfor
write_samples_class_gmm (GMMHandle, 'samples.gtf')
* Compute the information content of the transformed features
get_prep_info_class_gmm (GMMHandle, 'principal_components',\
InformationCont, CumInformationCont)
* Determine Comp by inspecting InformationCont and CumInformationCont
* NumComponents = [...]
clear_class_gmm (GMMHandle)
* Create the actual GMM
create_class_gmm (NumDim, NumClasses, NumCenters, 'full',\
'principal_components', NumComponents, 42, GMMHandle)
* Train the GMM
read_samples_class_gmm (GMMHandle, 'samples.gtf')
train_class_gmm (GMMHandle, 200, 0.0001, 0.0001, Regularize, Centers, Iter)
write_class_gmm (GMMHandle, 'classifier.gmm')
clear_class_gmm (GMMHandle)
Sind die Parameterwerte korrekt, dann liefert get_prep_info_class_gmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Falls get_prep_info_class_gmm den Fehler 9211 (Matrix ist nicht positiv definit) bei Preprocessing = 'canonical_variates' zurückliefert, bedeutet dies typischerweise, dass für die verschiedenen Klassen zu wenige Trainingsmuster gespeichert worden sind.
add_sample_class_gmm, read_samples_class_gmm
clear_class_gmm, create_class_gmm
Christopher M. Bishop: „Neural Networks for Pattern Recognition“;
Oxford University Press, Oxford; 1995.
Andrew Webb: „Statistical Pattern Recognition“; Arnold, London;
1999.
Foundation
| Operatoren |