| Operatoren |
create_class_gmm — Erzeugen eines Gaussian Mixture Models zur Klassifikation
create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)
create_class_gmm erzeugt ein Gaussian Mixture Model (GMM), das zur Klassifikation verwendet werden kann. NumDim gibt die Anzahl der Dimensionen des Merkmalsraumes an, NumClasses gibt die Anzahl der zu trainierenden Klassen an. Ein GMM besteht aus einer Anzahl NumCenters an Gaußschen Zentren je Klasse. NumCenters kann dabei nicht nur die exakt zu verwendende Anzahl an Zentren spezifizieren, sondern in Abhängigkeit der Anzahl der übergebenen Parameter auch eine Ober- und Untergrenze:
Der Parameter entspricht exakt der zu verwendenden Anzahl an Zentren für alle Klassen.
Der erste Parameter entspricht der minimalen Anzahl an Zentren, der zweite der maximalen Anzahl für alle Klassen.
Abwechselnd jeder erste Parameter entspricht der minimalen Anzahl Zentren je Klasse und jeder zweite Parameter der maximalen Anzahl an Zentren je Klasse.
Werden Ober- und Untergrenzen für die Anzahl der Zentren spezifiziert, dann wird die optimale Anzahl an Zentren aus dem Minimale-Nachrichtenlänge-Kriterium (Mimimum Message Length Criterion, MML) bestimmt. Im Allgemeinen ist es empfehlenswert, für das spätere Training mit (zu) vielen Zentren als Maximum und der erwarteten Anzahl Zentren als Minimum zu beginnen.
Ein Zentrum wird jeweils von den Parametern Mittelpunkt , Kovarianzmatrix und Mischungskoeffizient (mixing coefficient) beschrieben. Diese Parameter werden aus den Trainingsdaten mittels des Expectation-Maximization (EM) Algorithmus bestimmt. Ein GMM kann eine beliebige Wahrscheinlichkeitsdichtefunktion annähern, vorausgesetzt es werden genügend Zentren verwendet. Die Kovarianzmatrizen haben eine Größe von NumDim x NumDim (NumComponents x NumComponents, falls eine Vorverarbeitung verwendet wird) und sind symmetrisch. Weitere Bedingungen werden mit CovarType festgelegt:
Für CovarType = 'spherical' ist ein skalares Vielfaches der Einheitsmatrix . Die Zentrum-Dichtefunktion p(x|j) wird damit
Für CovarType = 'diag' ist eine Diagonalmatrix . Die zugehörige Zentrum-Dichtefunktion p(x|j) ist
Für CovarType = 'full' ist eine positiv definite Matrix. Die zugehörige Zentrum-Dichtefunktion p(x|j) ist
Die Komplexität der Berechnungen steigt von CovarType = 'spherical' über CovarType = 'diag' bis CovarType = 'full' an. Gleichzeitig nimmt jedoch die Flexibilität der Zentrum zu. 'spherical' benötigt deshalb im Allgemeinen höhere Werte für NumCenters als 'full'.
Die allgemeine Vorgehensweise, um GMM zu benutzen, ist wie folgt: Zuerst wird mit create_class_gmm ein GMM erzeugt. Anschließend werden mit add_sample_class_gmm Trainingsvektoren hinzugefügt, diese können anschließend mit write_samples_class_gmm in einer Datei gespeichert werden. Mit train_class_gmm werden die o.a. Zentrenparameter bestimmt. Die können weiterhin mit write_class_gmm für spätere Klassifikationen gespeichert werden.
Aus den Mischungskoeffizienten und den Zentren-Dichtefunktionen p(x|j) wird die Wahrscheinlichkeitsdichtefunktion p(x) berechnet:
Eine Funktion der Wahrscheinlichkeitsdichtefunktion p(x) kann mittels evaluate_class_gmm für einen Merkmalsvektor x bestimmt werden. classify_class_gmm hingegen sortiert die p(x) und gibt damit die wahrscheinlichsten Klassen des Merkmalsvektors an.
Die Parameter Preprocessing und NumComponents verwendet man, um die Trainingsdaten vorzuverarbeiten. Dabei können die Dimensionen der Daten reduziert werden. Diese Parameter sind in create_class_mlp beschrieben.
create_class_gmm initialisiert die Koordinaten der Zentren mit Zufallszahlen. Damit die Ergebnisse des Trainierens des GMM mit train_class_gmm reproduzierbar werden, wird in RandSeed der Initialisierungswert des Zufallszahlengenerators angegeben.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Anzahl der Dimensionen des Merkmalsraums.
Defaultwert: 3
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100
Restriktion: NumDim >= 1
Anzahl der Klassen des GMM.
Defaultwert: 5
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Restriktion: NumClasses >= 1
Anzahl der Zentren pro Klasse.
Defaultwert: 1
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30
Restriktion: NumClasses >= 1
Art der Kovarianzmatrizen.
Defaultwert: 'spherical'
Werteliste: 'diag', 'full', 'spherical'
Art der Vorverarbeitung (Transformation) der Merkmalsvektoren.
Defaultwert: 'normalization'
Werteliste: 'canonical_variates', 'none', 'normalization', 'principal_components'
Parameter der Vorverarbeitung: Anzahl der transformierten Merkmale (ignoriert bei Preprocessing = 'none' und Preprocessing = 'normalization').
Defaultwert: 10
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100
Restriktion: NumComponents >= 1
Initialisierungswert des Zufallszahlengenerators, der zur Initialisierung des GMM mit zufälligen Werten verwendet wird.
Defaultwert: 42
Handle des GMM.
* Classification with Gaussian Mixture Models
create_class_gmm (NumDim , NumClasses, [1,5], 'full', 'none',\
NumComponents, 42, GMMHandle)
* Add the training data
for J := 0 to NumData-1 by 1
* Features := [...]
* ClassID := [...]
add_sample_class_gmm (GMMHandle, Features, ClassID, Randomize)
endfor
* Train the GMM
train_class_gmm (GMMHandle, 100, 0.001, 'training', 0.0001, Centers, Iter)
* Classify unknown data in 'Features'
classify_class_gmm (GMMHandle, Features, 1, ID, Prob, Density, KSigmaProb)
clear_class_gmm (GMMHandle)
Sind die Parameterwerte korrekt, dann liefert create_class_gmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
add_sample_class_gmm, add_samples_image_class_gmm
create_class_mlp, create_class_svm
clear_class_gmm, train_class_gmm, classify_class_gmm, evaluate_class_gmm, classify_image_class_gmm
Christopher M. Bishop: „Neural Networks for Pattern Recognition“;
Oxford University Press, Oxford; 1995.
Mario A.T. Figueiredo: „Unsupervised Learning of Finite Mixture
Models“; IEEE Transactions on Pattern Analysis and Machine
Intelligence, Vol. 24, No. 3; March 2002.
Foundation
| Operatoren |