2016-07-19 2 views
0

Ich versuche eine Empfehlung basierend auf Feature-Ähnlichkeit zu machen, wobei meine Punkte im Feature-Space eindeutige Klassen darstellen. Im Wesentlichen habe ich Hunderte von einzigartigen Objekten als niedrigdimensionale Feature-Vektoren dargestellt und ich möchte die k-nächsten Nachbarn in Rangordnung für eine neue Beobachtung finden.k-Nächstliegende Nachbarn, in denen jeder Punkt seine eigene Klasse hat

Konventionell finden Sie die k Nachbarn und wählen Sie die Klasse mit der Mehrheit der Darstellung darin. Das wird in meinem Fall nicht funktionieren, wenn man bedenkt, dass jeder Gegenstand seine eigene Klasse hat.

Ist k NN der falsche Ansatz hier? Gibt es eine andere Familie von Algorithmen, die für diese Art von Problem besser geeignet sind?

+0

Sie haben also mehrere Klassen und Ihr Zugset für jede Klasse ist nur ein Element? – amit

+0

@it genau. Potenziell Hunderte von Klassen, wobei jede Klasse nur ein Element ist. –

+0

Nun, Machine Learning-Algorithmen benötigen in der Regel mehr als ein Element pro Klasse, um richtig zu arbeiten. Ich meine, du kannst mit NN (kNN mit k = 1) gehen, aber ich würde diese Maschine nicht in deinem Fall lernen ... – amit

Antwort

1

Ob kNN der richtige Ansatz ist, hängt davon ab, ob Ihre Klassen gut durch eine Abstandsmetrik in Ihrem Merkmalsraum gekennzeichnet sind. Es gibt nichts an sich falsch mit dem, was Sie vorschlagen. Sie können jeder Trainingsbeobachtung einfach eine eindeutige Klasse zuordnen und dann kNN mit k = 1 anwenden.

+0

Danke @bogatron. Wenn * k * 1 ist, wie leite ich eine Rangfolge ab? Ich hoffe, die Liste der nächsten Klassen in der Entfernungsreihenfolge zu finden –

+0

Ah. Das ist anders. Bei kNN geht es nicht wirklich um Ranking-Klassen. Wenn Sie nur den nächsten Nachbarn haben wollten, könnten Sie fast jede mögliche kNN-Implementierung verwenden. Aber wenn Sie Klassen rangieren möchten, dann würde ich einfach ein Skript schreiben, um die Entfernungen zu jedem Trainingspunkt zu generieren (in absteigender Reihenfolge). Der erste Punkt (der kleinste Abstand) entspricht der kNN-Klasse (mit 'k = 1 ') und die anderen Punkte sind die Klassen mit dem niedrigeren Rang. – bogatron

1

Es klingt wie Sie eine recommender system bauen möchten, wo Sie neue Produkte basierend auf einem bereits gekauften Produkt empfehlen. Dies ist kein Klassifikationsproblem, und Sie sollten es nicht wie eins behandeln.

Welche Methode zu verwenden ist, hängt wirklich von mehr Details zu Ihren Daten, der Menge, der Feature-Darstellung und anderen Problemen ab. Recommender Systeme sind oft ein schwierigeres Problem, sie einfache Klassifizierung mit differenzierteren Fragen. This coursera course könnte hilfreicher für Sie sein.

+0

Ja, ich möchte eine Empfehlung abgeben. Das letztendliche Ziel ist eine Art von einmaliger Empfehlung basierend auf Umfrageantworten. Wir haben hier keine Kauf- (oder irgendeinen) Geschichte (und dies ist kein Kauf). Ich bin mir der Literatur zu diesem Thema bewusst, für die kurze Zeit hatte ich gehofft, dies als Klassifikationsproblem zu betrachten, als eine Art Beweis des Konzepts, dass ein ML-Ansatz hier nützlich sein könnte. Vielen Dank! –

Verwandte Themen