select_feature_set_knn
— Wählt aus einer Liste an Merkmalen eine optimale Untermenge
für ein bestimmtes Klassifikationsproblem aus.
select_feature_set_knn( : : ClassTrainDataHandle, SelectionMethod, GenParamName, GenParamValue : KNNHandle, SelectedFeatureIndices, Score)
select_feature_set_knn
wählt die optimalen Merkmale für
ein bestimmtes Klassifikationsproblem aus.
Die Trainingsdaten für das Klassifikationsproblem werden mit
ClassTrainDataHandle
angegeben. Als Klassifikator wird ein
k-Nearest-Neighbor-Klassifikator (k-NN) verwendet. Einige Details über
den k-NN-Klassifikator können in der Beschreibung von
create_class_knn
nachgelesen werden.
In KNNHandle
wird ein Klassifikator zurückgegeben, der mit der
resultierenden Merkmalsauswahl parametrisiert und trainiert wurde. Die
Merkmalsauswahl wird in SelectedFeatureIndices
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
ClassTrainDataHandle
Merkmalsvektoren hinzugefügt, die
aus einzelnen Untergruppen bestehen. Diese Untergruppen müssen mit Hilfe
des Operators set_feature_lengths_class_train_data
festgelegt werden.
Diese Untergruppen werden dann von dem in select_feature_set_knn
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 SelectedFeatureIndices
mit ihrem Index referenziert, außer es wurden zusätzlich Namen beim
Aufruf von set_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_data
zuvor
nicht aufgerufen, werden die einzelnen Spalten als Merkmale interpretiert.
Für den Selektionsprozess können in SelectionMethod
zwei
verschiedene Methoden ausgewählt werden: entweder die Greedy-Variante
'greedy' (das momentan erfolgversprechendste Merkmal wird
zur Auswahl hinzugefügt) oder die dynamisch oszilierende Suche
'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' schneller terminiert,
kann '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 Score
zurückgegeben.
Für diesen Klassifikator können noch folgenden Parameter
mit GenParamName
und GenParamValue
eingestellt werden:
Anzahl an Nachbarn die mindestens exakt ermittelt werden um den nächsten Nachbarn zu finden. Dieser Parameter sollte für hochdimensionale Eingaberäume erhöht werden.
Mögliche Werte: '1' , '2' , '5' , '10'
Standardwert: '1'
Anzahl an Suchbäumen im k-NN-Klassifikator
Mögliche Werte: '1' , '4' , '10'
Standardwert: '4'
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_knn
zwar einerseits einen Klassifikator
mit sehr hohem Score liefern. Andererseits weist der Klassifikator
jedoch eine schlechte Erkennugsrate auf, wenn dieser getestet wird.
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.
ClassTrainDataHandle
(input_control) class_train_data →
(handle)
Handle der Trainingsdaten. Sollte zuvor in Untermerkmale aufgeteilt worden sein.
SelectionMethod
(input_control) string →
(string)
Methode zur Auswahl der besten Merkmale.
Defaultwert: 'greedy'
Werteliste: 'greedy' , 'greedy_oscillating'
GenParamName
(input_control) string(-array) →
(string)
Namen der generischen Parameter zum Steuern des Klassifikators und der Merkmalsauswahl.
Defaultwert: []
Werteliste: 'num_neighbors' , 'num_trees'
GenParamValue
(input_control) number(-array) →
(real / integer / string)
Werte der generischen Parameter zum Steuern des Klassifikators und der Merkmalsauswahl.
Defaultwert: []
Wertevorschläge: 1, 2, 3
KNNHandle
(output_control) class_knn →
(handle)
Ein trainierter k-NN-Klassifikator.
SelectedFeatureIndices
(output_control) string-array →
(string)
Die Indizes oder Namen der ausgewählten Merkmale.
Score
(output_control) real-array →
(real)
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 more data * ... * Select the better feature with the k-NN classifier select_feature_set_knn (ClassTrainDataHandle, 'greedy', [], [], KNNHandle,\ SelectedFeatureKNN, Score) * Use the classifier * ...
Sind die Parameterwerte korrekt, dann liefert
select_feature_set_knn
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
create_class_train_data
,
add_sample_class_train_data
,
set_feature_lengths_class_train_data
select_feature_set_mlp
,
select_feature_set_svm
,
select_feature_set_gmm
select_feature_set_trainf_knn
,
gray_features
,
region_features
Foundation