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.
NumClasses
Parameter: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.
NumDim
(input_control) integer →
(integer)
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
NumClasses
(input_control) integer →
(integer)
Anzahl der Klassen des GMM.
Defaultwert: 5
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Restriktion: NumClasses >= 1
NumCenters
(input_control) integer(-array) →
(integer)
Anzahl der Zentren pro Klasse.
Defaultwert: 1
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30
Restriktion: NumClasses >= 1
CovarType
(input_control) string →
(string)
Art der Kovarianzmatrizen.
Defaultwert: 'spherical'
Werteliste: 'diag' , 'full' , 'spherical'
Preprocessing
(input_control) string →
(string)
Art der Vorverarbeitung (Transformation) der Merkmalsvektoren.
Defaultwert: 'normalization'
Werteliste: 'canonical_variates' , 'none' , 'normalization' , 'principal_components'
NumComponents
(input_control) integer →
(integer)
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
RandSeed
(input_control) integer →
(integer)
Initialisierungswert des Zufallszahlengenerators, der zur Initialisierung des GMM mit zufälligen Werten verwendet wird.
Defaultwert: 42
GMMHandle
(output_control) class_gmm →
(handle)
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)
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