create_class_gmm T_create_class_gmm CreateClassGmm CreateClassGmm create_class_gmm (Operator)
Name
create_class_gmm T_create_class_gmm CreateClassGmm CreateClassGmm create_class_gmm — Erzeugen eines Gaußschen Mischverteilungsmodells zur Klassifikation
Signatur
void CreateClassGmm (const HTuple& NumDim , const HTuple& NumClasses , const HTuple& NumCenters , const HTuple& CovarType , const HTuple& Preprocessing , const HTuple& NumComponents , const HTuple& RandSeed , HTuple* GMMHandle )
void HClassGmm ::HClassGmm (Hlong NumDim , Hlong NumClasses , const HTuple& NumCenters , const HString& CovarType , const HString& Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::HClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const HString& CovarType , const HString& Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::HClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const char* CovarType , const char* Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::HClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const wchar_t* CovarType , const wchar_t* Preprocessing , Hlong NumComponents , Hlong RandSeed )
(Nur Windows)
void HClassGmm ::CreateClassGmm (Hlong NumDim , Hlong NumClasses , const HTuple& NumCenters , const HString& CovarType , const HString& Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::CreateClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const HString& CovarType , const HString& Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::CreateClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const char* CovarType , const char* Preprocessing , Hlong NumComponents , Hlong RandSeed )
void HClassGmm ::CreateClassGmm (Hlong NumDim , Hlong NumClasses , Hlong NumCenters , const wchar_t* CovarType , const wchar_t* Preprocessing , Hlong NumComponents , Hlong RandSeed )
(Nur Windows)
static void HOperatorSet .CreateClassGmm (HTuple numDim , HTuple numClasses , HTuple numCenters , HTuple covarType , HTuple preprocessing , HTuple numComponents , HTuple randSeed , out HTuple GMMHandle )
public HClassGmm (int numDim , int numClasses , HTuple numCenters , string covarType , string preprocessing , int numComponents , int randSeed )
public HClassGmm (int numDim , int numClasses , int numCenters , string covarType , string preprocessing , int numComponents , int randSeed )
void HClassGmm .CreateClassGmm (int numDim , int numClasses , HTuple numCenters , string covarType , string preprocessing , int numComponents , int randSeed )
void HClassGmm .CreateClassGmm (int numDim , int numClasses , int numCenters , string covarType , string preprocessing , int numComponents , int randSeed )
Beschreibung
create_class_gmm create_class_gmm CreateClassGmm CreateClassGmm CreateClassGmm create_class_gmm erzeugt ein Gaußsches Mischverteilungsmodell (GMM),
das zur Klassifikation verwendet werden kann. NumDim NumDim NumDim NumDim numDim num_dim gibt
die Anzahl der Dimensionen des Merkmalsraums an,
NumClasses NumClasses NumClasses NumClasses numClasses num_classes gibt die Anzahl der zu trainierenden Klassen
an. Ein GMM besteht aus einer Anzahl NumCenters NumCenters NumCenters NumCenters numCenters num_centers an
Gaußschen Zentren je Klasse. NumCenters NumCenters NumCenters NumCenters numCenters num_centers 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:
Genau ein Parameter:
Der Parameter entspricht exakt der zu
verwendenden Anzahl an Zentren für alle Klassen.
Genau zwei Parameter:
Der erste Parameter entspricht der
minimalen Anzahl an Zentren, der zweite der maximalen Anzahl für alle
Klassen.
Genau 2*NumClasses NumClasses NumClasses NumClasses numClasses num_classes 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 (Minimum 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 NumDim NumDim NumDim numDim num_dim x NumDim NumDim NumDim NumDim numDim num_dim
(NumComponents NumComponents NumComponents NumComponents numComponents num_components x NumComponents NumComponents NumComponents NumComponents numComponents num_components , falls
eine Vorverarbeitung verwendet wird) und sind symmetrisch. Weitere
Bedingungen werden mit CovarType CovarType CovarType CovarType covarType covar_type festgelegt:
Für CovarType CovarType CovarType CovarType covarType covar_type = 'spherical' "spherical" "spherical" "spherical" "spherical" "spherical" ist
ein skalares Vielfaches der Einheitsmatrix
. Die Zentrum-Dichtefunktion
p(x|j) wird damit
Für CovarType CovarType CovarType CovarType covarType covar_type = 'diag' "diag" "diag" "diag" "diag" "diag" ist
eine Diagonalmatrix
. Die zugehörige
Zentrum-Dichtefunktion p(x|j) ist
Für CovarType CovarType CovarType CovarType covarType covar_type = 'full' "full" "full" "full" "full" "full" ist
eine positiv definite Matrix. Die zugehörige
Zentrum-Dichtefunktion p(x|j) ist
Die Komplexität der Berechnungen steigt von CovarType CovarType CovarType CovarType covarType covar_type =
'spherical' "spherical" "spherical" "spherical" "spherical" "spherical" über CovarType CovarType CovarType CovarType covarType covar_type = 'diag' "diag" "diag" "diag" "diag" "diag" bis
CovarType CovarType CovarType CovarType covarType covar_type = 'full' "full" "full" "full" "full" "full" an. Gleichzeitig nimmt
jedoch die Flexibilität der Zentrum zu. 'spherical' "spherical" "spherical" "spherical" "spherical" "spherical"
benötigt deshalb im Allgemeinen höhere Werte für NumCenters NumCenters NumCenters NumCenters numCenters num_centers
als 'full' "full" "full" "full" "full" "full" .
Die allgemeine Vorgehensweise, um GMM zu benutzen, ist wie folgt:
Zuerst wird mit create_class_gmm create_class_gmm CreateClassGmm CreateClassGmm CreateClassGmm create_class_gmm ein GMM
erzeugt. Anschließend werden mit add_sample_class_gmm add_sample_class_gmm AddSampleClassGmm AddSampleClassGmm AddSampleClassGmm add_sample_class_gmm
Trainingsvektoren hinzugefügt, diese können anschließend mit
write_samples_class_gmm write_samples_class_gmm WriteSamplesClassGmm WriteSamplesClassGmm WriteSamplesClassGmm write_samples_class_gmm in einer Datei gespeichert
werden. Mit train_class_gmm train_class_gmm TrainClassGmm TrainClassGmm TrainClassGmm train_class_gmm werden die o.a. Zentrenparameter
bestimmt. Die können weiterhin mit write_class_gmm write_class_gmm WriteClassGmm WriteClassGmm WriteClassGmm 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 evaluate_class_gmm EvaluateClassGmm EvaluateClassGmm EvaluateClassGmm evaluate_class_gmm für einen
Merkmalsvektor x bestimmt
werden. classify_class_gmm classify_class_gmm ClassifyClassGmm ClassifyClassGmm ClassifyClassGmm classify_class_gmm hingegen sortiert die
p(x) und gibt damit die wahrscheinlichsten Klassen
des Merkmalsvektors an.
Die Parameter Preprocessing Preprocessing Preprocessing Preprocessing preprocessing preprocessing und NumComponents NumComponents NumComponents NumComponents numComponents num_components
verwendet man, um die Trainingsdaten vorzuverarbeiten. Dabei können
die Dimensionen der Daten reduziert werden. Diese Parameter sind in
create_class_mlp create_class_mlp CreateClassMlp CreateClassMlp CreateClassMlp create_class_mlp beschrieben.
create_class_gmm create_class_gmm CreateClassGmm CreateClassGmm CreateClassGmm create_class_gmm initialisiert die Koordinaten der Zentren
mit Zufallszahlen. Damit die Ergebnisse des Trainierens des GMM mit
train_class_gmm train_class_gmm TrainClassGmm TrainClassGmm TrainClassGmm train_class_gmm reproduzierbar werden, wird in
RandSeed RandSeed RandSeed RandSeed randSeed rand_seed der Initialisierungswert des
Zufallszahlengenerators angegeben.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Wird ohne Parallelisierung verarbeitet.
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.
Parameter
NumDim NumDim NumDim NumDim numDim num_dim (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
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 NumClasses NumClasses NumClasses numClasses num_classes (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Anzahl der Klassen des GMM.
Defaultwert: 5
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Restriktion: NumClasses >= 1
NumCenters NumCenters NumCenters NumCenters numCenters num_centers (input_control) integer(-array) → HTuple MaybeSequence[int] HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Anzahl der Zentren pro Klasse.
Defaultwert: 1
Wertevorschläge: 1, 2, 3, 4, 5, 8, 10, 15, 20, 30
Restriktion: NumClasses >= 1
CovarType CovarType CovarType CovarType covarType covar_type (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Art der Kovarianzmatrizen.
Defaultwert:
'spherical'
"spherical"
"spherical"
"spherical"
"spherical"
"spherical"
Werteliste: 'diag' "diag" "diag" "diag" "diag" "diag" , 'full' "full" "full" "full" "full" "full" , 'spherical' "spherical" "spherical" "spherical" "spherical" "spherical"
Preprocessing Preprocessing Preprocessing Preprocessing preprocessing preprocessing (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Art der Vorverarbeitung (Transformation) der
Merkmalsvektoren.
Defaultwert:
'normalization'
"normalization"
"normalization"
"normalization"
"normalization"
"normalization"
Werteliste: 'canonical_variates' "canonical_variates" "canonical_variates" "canonical_variates" "canonical_variates" "canonical_variates" , 'none' "none" "none" "none" "none" "none" , 'normalization' "normalization" "normalization" "normalization" "normalization" "normalization" , 'principal_components' "principal_components" "principal_components" "principal_components" "principal_components" "principal_components"
NumComponents NumComponents NumComponents NumComponents numComponents num_components (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Parameter der Vorverarbeitung: Anzahl der
transformierten Merkmale (ignoriert bei
Preprocessing Preprocessing Preprocessing Preprocessing preprocessing preprocessing = 'none' "none" "none" "none" "none" "none" und
Preprocessing Preprocessing Preprocessing Preprocessing preprocessing preprocessing =
'normalization' "normalization" "normalization" "normalization" "normalization" "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 RandSeed RandSeed RandSeed randSeed rand_seed (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Initialisierungswert des
Zufallszahlengenerators, der zur
Initialisierung des GMM mit zufälligen Werten
verwendet wird.
Defaultwert: 42
GMMHandle GMMHandle GMMHandle GMMHandle GMMHandle gmmhandle (output_control) class_gmm → HClassGmm , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Handle des GMM.
Beispiel (HDevelop)
* 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)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
create_class_gmm create_class_gmm CreateClassGmm CreateClassGmm CreateClassGmm create_class_gmm den Wert TRUE. Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
Nachfolger
add_sample_class_gmm add_sample_class_gmm AddSampleClassGmm AddSampleClassGmm AddSampleClassGmm add_sample_class_gmm ,
add_samples_image_class_gmm add_samples_image_class_gmm AddSamplesImageClassGmm AddSamplesImageClassGmm AddSamplesImageClassGmm add_samples_image_class_gmm
Alternativen
create_class_mlp create_class_mlp CreateClassMlp CreateClassMlp CreateClassMlp create_class_mlp ,
create_class_svm create_class_svm CreateClassSvm CreateClassSvm CreateClassSvm create_class_svm
Siehe auch
clear_class_gmm clear_class_gmm ClearClassGmm ClearClassGmm ClearClassGmm clear_class_gmm ,
train_class_gmm train_class_gmm TrainClassGmm TrainClassGmm TrainClassGmm train_class_gmm ,
classify_class_gmm classify_class_gmm ClassifyClassGmm ClassifyClassGmm ClassifyClassGmm classify_class_gmm ,
evaluate_class_gmm evaluate_class_gmm EvaluateClassGmm EvaluateClassGmm EvaluateClassGmm evaluate_class_gmm ,
classify_image_class_gmm classify_image_class_gmm ClassifyImageClassGmm ClassifyImageClassGmm ClassifyImageClassGmm classify_image_class_gmm
Literatur
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.
Modul
Foundation