www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Künstliche Intelligenz und Robotik" - K-Nearest Neighbor
K-Nearest Neighbor < Künstl. Intelligenz < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Künstliche Intelligenz und Robotik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

K-Nearest Neighbor: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:48 Do 02.02.2012
Autor: natascha

Aufgabe
Klassifizieren Sie die neue Instanz (93,8,10) unter Verwendung des k-nearest neighbor Algorithmus und der euklidischen Distanz. Was ist das Problem bei diesem Dataset?
Gegebene Werte:
1) 126, 14, 6, A
2) 102, 6, ,12, A
3) 127, 13, 10, B
4) 99, 8, 6, A
5) 89, 5, 5, A
6) 103, 15, 7, A
7) 112, 17, 12, B
8) 87, 10, 11, A
9) 88, 11, 6, A
10) 93, 8, 10, A

Guten Tag,
Zuerst einmal denke ich, dass das Problem darin besteht, dass die neue Instanz bereits in der Tabelle vorkommt. Wenn ich ganz normal vorgehe, erinnere ich mich aus dem Unterricht, dass wir zuerst die Distanz von der neuen Instanz zu allen anderen berechnen müssen, deswegen fange ich wie folgt an:
d(new,1) = sqrt(1089+36+16) = 33.78
d(new,2) = 9.43
d(new,3) = 34.36
d(new,4) = 7.746
d(new,5) = 7.07
d(new,6) = 12.57
d(new,7) = 21.1187
d(new,8) = 6.403
d(new,9) = 7.07
d(new,10) = 0
Die kleinste Distanz ist mit dem Eintrag 10 aus der Tabelle, dieser sollte also Root werden des Baumes.
Nun soll das Attribut gewählt werden, anhand welchem ich die Einträge sortiere (wenn grösser als bei Eintrag 10 auf die rechte Seite, und sonst auf die linke Seite).
Stimmt das soweit? Woher weiss ich, welches Attribut ich nehmen soll für das Splitten?
Vielen Dank im Voraus!
Liebe Grüsse,
Natascha

        
Bezug
K-Nearest Neighbor: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 13:40 Fr 03.02.2012
Autor: natascha

Guten Tag!
Ich wäre echt froh, wenn mir jemand bezüglich dieses Algorithmus helfen könnte. Vielleicht kennt jemand einen LInk zu einem guten BEispiel? Hab gegooglet, aber bis jetzt noch nichts schlaues gefunden. Ich muss diesen Algorithmus unbedingt verstehen! Vielen Dank im Voraus!

Bezug
                
Bezug
K-Nearest Neighbor: Antwort
Status: (Antwort) fertig Status 
Datum: 16:02 Fr 03.02.2012
Autor: sandp

hey,
hast du irgendwo in deinen Unterlagen einen Pseodocode oder irgendwas ähnliches, dass man die vorgehensweiße des Algorithmus nachvollziehen kann, da man wirklich sehr wenig über den Algorithmus im Internet(und es oft dann auch kleine Unterschiede gibt) findet und ich von dem Algorithmus auch noch nichts gehört habe.

Also dass du am Anfang den Abstand zu allen Instanzen bilden musst, das scheint richtig zu sein, das wird wohl auch der Grund sein warum der Algorithmus nicht so oft angewandt wird, da das ja ziemlich viel Aufwand ist.

Gruß sandp

Bezug
                
Bezug
K-Nearest Neighbor: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:20 So 05.02.2012
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
K-Nearest Neighbor: Antwort
Status: (Antwort) fertig Status 
Datum: 16:55 Fr 03.02.2012
Autor: Pille456

Hi!

In der Tat findet man recht wenig zur K-Nearest Neighbour Methode, aber im Prinzip ist diese recht einfach:

Man hat eine gegeben Trainingsdatenmenge, wo jedem Punkt (oder allg. jedem Vektor) eine Klasse zugewisen wurde. Das hast Du ja hier auch gegeben.
Der eigentliche Algorithmus sucht nun zu dem Datenvektor c und den passenden Trainingsdaten T die dazugehörige Klasse.
In "Grundkurs Künstliche Intelligenz" von Wolfang Ertel wird das etwas formaler so beschrieben:

NearestNeighbour(M_+,M_-,s)
  t = [mm] argmin_{x \in M_+ \cup M_-} \{d(s,x)\} [/mm]
  If t [mm] \in M_{+} [/mm] Then Return("+")
  else Return("-")

wobei [mm] M_{+} [/mm] die Menge der positiven Testdaten, [mm] M_{-} [/mm] die Menge der negativen Testdaten und s der zu klassifizierende Vektor ist. d bezeichnet hier irgendeine Abstandsmetrik, bei Dir also den euklidischen Abstand.
Jetzt hast Du k nicht gegeben, daher gehe ich davon aus, dass der obrige Algo. ausreicht. (quasi k = 1)

Beim klassischen K-Nearest-Neighbour betrachtet man nun die k nächsten Datenpunkte im Bezug auf d(..).
Überlicherweise führt man dann oben eine Mehrheitsentscheidung duch, falls k > 1 ist. Das heißt, du betrachtetst die k nächsten Nachbarn und gibst die häufigste Klassifikation zurück. (Wenn 2 Nachbar "+" sind und einer "-" bei k = 3, dann gibst Du halt "+" zurück)
Falls diese Anzahl gleich ist, dann gibst Du was zufälliges zurück.

Ich hoffe das hilft ein wenig.

Gruß
Pille


Edit: Bzgl. der Frage was hier problematisch am Datenset ist: Ich würde mir die Punkte mal aufmalen/plotte. Ich vermute(!!) dann wird dabei herauskommen, dass der Abstand zum neuen Punkt von einer Klasse aus geringer als der zu einer anderen ist, obwohl man intuitiv den Punkt der anderen Klassen zugewiesen hätte. Das heißt der Algo. wählt hier eine Klassifierung, die dem Menschen nicht direkt schlüssig erscheint (aufgrund der Testdatenmenge)

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Künstliche Intelligenz und Robotik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]