Ich habe einen Datensatz mit Spalten a b c
(3 Attribute). a
ist dabei numerisch und stetig b
und c
kategorisch mit jeweils zwei Ebenen. Ich verwende die K-Nearest Neighbors-Methode zum Klassifizieren a
und b
Weiter c
. Um die Entfernungen messen zu können, transformiere ich meinen Datensatz durch Entfernen b
und Hinzufügen von b.level1
und b.level2
. Wenn die Beobachtung i
die erste Ebene in den b
Kategorien hat, b.level1[i]=1
und b.level2[i]=0
.
Jetzt kann ich Entfernungen in meinem neuen Datensatz messen: a b.level1 b.level2
Aus theoretischer / mathematischer Sicht: Können Sie K-Nearest Neighbour (KNN) sowohl mit binären als auch mit kontinuierlichen Daten durchführen?
Ich benutze FNN
Paket in R und die Funktionknn()
r
classification
k-nearest-neighbour
k.dkhk
quelle
quelle
Antworten:
Es ist in Ordnung, kategoriale und kontinuierliche Variablen (Features) zu kombinieren.
Irgendwie gibt es nicht viel theoretischen Grund für eine Methode wie k-NN. Die Heuristik ist, dass wenn zwei Punkte (je nach Entfernung) nahe beieinander liegen, sie in Bezug auf die Ausgabe etwas gemeinsam haben. Vielleicht ja vielleicht nein. Und es hängt von der Entfernung ab, die Sie verwenden.
In Ihrem Beispiel definieren Sie einen Abstand zwischen zwei Punkten und wie:( a ' , b ' , c ' )(a,b,c) (a′,b′,c′)
Dies entspricht der impliziten Angabe von Gewichten für jedes Merkmal.
Beachten Sie, dass wenn große Werte (wie 1000, 2000 ...) mit großer Varianz annimmt, die Gewichte von Binärmerkmalen im Vergleich zum Gewicht von vernachlässigbar sind . Nur der Abstand zwischen und wird wirklich wichtig sein. Und umgekehrt: Wenn kleine Werte wie 0,001 annimmt, zählen nur binäre Features.a a a ' aa a a a′ a
Sie können das Verhalten normalisieren, indem Sie erneut wiegen: Teilen Sie jedes Feature durch seine Standardabweichung. Dies gilt sowohl für kontinuierliche als auch für binäre Variablen. Sie können auch Ihre eigenen bevorzugten Gewichte angeben.
Beachten Sie, dass die R-Funktion kNN () dies für Sie erledigt: https://www.rdocumentation.org/packages/DMwR/versions/0.4.1/topics/kNN
Verwenden Sie als ersten Versuch einfach norm = true (Normalisierung). Dies vermeidet die meisten Unsinnigkeiten, die beim Kombinieren von fortlaufenden und kategorialen Merkmalen auftreten können.
quelle
Ja, Sie können KNN sicherlich sowohl mit binären als auch mit kontinuierlichen Daten verwenden, aber es gibt einige wichtige Überlegungen, die Sie dabei berücksichtigen sollten.
Die Ergebnisse werden stark von den binären Teilungen in Bezug auf die Streuung unter den reellen Ergebnissen (für 0-1 skalierte, ungewichtete Vektoren) beeinflusst, wie unten dargestellt:
Sie können in diesem Beispiel sehen, dass die nächsten Nachbarn einer einzelnen Beobachtung nach Entfernung VIEL stärker von der binären Variablen als von der skalierten Realwertvariablen beeinflusst werden.
Darüber hinaus erstreckt sich dies auf mehrere binäre Variablen. Wenn wir eine der reellen Variablen in binäre Variablen ändern, können wir sehen, dass die Abstände durch Abgleich aller beteiligten binären Variablen viel besser informiert werden als in der Nähe der reellen Werte:
Sie möchten nur kritische binäre Variablen einschließen - Sie fragen tatsächlich "nach allen Beobachtungen, die mit dieser Konfiguration von binären Variablen (falls vorhanden) übereinstimmen, die die nächsten reellen Werte haben?" Dies ist eine vernünftige Formulierung vieler Probleme, die mit KNN angegangen werden könnten, und eine sehr schlechte Formulierung anderer Probleme.
quelle