Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Nächste-Nachbarn-Klassifikation – Wikipedia
Nächste-Nachbarn-Klassifikation – Wikipedia
aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von K-Nearest-Neighbor)
K-Nächste-Nachbarn in einer zweidimensionalen Punktmenge mit k=1 (dunkelblau) und k=5 (hellblau). Der Radius der Kreise ist nicht fest.

Die Nächste-Nachbarn-Klassifikation ist eine nichtparametrische Methode zur Schätzung von Wahrscheinlichkeitsdichtefunktionen. Der daraus resultierende K-Nearest-Neighbor-Algorithmus (KNN, zu Deutsch „k-nächste-Nachbarn-Algorithmus“) ist ein Klassifikationsverfahren, bei dem eine Klassenzuordnung unter Berücksichtigung seiner k {\displaystyle k} {\displaystyle k} nächsten Nachbarn vorgenommen wird. Der Teil des Lernens besteht aus simplem Abspeichern der Trainingsbeispiele, was auch als lazy learning („träges Lernen“) bezeichnet wird. Eine Datennormalisierung kann die Genauigkeit dieses Algorithmus erhöhen.[1][2]

k-Nearest-Neighbor-Algorithmus

[Bearbeiten | Quelltext bearbeiten]

Die Klassifikation eines Objekts x ∈ R n {\displaystyle x\in \mathbb {R} ^{n}} {\displaystyle x\in \mathbb {R} ^{n}} (oft beschrieben durch einen Merkmalsvektor) erfolgt im einfachsten Fall durch Mehrheitsentscheidung. An der Mehrheitsentscheidung beteiligen sich die k nächsten bereits klassifizierten Objekte von x {\displaystyle x} {\displaystyle x}. Dabei sind viele Abstandsmaße denkbar (Euklidischer Abstand, Manhattan-Metrik usw.). x {\displaystyle x} {\displaystyle x} wird der Klasse zugewiesen, welche die größte Anzahl der Objekte dieser k {\displaystyle k} {\displaystyle k} Nachbarn hat. Für zwei Klassen kann ein Unentschieden bei der Mehrheitsentscheidung durch ein ungerades k {\displaystyle k} {\displaystyle k} verhindert werden.

Voronoi-Diagramm mit sieben Stützstellen

Für ein klein gewähltes k {\displaystyle k} {\displaystyle k} besteht die Gefahr, dass Rauschen in den Trainingsdaten die Klassifikationsergebnisse auf den Testdaten verschlechtert. Für k = 1 {\displaystyle k=1} {\displaystyle k=1} ergibt sich ein Voronoi-Diagramm. Wird k {\displaystyle k} {\displaystyle k} zu groß gewählt, besteht die Gefahr, Punkte mit großem Abstand zu x {\displaystyle x} {\displaystyle x} in die Klassifikationsentscheidung mit einzubeziehen. Diese Gefahr ist insbesondere groß, wenn die Trainingsdaten nicht gleichverteilt vorliegen oder nur wenige Beispiele vorhanden sind. Bei nicht gleichmäßig verteilten Trainingsdaten kann eine gewichtete Abstandsfunktion verwendet werden, die näheren Punkten ein höheres Gewicht zuweist als weiter entfernten. Ein praktisches Problem ist auch der Speicher- und Rechenaufwand des Algorithmus bei hochdimensionalen Räumen und vielen Trainingsdaten.

Pseudocode-Beispiel

[Bearbeiten | Quelltext bearbeiten]
function KNaechsteNachbarn(trainDaten, trainLabels, neuerPunkt, k=3)
    """      
    Parameter:
        trainDaten (Liste von Listen): Trainingsdaten (Merkmalsvektoren).
        trainLabels (Liste): Zugehörige Klassenlabels.
        neuerPunkt (Liste): Zu klassifizierender Datenpunkt.
        k (Ganzzahl): Anzahl der zu berücksichtigenden nächsten Nachbarn.
    
    Rückgabe:
        Vorhergesagtes Klassenlabel (Ganzzahl).
    """
    
    # 1. Prüfung auf gleiche Dimension aller Punkte
    dimension = length(neuerPunkt)
    for index, trainingspunkt in trainDaten:
        if length(trainingspunkt) != dimension:
            error("Trainingspunkt " + index + " hat falsche Dimension: " 
			      + length(trainingspunkt) + " statt " + dimension)
    
    # 2. Sicherstellung eines gültigen k-Werts
    anzahlTrainingspunkte = length(trainDaten)
    if k <= 0:
        k = 1  # Mindestens ein Nachbar muss berücksichtigt werden
    elif k > anzahlTrainingspunkte:
        k = anzahlTrainingspunkte  # k darf nicht größer als die Datenmenge sein

    # 3. Berechnung der quadrierten euklidischen Distanzen
    distanzen = []
    for index, trainingspunkt in trainDaten:
        distanzQuadrat = 0
        # Summe der quadrierten Differenzen in allen Dimensionen
        for i in 0 bis dimension-1:
            differenz = trainingspunkt[i] - neuerPunkt[i]
            distanzQuadrat = distanzQuadrat + (differenz * differenz)
        # Speichere Tupel aus (Distanzquadrat, Index)
        distanzen.hinzufügen((distanzQuadrat, index))

    # 4. Sortierung der Distanzen und Auswahl der k nächsten Nachbarn
	# Aufsteigend nach Distanzquadrat
    distanzen.sortiere(nach = x -> x[0])  
    nachbarIndizes = []
    for i in 0 bis k-1:
	# Extrahiere Indizes der k kleinsten Distanzen
        nachbarIndizes.hinzufügen(distanzen[i][1])  

    # 5. Mehrheitsentscheid (Majority Vote mit Tie-Breaking)
    klassenAnzahl = {}
    for index in nachbarIndizes:
        label = trainLabels[index]
        if label in klassenAnzahl:
            klassenAnzahl[label] = klassenAnzahl[label] + 1
        else:
            klassenAnzahl[label] = 1
    
    # Bestimmung der Siegerklasse mit Gleichstandsregelung
    maxStimmen = max(klassenAnzahl.werte())
    kandidaten = []
    for klasse, stimmen in klassenAnzahl:
        if stimmen == maxStimmen:
            kandidaten.hinzufügen(klasse)
    
    # Wähle die kleinste Klassenkennung als Tie-Breaker (z. B. 0 < 1)
    return min(kandidaten)

Siehe auch

[Bearbeiten | Quelltext bearbeiten]
  • Mustererkennung
  • Merkmalsraum
  • Scikit-learn eine freie Software-Bibliothek zum maschinellen Lernen für die Programmiersprache Python
  • OpenCV eine freie Programmbibliothek mit Algorithmen für die Bildverarbeitung und maschinelles Sehen

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • Wolfgang Ertel: Grundkurs Künstliche Intelligenz: Eine praxisorientierte Einführung. 3. Auflage. Springer Vieweg, Wiesbaden 2013, ISBN 978-3-8348-1677-1. 
  • Thomas A. Runkler: Data Analytics Models and Algorithms for Intelligent Data Analysis. 1. Auflage. Springer Vieweg, Wiesbaden 2012, ISBN 978-3-8348-2588-9. 

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ S. Madeh Piryonesi, Tamer E. El-Diraby: Role of Data Analytics in Infrastructure Asset Management: Overcoming Data Size and Quality Problems. In: Journal of Transportation Engineering, Part B: Pavements. Band 146, Nr. 2, Juni 2020, ISSN 2573-5438, doi:10.1061/JPEODX.0000175. 
  2. ↑ Trevor Hastie: The elements of statistical learning: data mining, inference, and prediction. with 200 full-color illustrations. Springer, New York 2001, ISBN 0-387-95284-5 (englisch, Weitere Autoren: Robert Tibshirani, Jerome Friedman). 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Nächste-Nachbarn-Klassifikation&oldid=257632198“
Kategorien:
  • Multivariate Statistik
  • Klassifikationsverfahren

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id