2016-06-03 5 views
0

Ich führe knn (in R) auf ein Dataset, wo Objekte A oder B klassifiziert sind. Es gibt jedoch viel mehr A als B (18 der Klasse A für jede 1 von Klasse B).k-nächste Nachbarn, wo die Anzahl der Objekte in jeder Klasse sehr unterschiedlich ist

Wie soll ich das bekämpfen? Wenn ich beispielsweise ak von 18 verwende und es 7 B's in den Nachbarn gibt (viel mehr als die durchschnittlichen B's in einer Gruppe von 18), werden die Testdaten immer noch als A klassifiziert, wenn es wahrscheinlich B sein sollte.

Ich denke, dass ein niedriger k wird mir helfen. Gibt es eine Faustregel für die Wahl des Wertes von k, da er sich auf die Häufigkeiten der Klassen im Zugverband bezieht?

Antwort

1

Ther ist keine solche Regel, für Ihren Fall würde ich einen sehr kleinen k wahrscheinlich versuchen, zwischen 3 und 6

Über den Datensatz, es sei denn, Ihre Testdaten oder Daten der realen Welt sind in etwa dem gleichen Verhältnis gefunden Sie Ich habe erwähnt (18: 1) ich würde einige A für genauere Ergebnisse entfernen, ich werde Ihnen nicht empfehlen, es zu tun, wenn das Verhältnis tatsächlich in der Nähe der realen Daten ist, weil Sie den Effekt des Verhältnisses verlieren (niedrigere Wahrscheinlichkeit für einen niedrigeren Wahrscheinlichkeitsdaten).

+0

Danke für den Hinweis! Ich habe am Ende einige A's entfernt, um das Verhältnis zu verringern, und ein kleineres k verwendet. Ich bin zufrieden mit den Ergebnissen. – Colin

Verwandte Themen