Hat KNN eine Verlustfunktion?


9

Ich habe im Kontext des maschinellen Lernens keine Definition der Verlustfunktion im Wiki gefunden.

Dieser ist jedoch weniger formal, es ist klar genug.

Im Kern ist eine Verlustfunktion unglaublich einfach: Sie bewertet, wie gut Ihr Algorithmus Ihren Datensatz modelliert. Wenn Ihre Vorhersagen völlig falsch sind, gibt Ihre Verlustfunktion eine höhere Zahl aus. Wenn sie ziemlich gut sind, wird eine niedrigere Zahl ausgegeben. Wenn Sie Teile Ihres Algorithmus ändern, um Ihr Modell zu verbessern, zeigt Ihnen Ihre Verlustfunktion an, ob Sie irgendwohin gelangen.

Es scheint, dass die Fehlerrate von KNN nicht die Funktion ist, die das Modell selbst zur Optimierung führen könnte, wie z. B. Gradientenabstieg.

Hat KNN eine Verlustfunktion?

Antworten:


11

k -NN hat keine Verlustfunktion, die während des Trainings minimiert werden kann. Tatsächlich ist dieser Algorithmus überhaupt nicht trainiert. Das einzige "Training", das für NN stattfindet, ist das Speichern der Daten (Erstellen einer lokalen Kopie), so dass Sie während der Vorhersage eine Suche und eine Mehrheitsabstimmung durchführen können. Technisch gesehen ist keine Funktion an die Daten angepasst, und daher wird keine Optimierung durchgeführt (sie kann nicht mit Gradientenabstieg trainiert werden).k


4
kNN verwendet während des "Trainings" keine Verlustfunktion , aber das bedeutet nicht, dass es keine Verlustfunktion gibt, die kNN definiert. Zum Beispiel: Es ist bekannt, dass der Median den mittleren absoluten Differenzverlust minimiert. Sie berechnen jedoch nie den mittleren Bauchmuskelverlust und verwenden auch keine Optimierung wie den Gradientenabstieg, um den Median zu berechnen. Es ist immer noch eine nützliche Tatsache, dass es manchmal den mittleren Bauchmuskelverlust minimiert. Auf die gleiche Weise könnten Sie wahrscheinlich eine Verlustfunktion konstruieren, die kNN immer minimiert
Nikie

@nikie das stimmt, aber in kNN werden sie nur als lokale Aggregationsfunktionen unter den Nachbarn verwendet (schwer zu übersetzen, um den Gesamtverlust zu minimieren). Auch für k = 1 verwenden Sie keine solche Funktion. Darüber hinaus wird es nicht für das Training verwendet. Es als Verlustfunktion zu bezeichnen, ist nur eine mentale Übung, um kNN zu zwingen, einer Definition des Klassifikators zu entsprechen. Ich finde keine zwingenden Gründe, es so zu definieren.
Tim

-2

Ich bin mit der akzeptierten Antwort nicht einverstanden (etwas).

KNN ist ein Klassifizierungsalgorithmus , und es macht keinen Sinn, einen Klassifizierungsalgorithmus ohne Verlustfunktion auszuführen: Sie wären daran interessiert, wie gut der Algorithmus funktioniert hat. Im Fall von KNN können Sie beispielsweise die Qualität von Klassifizierungen bewerten, indem Sie die Summe der durchschnittlichen Genauigkeiten in jeder Klasse betrachten. Oder Sie können sich ausschließlich auf die Genauigkeit des Algorithmus konzentrieren.

Die Optimierungsmethode, die KNN antreibt, hängt nicht von der Verlustfunktion ab. Während des Trainings spricht sie niemals die Verlustfunktion an und verwendet nicht einmal den Gradientenabstieg zum Trainieren.

Vergleichen Sie dies mit dem folgenden "K-Nächsten-Nachbarn-Klassifikator": Trainieren Sie für Klassen zuerst Mittel und definieren Sie dann die Klasse jedes Punkts durch die dominante Anzahl von Punkten, die zu jedem Schwerpunkt gehören. Sie könnten diesen Algorithmus beispielsweise mit einer schrittweisen Minimierung des Fehlers der kleinsten Quadrate von jedem Schwerpunkt trainieren (Neuberechnung der Schwerpunkte basierend auf den nächsten Nachbarn), aber zur Testzeit wäre Ihre Verlustfunktion wieder eine Form der Genauigkeit für jeden Klasse, obwohl der ursprüngliche Algorithmus keine Abhängigkeit davon hat.K.K.


5
Eine Metrik zur Bewertung der Leistung des Algorithmus und der zu minimierende Verlust sind zwei verschiedene Dinge. Tatsächlich können Sie Verluste minimieren, die von der gewünschten Metrik abweichen (z. B. aus rechnerischen Gründen).
Tim

@ Tim: Ich denke, wir sind auf der gleichen Seite wie genau der Punkt, den ich im letzten Absatz ansprechen möchte, wo eine Metrik zum Trainieren verwendet wird. Sie möchten jedoch nach dem Training eine Verlustfunktion, um den Algorithmus zu bewerten. Ein Klassifizierungsalgorithmus, der trainiert wird, ohne eine Verlustfunktion (während oder nach) von Klassen anzusprechen, ist per Definition unbeaufsichtigt.
Alex R.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.