select_feature_set_gmmT_select_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm (Operator)

Name

select_feature_set_gmmT_select_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm — Wählt aus einer Liste an Merkmalen eine optimale Untermenge für ein bestimmtes Klassifikationsproblem aus.

Signatur

select_feature_set_gmm( : : ClassTrainDataHandle, SelectionMethod, GenParamName, GenParamValue : GMMHandle, SelectedFeatureIndices, Score)

Herror T_select_feature_set_gmm(const Htuple ClassTrainDataHandle, const Htuple SelectionMethod, const Htuple GenParamName, const Htuple GenParamValue, Htuple* GMMHandle, Htuple* SelectedFeatureIndices, Htuple* Score)

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)

HTuple HClassGmm::SelectFeatureSetGmm(const HClassTrainData& ClassTrainDataHandle, const wchar_t* SelectionMethod, const wchar_t* GenParamName, double GenParamValue, HTuple* Score)   (Nur Windows)

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

HClassGmm HClassTrainData::SelectFeatureSetGmm(const wchar_t* SelectionMethod, const wchar_t* GenParamName, double GenParamValue, HTuple* SelectedFeatureIndices, HTuple* Score) const   (Nur Windows)

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)

def select_feature_set_gmm(class_train_data_handle: HHandle, selection_method: str, gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, str, float]]) -> Tuple[HHandle, Sequence[str], Sequence[float]]

Beschreibung

select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm wählt die optimalen Merkmale für ein bestimmtes Klassifikationsproblem aus. Die Daten für das Klassifikationsproblem werden mit ClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleclassTrainDataHandleclass_train_data_handle angegeben. Als Klassifikator wird ein Gaußsches Mischverteilungsmodell (GMM) verwendet. Eine nähere Beschreibung des GMMs kann bei create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm gefunden werden.

In GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle wird ein Klassifikator zurückgegeben, der mit der resultierenden Merkmalsauswahl parametrisiert und trainiert wurde. Die Merkmalsauswahl wird in SelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesselectedFeatureIndicesselected_feature_indices 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 ClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleclassTrainDataHandleclass_train_data_handle 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_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_data festgelegt werden. Diese Untergruppen werden dann von dem in select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm 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 SelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesselectedFeatureIndicesselected_feature_indices mit ihrem Index referenziert, außer es wurden zusätzlich Namen beim Aufruf von set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_data 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_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_data zuvor nicht aufgerufen, werden die einzelnen Spalten als Merkmale interpretiert.

Für den Selektionsprozess können in SelectionMethodSelectionMethodSelectionMethodSelectionMethodselectionMethodselection_method 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 oszillierende 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 GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value gesetzt werden können, deren genaue Bedeutung in create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm und train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm 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":

Schwellenwert 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"

Achtung

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_gmmSelectFeatureSetGmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm zwar einerseits einen Klassifikator mit sehr hohem Score liefern. Andererseits weist der Klassifikator jedoch eine schlechte Erkennungsrate auf, wenn dieser getestet wird.

Ausführungsinformationen

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

ClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleClassTrainDataHandleclassTrainDataHandleclass_train_data_handle (input_control)  class_train_data HClassTrainData, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle der Trainingsdaten. Sollte zuvor in Untermerkmale aufgeteilt worden sein.

SelectionMethodSelectionMethodSelectionMethodSelectionMethodselectionMethodselection_method (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

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"

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

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"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  number(-array) HTupleMaybeSequence[Union[int, str, float]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

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

GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle (output_control)  class_gmm HClassGmm, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des trainierten Klassifikators.

SelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesSelectedFeatureIndicesselectedFeatureIndicesselected_feature_indices (output_control)  string-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Die Indizes oder Namen der ausgewählten Merkmale.

ScoreScoreScoreScorescorescore (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Die Klassifikationsrate die mit dem ausgewählten Merkmalssatz erreicht wurde.

Beispiel (HDevelop)

* 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)
* Use the classifier
* ...

Ergebnis

Sind die Parameterwerte korrekt, dann liefert select_feature_set_gmmselect_feature_set_gmmSelectFeatureSetGmmSelectFeatureSetGmmSelectFeatureSetGmmselect_feature_set_gmm den Wert TRUE. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_class_train_datacreate_class_train_dataCreateClassTrainDataCreateClassTrainDataCreateClassTrainDatacreate_class_train_data, add_sample_class_train_dataadd_sample_class_train_dataAddSampleClassTrainDataAddSampleClassTrainDataAddSampleClassTrainDataadd_sample_class_train_data, set_feature_lengths_class_train_dataset_feature_lengths_class_train_dataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataSetFeatureLengthsClassTrainDataset_feature_lengths_class_train_data

Nachfolger

classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm

Alternativen

select_feature_set_mlpselect_feature_set_mlpSelectFeatureSetMlpSelectFeatureSetMlpSelectFeatureSetMlpselect_feature_set_mlp, select_feature_set_knnselect_feature_set_knnSelectFeatureSetKnnSelectFeatureSetKnnSelectFeatureSetKnnselect_feature_set_knn, select_feature_set_svmselect_feature_set_svmSelectFeatureSetSvmSelectFeatureSetSvmSelectFeatureSetSvmselect_feature_set_svm

Siehe auch

create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm, gray_featuresgray_featuresGrayFeaturesGrayFeaturesGrayFeaturesgray_features, region_featuresregion_featuresRegionFeaturesRegionFeaturesRegionFeaturesregion_features

Modul

Foundation