Ich verstehe die Prämisse des kNN-Algorithmus für räumliche Daten. Und ich weiß, dass ich diesen Algorithmus erweitern kann, um ihn für jede kontinuierliche Datenvariable (oder für Nenndaten mit Hamming-Abstand) zu verwenden. Welche Strategien werden jedoch beim Umgang mit höherdimensionalen Daten angewendet?
Angenommen, ich habe eine Datentabelle (x [1], x [2], x [3], ..., x [n]) und möchte eine Reihe von Klassifizierern erstellen, um eine dieser Spalten vorherzusagen (sag x [n]). Mit dem kNN-Algorithmus würde ich zwei beliebige Spalten aus den verbleibenden Spalten (x [1] -x [n-1]) auswählen, gegen die trainiert werden soll. Angenommen, ich könnte x [1] und x [2] auswählen und daraus einen Klassifikator erstellen. Oder ich könnte x [1] und x [4] auswählen, oder ich könnte x [5] und x [8] usw. auswählen. Ich könnte sogar nur eine einzelne Spalte auswählen und daraus Klassifikatoren erstellen, oder 3 Spalten und erstellen ein Klassifikator davon. Gibt es einen Vorteil bei der Verwendung höherer Dimensionen (2D, 3D usw.) oder sollten Sie einfach x-1-Klassifikatoren für einzelne Dimensionen erstellen und deren Vorhersagen auf irgendeine Weise aggregieren?
Da das Erstellen all dieser Klassifizierer aus allen möglichen Kombinationen der Variablen rechenintensiv wäre. Wie könnte ich diese Suche optimieren, um die besten kNN-Klassifikatoren aus diesem Satz zu finden? Und wenn ich eine Reihe von Klassifikatoren gefunden habe, wie kann ich ihre Ausgabe am besten zu einer einzigen Vorhersage kombinieren? Die Abstimmung könnte die einfachste Antwort auf diese Frage sein. Oder gewichten Sie jede Stimme mit Fehlerraten aus den Trainingsdaten für jeden Klassifikator.
Wie wenden die meisten Implementierungen kNN auf ein allgemeineres Lernen an?
quelle
Antworten:
Dies hängt davon ab, ob Ihre Funktionen informativ sind oder nicht. Haben Sie den Verdacht, dass einige Funktionen für Ihre Klassifizierungsaufgabe nicht nützlich sind? Um eine bessere Vorstellung von Ihren Daten zu erhalten, können Sie auch versuchen, paarweise Korrelationen oder gegenseitige Informationen zwischen der Antwortvariablen und jedem Ihrer Features zu berechnen.
Um alle (oder eine Teilmenge) Ihrer Funktionen zu kombinieren, können Sie versuchen, die Entfernung L1 (Manhattan) oder L2 (Euklidisch) zwischen dem Abfragepunkt und jedem Trainingspunkt als Ausgangspunkt zu berechnen.
Dies ist das Problem der Auswahl von Feature-Teilmengen. In diesem Bereich gibt es viele akademische Arbeiten (siehe Guyon, I. & Elisseeff, A. (2003). Eine Einführung in die Variablen- und Merkmalsauswahl. Journal of Machine Learning Research, 3, 1157-1182. Für einen guten Überblick ).
Dies hängt davon ab, ob die ausgewählten Funktionen unabhängig sind oder nicht. Für den Fall, dass Features unabhängig sind, können Sie jedes Feature anhand seiner gegenseitigen Informationen (oder eines anderen Maßes für die Informativität) mit der Antwortvariablen (unabhängig davon, was Sie klassifizieren) gewichten. Wenn einige Funktionen abhängig sind, funktioniert wahrscheinlich ein einzelnes Klassifizierungsmodell am besten.
Indem der Benutzer seine eigene Abstandsmatrix zwischen den Punkten festlegen kann. kNN funktioniert gut, wenn eine geeignete Abstandsmetrik verwendet wird.
quelle