DataLab ist ein kompaktes Statistikprogramm zur explorativen Datenanalyse. Weitere Informationen finden Sie auf den DataLab Webseiten ....



Eine geführte Tour: KNN-Klassifikation

Die Methode der Klassifizierung über die k-nächsten Nachbarn (KNN) ist ein sehr altes und sehr mächtiges Verfahren. Die Klassifikation wird mit einem Referenzdatensatz durchgeführt, der sowohl die Eingangs- als auch die Zielvariablen enthält. Dieser Datensatz dient als Basis für den Vergleich der unbekannten Daten. Der Abstand der unbekannten Daten zu den k nächsten Nachbarn legt die Klassenzugehörigkeit fest, in dem entweder der Mittelwert der Klassennummern der k nächsten Referenzpunkte gebildet wird, oder in dem ein Mehrheitskriterium angewendet wird. DataLab erweitert dieses Konzept, so dass es auch auf kontinuierliche Probleme angewendet werden kann, in dem es eine Kombination aus KNN und multipler linearer Regression anbietet. Der zu modellierende Wert der Unbekannten wird geschätzt, in dem eine multiple Regression erstellt wird, die auf den k nächsten Nachbarn basiert.

Um Ihnen zu zeigen, wie Sie eine Klassifikation mit der KNN-Methode durchführen können, müssen Sie zuerst einen anderen Datensatz laden (Befehl Datei/Laden/IDT Format): FLURIEDW.IDT. Dieser Datensatz umfasst geometrische Maße von 100 echten und 100 gefälschten Banknoten (die Daten wurden freundlicherweise von H. Riedwyl, Universität Bern, Schweiz zur Verfügung gestellt [Flury 83]). Lassen Sie uns nun versuchen, einen Klassifikator zu entwickeln, der sich auf die Klassifikationsregel von KNN stützt, um zwischen den richtigen und den gefälschten Banknoten zu unterscheiden.

Wenn Sie einen Blick auf die numerischen Werte des Datensatzes werfen, wird Ihnen sofort auffallen, dass einige Variablen (z.B.: Left oder Diagonal) einen relativ hohen Mittelwert im Vergleich zu ihrer Standardabweichung haben. Der erste Schritt wird also sein, die Datenmatrix mit dem Befehl Mathematik/Skalierung/Standardisierung/Spalten zu standardisieren (Mittelwert = 0.0, Standardabweichung = 1.0). Das stellt sicher, dass die durch KNN berechneten Abstände nicht durch den hohen Mittelwert der Variablen dominiert werden.

Als nächstes müssen wir eine Variable erzeugen, die die Klasseninformation enthält. Dazu erweitern wir unsere Datenmatrix um eine Spalte (Befehl Editieren/Ausmaße der Datenmatrix, Knopf ) und kopieren den Klasseninformationsvektor in diese zusätzliche leere Variable (Befehl Editieren/Daten/Kopieren/aus der Klasseninformation). Sie sollten nun sieben Variablen haben, von denen die siebente die Klasseninformation enthält.

Um die Qualität des Klassifikators kontrollieren zu können, teilen wir unseren Datensatz in einen Trainings- und einen Testdatensatz. Der Trainingsdatensatz wird dazu verwendet, den Klassifikator zu erstellen, während der Testdatensatz später zum Testen des selben dient. Wir teilen daher den Datensatz mit dem Befehl Editieren/Datensatz aufspalten in zwei gleich große, zufällig gezogene, getrennte Teilmengen auf. Stellen Sie dazu im Bedienfeld dieses Befehls als Aufspaltmodus zeilenweise ein, als Auswahlmodus zufällig, und als Zahl der Teildatensätze 2 ein. Durch Drücken des Knopfes Ausführen werden dann zwei getrennte Datensätze, FLURIEDW01.ASC und FLURIEDW02.ASC, erzeugt (beachten Sie, dass die Teilmengen als ASC-Format gespeichert werden).

Als nächstes laden wir den Trainingsdatensatz FLURIEDW01.ASC (Befehl Datei/Laden/ASC-Format), und erstellen unter Verwendung der Variablen Bottom, Top und Diagonal ein KNN-Modell. Dazu müssen Sie den Befehl Mathematik/KNN... anklicken und das Modell durch Klicken auf den Knopf Neues Modell erstellen. Als Eingangsvariablen wählen Sie diese drei Variablen, als Zielvariable wird die Klasseninformation (7. Spalte) gewählt. DataLab erstellt nun das KNN-Modell und speichert. Dieses KNN-Modell kann nun als Klassifikator für unbekannte Daten verwendet werden, vorausgesetzt, die unbekannten Daten wurden in der selben Weise skaliert wie die Modelldaten. Da diese Bedingung für unseren 'unbekannten' Datensatz FLURIEDW02.ASC zutrifft, können wir ihn sofort verwenden und unseren Klassifikator darauf anwenden.

Laden Sie dazu den Datensatz FLURIEDW02.ASC mit dem Befehl Datei/Laden/ASC-Format. Nun können Sie den Klassifikator mit dem Befehl Mathematik/KNN/... auf diese Daten anwenden (Knopf Modell anwenden). Doch zuvor sollten Sie die Variablenanzahl der Datenmatrix um fünf erhöhen, um einige leere Spalten für mehrere Klassifikationsdurchgänge zu bekommen.

Die Klassifikation kann unter Verwendung verschiedener Parameter (Zahl der Nachbarn, Art der Gewichtung) durchgeführt werden. Lassen Sie uns als ersten Versuch den unbekannten Datensatz klassifizieren, in dem wir als Gewichtungsmodus die Mehrheitswahl und die 11 nächsten Nachbarn verwenden. Klicken Sie danach auf Modell anwenden und selektieren Sie die Spalte, in der das Klassifikationsergebnis gespeichert werden soll. Wählen Sie eine der leeren Spalten, worauf DataLab die Klassifikation durchführt und die Ergebnisse in diese leere Spalte schreibt. Sie sehen sofort, dass (fast) alle Daten richtig klassifiziert werden. Sie können nun ausprobieren, ob die Zahl der Nachbarn einen Einfluss auf das Ergebnis hat. Setzen Sie die Zahl der Nachbarn auf 3 und wiederholen Sie die Klassifikation.

Das Mehrheitskriterium hat den Vorteil, dass es in einer eindeutigen Klassenzuweisung der Unbekannten resultiert. Das kann jedoch auch ein Nachteil sein, da Sie nicht wissen, ob das Mehrheitskriterium eindeutig war, oder gerade an der Grenze (zum Beispiel 4:5 im Falle von 9 nächsten Nachbarn). Um ein wenig Einblick in die Verlässlichkeit der KNN-Klassifikation zu bekommen, können Sie alternativ den Mittelwert als Gewichtungsschema benützen. Das würde die Unsicherheit dieses Kriteriums aufzeigen, da das Ergebnis der Klassifikation keine ganzzahlige Klassennummer wäre, sondern der Mittelwert aller Kriterien. Versuchen Sie es also noch einmal mit 11 Nachbarn, und setzen sie das Gewichtungsschema auf Durchschnitt. Tragen Sie nun das Ergebnis der Klassifikation gegen die Objektnummer auf (Diagramm Spalte/Index). Wenn Sie im Kontextmenü des Diagramms die Option auf Objekte einrasten einschalten, können Sie im Menüfeld von DataLab sehen um welche Objekte es sich handelt, wenn Sie die Maus in die Nähe dieser Punkte bringen.

Sie könnten nun weitere Untersuchungen durchführen (so als ob die 'unbekannten' Daten tatsächlich unbekannt wären), um eine Idee über die richtige Klassenzuweisung der unsicheren Objekte zu bekommen.

 


Last Update: 2012-Jul-25