Name
select_feature_set_gmmT_select_feature_set_gmmSelectFeatureSetGmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmm — Wählt aus einer Liste an Merkmalen eine optimale Untermenge
für ein bestimmtes Klassifikationsproblem aus.
Herror select_feature_set_gmm(const HTuple& ClassTrainDataHandle, const HTuple& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* GMMHandle, HTuple* SelectedFeatureIndices, HTuple* Score)
HTuple HClassGmm::SelectFeatureSetGmm(const HClassTrainData& ClassTrainDataHandle, const HTuple& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)
HClassGmm HClassTrainData::SelectFeatureSetGmm(const HTuple& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SelectedFeatureIndices, HTuple* Score) const
void SelectFeatureSetGmm(const HTuple& ClassTrainDataHandle, const HTuple& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* GMMHandle, HTuple* SelectedFeatureIndices, HTuple* Score)
HTuple HClassGmm::SelectFeatureSetGmm(const HClassTrainData& ClassTrainDataHandle, const HString& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)
HTuple HClassGmm::SelectFeatureSetGmm(const HClassTrainData& ClassTrainDataHandle, const HString& SelectionMethod, const HString& GenParamName, double GenParamValue, HTuple* Score)
HTuple HClassGmm::SelectFeatureSetGmm(const HClassTrainData& ClassTrainDataHandle, const char* SelectionMethod, const char* GenParamName, double GenParamValue, HTuple* Score)
HClassGmm HClassTrainData::SelectFeatureSetGmm(const HString& SelectionMethod, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SelectedFeatureIndices, HTuple* Score) const
HClassGmm HClassTrainData::SelectFeatureSetGmm(const HString& SelectionMethod, const HString& GenParamName, double GenParamValue, HTuple* SelectedFeatureIndices, HTuple* Score) const
HClassGmm HClassTrainData::SelectFeatureSetGmm(const char* SelectionMethod, const char* GenParamName, double GenParamValue, HTuple* SelectedFeatureIndices, HTuple* Score) const
void HOperatorSetX.SelectFeatureSetGmm(
[in] VARIANT ClassTrainDataHandle, [in] VARIANT SelectionMethod, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* GMMHandle, [out] VARIANT* SelectedFeatureIndices, [out] VARIANT* Score)
VARIANT HClassGmmX.SelectFeatureSetGmm(
[in] IHClassTrainDataX* ClassTrainDataHandle, [in] BSTR SelectionMethod, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score)
IHClassGmmX* HClassTrainDataX.SelectFeatureSetGmm(
[in] BSTR SelectionMethod, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* SelectedFeatureIndices, [out] VARIANT* Score)
static void HOperatorSet.SelectFeatureSetGmm(HTuple classTrainDataHandle, HTuple selectionMethod, HTuple genParamName, HTuple genParamValue, out HTuple GMMHandle, out HTuple selectedFeatureIndices, out HTuple score)
HTuple HClassGmm.SelectFeatureSetGmm(HClassTrainData classTrainDataHandle, string selectionMethod, HTuple genParamName, HTuple genParamValue, out HTuple score)
HTuple HClassGmm.SelectFeatureSetGmm(HClassTrainData classTrainDataHandle, string selectionMethod, string genParamName, double genParamValue, out HTuple score)
HClassGmm HClassTrainData.SelectFeatureSetGmm(string selectionMethod, HTuple genParamName, HTuple genParamValue, out HTuple selectedFeatureIndices, out HTuple score)
HClassGmm HClassTrainData.SelectFeatureSetGmm(string selectionMethod, string genParamName, double genParamValue, out HTuple selectedFeatureIndices, out HTuple score)
select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmm wählt die optimalen Merkmale für
ein bestimmtes Klassifikationsproblem aus.
Die Daten für das Klassifikationsproblem werden mit
ClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleclassTrainDataHandle angegeben. Als Klassifikator wird ein
Gaußsches Mischverteilungsmodell (GMM) verwendet. Eine nähere
Beschreibung des GMMs kann bei create_class_gmmcreate_class_gmmCreateClassGmmcreate_class_gmmCreateClassGmmCreateClassGmm gefunden werden.
In GMMHandleGMMHandleGMMHandleGMMHandleGMMHandleGMMHandle wird ein Klassifikator zurückgegeben, der mit der
resultierenden Merkmalsauswahl parametrisiert und trainiert wurde. Die
Merkmalsauswahl wird in SelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesselectedFeatureIndices zurückgegeben.
Der Operator kann für folgende Probleme nützlich sein: Es gibt eine Liste
von Merkmalen von denen einige wenige für die Lösung eines Problems
ausreichen. So kann mit Hilfe dieses Operators eine fundierte Entscheidung
getroffen werden welche dieser Merkmale relevant für das gegebene Problem
sind. Außerdem können für bestimmte Verfahren der Merkmalsextraktion
verschiedene Parametersätze verglichen werden.
Um das Klassifikationsproblem zu definieren, werden dem Handle
ClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleclassTrainDataHandle Merkmalsvektoren hinzugefügt, die
aus einzelnen Untergruppen bestehen. Diese Untergruppen müssen mit Hilfe
des Operators set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainData festgelegt werden.
Diese Untergruppen werden dann von dem in select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmm
ausgeführten Selektionsprozess entweder ausgewählt oder
abgelehnt, je nachdem ob sie zur Lösung des Klassifikationsproblems
beitragen.
Die so definierten Merkmale werden dann in SelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesselectedFeatureIndices
mit ihrem Index referenziert, außer es wurden zusätzlich Namen beim
Aufruf von set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainData gesetzt. Ist das der
Fall, werden statt der Indizes die Namen der ausgewählten Merkmale
zurückgegeben. Wurde set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainData zuvor
nicht aufgerufen, werden die einzelnen Spalten als Merkmale interpretiert.
Für den Selektionsprozess können in SelectionMethodSelectionMethodSelectionMethodSelectionMethodSelectionMethodselectionMethod zwei
verschiedene Methoden ausgewählt werden: entweder die Greedy-Variante
'greedy'"greedy""greedy""greedy""greedy""greedy" (das momentan erfolgversprechendste Merkmal wird
zur Auswahl hinzugefügt) oder die dynamisch oszilierende Suche
'greedy_oscillating'"greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating" (Das momentan erfolgversprechendste Merkmal
wird zur Auswahl hinzugefügt. Danach wird getestet ob eines
der hinzugefügten Merkmale entbehrlich ist.).
Während 'greedy'"greedy""greedy""greedy""greedy""greedy" schneller terminiert,
kann 'greedy_oscillating'"greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating" bessere Ergebnisse erzielen wenn
die Dimensionen der Merkmale sehr klein ist oder redundante Daten vorliegen.
Als Optimierungskriterium dient die Klassifikationsrate, die mit einem
zweifachen Kreuzvalidierungsverfahren ermittelt wird. Die beste erreichte
Klassifikationsrate wird in ScoreScoreScoreScoreScorescore zurückgegeben.
Es gibt folgende generischen Parameter die über GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und
GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt werden können, deren genaue Bedeutung in
create_class_gmmcreate_class_gmmCreateClassGmmcreate_class_gmmCreateClassGmmCreateClassGmm und train_class_gmmtrain_class_gmmTrainClassGmmtrain_class_gmmTrainClassGmmTrainClassGmm nachgelesen werden
kann:
- 'min_centers'"min_centers""min_centers""min_centers""min_centers""min_centers":
-
Minimale Anzahl an Cluster die in den Daten gebildet werden um sie zu
repräsentieren. Mehr Cluster können die Klassifikation verbessern,
gegeben die Anzahl der Trainingsdaten ist ausreichend hoch und
aussagekräftig.
Mögliche Werte: '1'"1""1""1""1""1", '2'"2""2""2""2""2"
Standardwert: '1'"1""1""1""1""1"
- 'max_center'"max_center""max_center""max_center""max_center""max_center":
-
Maximale Anzahl an Cluster die in den Daten gebildet werden um sie zu
repräsentieren. Mehr Cluster können die Klassifikation verbessern,
gegeben die Anzahl der Trainingsdaten ist ausreichend hoch und
aussagekräftig.
Mögliche Werte: '1'"1""1""1""1""1", '5'"5""5""5""5""5", '10'"10""10""10""10""10"
Standardwert: '1'"1""1""1""1""1"
- 'covar_type'"covar_type""covar_type""covar_type""covar_type""covar_type":
-
Art der Kovarianz, die zur Repräsentation der Größe eines Clusters
eingesetzt wird.
Mögliche Werte: 'spherical'"spherical""spherical""spherical""spherical""spherical", 'diag'"diag""diag""diag""diag""diag",
'full'"full""full""full""full""full"
Standardwert: 'spherical'"spherical""spherical""spherical""spherical""spherical"
- 'random_seed'"random_seed""random_seed""random_seed""random_seed""random_seed":
-
Random seed.
Standardwert: '42'"42""42""42""42""42"
- 'threshold'"threshold""threshold""threshold""threshold""threshold":
-
Schwellwert für das Abbruchkriterium des Trainings.
Standardwert: ' 0.001'" 0.001"" 0.001"" 0.001"" 0.001"" 0.001"
- 'regularize'"regularize""regularize""regularize""regularize""regularize":
-
Regularisierende Komponente.
Standardwert: ' 0.0001'" 0.0001"" 0.0001"" 0.0001"" 0.0001"" 0.0001"
- 'randomize'"randomize""randomize""randomize""randomize""randomize":
-
Randomisierung der Eingabevektoren.
Standardwert: '0'"0""0""0""0""0"
- 'class_priors'"class_priors""class_priors""class_priors""class_priors""class_priors":
-
Modus zur Bestimmung der a-priori-Wahrscheinlichkeiten der Klassen.
Mögliche Werte: 'training'"training""training""training""training""training", 'uniform'"uniform""uniform""uniform""uniform""uniform"
Standardwert: 'training'"training""training""training""training""training"
Die Laufzeit dieses Operators kann mit größeren Datensätzen und einer
längeren Merkmalsliste unter Umständen sehr lange sein.
Es ist zu beachten, dass dieser Operator nicht aufgerufen werden sollte,
wenn für das Training nur ein kleiner Datensatz verfügbar ist.
Auf Grund des Risikos der Überanpassung kann der Operator
select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmm zwar einerseits einen Klassifikator
mit sehr hohem Score liefern. Andererseits weist der Klassifikator
jedoch eine schlechte Erkennugsrate auf, wenn dieser getestet wird.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
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.
Handle der Trainingsdaten. Sollte zuvor in
Untermerkmale aufgeteilt worden sein.
Methode zur Auswahl der besten Merkmale.
Defaultwert:
'greedy'
"greedy"
"greedy"
"greedy"
"greedy"
"greedy"
Werteliste: 'greedy'"greedy""greedy""greedy""greedy""greedy", 'greedy_oscillating'"greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating""greedy_oscillating"
Namen der generischen Parameter zum Steuern des
Klassifikators.
Defaultwert: []
Werteliste: 'class_priors'"class_priors""class_priors""class_priors""class_priors""class_priors", 'covar_type'"covar_type""covar_type""covar_type""covar_type""covar_type", 'max_center'"max_center""max_center""max_center""max_center""max_center", 'min_centers'"min_centers""min_centers""min_centers""min_centers""min_centers", 'random_seed'"random_seed""random_seed""random_seed""random_seed""random_seed", 'randomize'"randomize""randomize""randomize""randomize""randomize", 'regularize'"regularize""regularize""regularize""regularize""regularize", 'threshold'"threshold""threshold""threshold""threshold""threshold"
Werte der generischen Parameter zum Steuern des
Klassifikators.
Defaultwert: []
Wertevorschläge: 1, 2, 3, 'spherical'"spherical""spherical""spherical""spherical""spherical", 'diag'"diag""diag""diag""diag""diag", 'full'"full""full""full""full""full", 42, 0.001, 0.0001, 0
Handle des trainierten Klassifikators.
Die Indizes oder Namen der ausgewählten Merkmale.
Die Klassifikationsrate die mit dem ausgewählten
Merkmalssatz erreicht wurde.
* Find out which of the two features distinguishes two Classes
NameFeature1 := 'Good Feature'
NameFeature2 := 'Bad Feature'
LengthFeature1 := 3
LengthFeature2 := 2
* Create training data
create_class_train_data (LengthFeature1+LengthFeature2,\
ClassTrainDataHandle)
* Define the features which are in the training data
set_feature_lengths_class_train_data (ClassTrainDataHandle, [LengthFeature1,\
LengthFeature2], [NameFeature1, NameFeature2])
* Add training data
* |Feat1| |Feat2|
add_sample_class_train_data (ClassTrainDataHandle, 'row', [1,1,1, 2,1 ], 0)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [2,2,2, 2,1 ], 1)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [1,1,1, 3,4 ], 0)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [2,2,2, 3,4 ], 1)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [0,0,1, 5,6 ], 0)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [2,3,2, 5,6 ], 1)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [0,0,1, 5,6 ], 0)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [2,3,2, 5,6 ], 1)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [0,0,1, 5,6 ], 0)
add_sample_class_train_data (ClassTrainDataHandle, 'row', [2,3,2, 5,6 ], 1)
* Add more data
* ...
* Select the better feature with a GMM
select_feature_set_gmm (ClassTrainDataHandle, 'greedy', [], [], GMMHandle,\
SelectedFeatureGMM, Score)
clear_class_train_data (ClassTrainDataHandle)
* Use the classifier
* ...
clear_class_gmm (GMMHandle)
Sind die Parameterwerte korrekt, dann liefert
select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
create_class_train_datacreate_class_train_dataCreateClassTrainDatacreate_class_train_dataCreateClassTrainDataCreateClassTrainData,
add_sample_class_train_dataadd_sample_class_train_dataAddSampleClassTrainDataadd_sample_class_train_dataAddSampleClassTrainDataAddSampleClassTrainData,
set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainData
classify_class_gmmclassify_class_gmmClassifyClassGmmclassify_class_gmmClassifyClassGmmClassifyClassGmm
select_feature_set_mlpselect_feature_set_mlpSelectFeatureSetMlpselect_feature_set_mlpSelectFeatureSetMlpSelectFeatureSetMlp,
select_feature_set_knnselect_feature_set_knnSelectFeatureSetKnnselect_feature_set_knnSelectFeatureSetKnnSelectFeatureSetKnn,
select_feature_set_svmselect_feature_set_svmSelectFeatureSetSvmselect_feature_set_svmSelectFeatureSetSvmSelectFeatureSetSvm
create_class_gmmcreate_class_gmmCreateClassGmmcreate_class_gmmCreateClassGmmCreateClassGmm,
gray_featuresgray_featuresGrayFeaturesgray_featuresGrayFeaturesGrayFeatures,
region_featuresregion_featuresRegionFeaturesregion_featuresRegionFeaturesRegionFeatures
Foundation