K Nächste Nachbar Algorithmus Zweifel

7

Ich bin neu in der Künstlichen Intelligenz. Ich verstehe K nearest neighbor Algorithmus und wie man es implementiert. Wie aber berechnen Sie die Entfernung oder das Gewicht von Dingen, die nicht auf einer Skala sind?

Zum Beispiel kann die Entfernung des Alters leicht berechnet werden, aber wie berechnet man, wie nah ist rot zu blau? Vielleicht sind Farben ein schlechtes Beispiel, weil man immer noch sagen kann, dass man die Frequenz benutzt. Wie wäre es mit einem Burger Pizza zu Pommes zum Beispiel?

Ich habe das Gefühl, dass es einen cleveren Weg dafür gibt.

Vielen Dank im Voraus für Ihre Aufmerksamkeit.

EDIT: Vielen Dank für die netten Antworten. Es hat wirklich geholfen und ich schätze es. Aber ich denke, dass es einen Ausweg geben muss.

Kann ich es so machen? Nehmen wir an, ich verwende meinen KNN-Algorithmus, um eine Vorhersage für eine Person zu treffen, ob sie / er in meinem Restaurant essen wird, das alle drei oben genannten Nahrungsmittel serviert. Natürlich gibt es andere Faktoren, aber um es einfach zu halten, für den Bereich des Lieblingsessen, von 300 Menschen, 150 liebt Burger, 100 liebt Pizza und 50 liebt Pommes. Der gesunde Menschenverstand sagt mir, dass Lieblingsessen die Entscheidung der Menschen beeinflusst, ob sie essen sollen oder nicht.

Nun gibt eine Person ihr Lieblingsessen als Burger ein und ich werde voraussagen, ob sie / er in meinem Restaurant essen wird. Ohne Rücksicht auf andere Faktoren und basierend auf meiner (Trainings-) Vorwissensbasis sagt mir der gesunde Menschenverstand, dass es eine höhere Chance gibt, dass die Entfernung des nächstgelegenen Nachbarn für dieses spezielle Lieblingsfeld näher ist als wenn er Pizza oder Pommes eingibt. p>

Das einzige Problem dabei ist, dass ich die Wahrscheinlichkeit benutzt habe, und ich könnte falsch liegen, weil ich die tatsächliche Entfernung nicht kenne und wahrscheinlich nicht berechnen kann. Ich mache mir auch Sorgen über dieses Feld, das meiner Vorhersage zu viel / zu wenig Gewicht beilegt, da die Entfernung wahrscheinlich nicht mit anderen Faktoren (Preis, Tageszeit, volles Restaurant usw., das ich leicht quantifizieren kann) skaliert ist, sondern ich Ich schätze, ich könnte es mit einigen Parametereinstellungen umgehen.

Oh, jeder hat eine großartige Antwort gegeben, aber ich kann nur eine annehmen. In diesem Fall akzeptiere ich morgen den mit den meisten Stimmen. Vielen Dank noch einmal.

    
wai 29.03.2009, 17:09
quelle

7 Antworten

11

Stellen Sie alle Lebensmittel, für die Sie Daten sammeln, als "Dimension" (oder als Spalte in einer Tabelle) dar.

Zeichnen Sie "Likes" für jede Person auf, für die Sie Daten sammeln können, und platzieren Sie die Ergebnisse in einer Tabelle:

%Vor%

Wenn Sie nun einer neuen Person Informationen über einige der Lebensmittel geben, die sie mag, können Sie die Ähnlichkeit mit anderen Personen messen, indem Sie ein einfaches Maß wie das Pearson-Korrelationskoeffizient oder die Cosinus-Ähnlichkeit , etc.

Jetzt haben Sie einen Weg, K nächste Nachbarn zu finden und eine Entscheidung zu treffen.

Weitere Informationen hierzu finden Sie unter "kollaboratives Filtern" (aber ich warne Sie, es wird math-y).

    
SquareCog 30.03.2009, 12:58
quelle
7

Nun, "am nächsten" bedeutet, dass Sie eine Metrik haben, auf der Dinge mehr oder weniger weit entfernt sein können. Die Quantifizierung von "Burger", "Pizza" und "Pommes" ist nicht so sehr ein KNN-Problem, sondern vielmehr eine grundlegende Systemmodellierung. Wenn Sie ein System haben, in dem Sie Analysen durchführen, bei denen "Burger", "Pizza" und "Pommes" Begriffe sind, wird der Grund für die Existenz des Systems darin bestehen, zu bestimmen, wie sie quantifiziert werden - wie wenn Sie es wären versuchen, herauszufinden, wie man den besten Geschmack und die wenigsten Kalorien für eine bestimmte Menge Geld bekommen, dann ta-da, wissen Sie, was Ihre Metriken sind. (Natürlich ist "bester Geschmack" subjektiv, aber das sind andere Probleme.)

Es ist nicht Sache dieser Begriffe, eine inhärente Quantifizierbarkeit zu haben und Ihnen so zu sagen, wie Sie Ihr Analysesystem entwerfen; Es liegt an Ihnen, zu entscheiden, was Sie erreichen möchten, und von dort aus Metriken zu entwerfen.

    
chaos 29.03.2009 17:20
quelle
5

Dies ist eines der Probleme der Wissensrepräsentation in AI. Subjektiv spielt eine große Rolle. Würden Sie und ich zum Beispiel der "Nähe" von Burger, Pizza und Pommes zustimmen?

Sie benötigen wahrscheinlich eine Nachschlagmatrix, die die zu vergleichenden Elemente enthält. Sie können diese Matrix möglicherweise reduzieren, wenn Sie Transitivität annehmen können, aber ich denke, auch das wäre in Ihrem Beispiel unsicher.

Der Schlüssel könnte darin bestehen, zu versuchen, die Funktion zu ermitteln, die Sie vergleichen möchten. Zum Beispiel, wenn Sie Ihre Lebensmittel auf Gesundheit vergleichen, können Sie etwas Objektives erreichen.

    
dommer 29.03.2009 17:15
quelle
2

Wenn Sie sich "Collective Intelligence" ansehen, sehen Sie, dass sie eine Skala und einen Wert zuweisen . So vergleicht Netflix Filmrankings und so.

Sie müssen "Nähe" definieren, indem Sie diese Skala erstellen und ihnen Werte zuweisen.

    
duffymo 29.03.2009 17:16
quelle
1

Ich würde den Benutzern tatsächlich Paare dieser Attribute präsentieren und sie bitten, ihre Nähe zu definieren. Sie würden sie mit einer Skala präsentieren, die von [Synonym .. sehr fremd] oder ähnlichem reicht. Wenn viele Leute dies tun, werden Sie mit einer weithin akzeptierten Näherungsfunktion für die nichtlinearen Attributwerte enden.

    
Ralph M. Rickenbach 30.03.2009 12:36
quelle
0

Es gibt keinen "besten" Weg, dies zu tun. Letztendlich müssen Sie eine willkürliche Skala erstellen.

    
j_random_hacker 29.03.2009 17:17
quelle
0

Gute Antworten. Sie könnten einfach eine Metrik erstellen oder, wie Malach es vorschlägt, einige Leute fragen. Um es wirklich richtig zu machen, klingt es so, als ob Sie Bayesian-Analyse brauchen.

    
Mike Dunlavey 30.03.2009 12:43
quelle