Ich habe Probleme, den Fluch der Dimensionalität zu verstehen. Insbesondere bin ich beim Ausführen des scikit-learn
Tutorials in Python darauf gestoßen. Kann mir bitte jemand das untenstehende auf einfachere Weise erklären? Entschuldigung, ich habe die längste Zeit versucht zu verstehen und kann nicht verstehen, wie sie auf die Berechnung der Anzahl der Trainingsbeispiele gekommen sind, um einen effizienten KNN-Schätzer zu erhalten.
Hier ist die Erklärung:
Damit ein Schätzer effektiv ist, muss der Abstand zwischen benachbarten Punkten kleiner als ein Wert d sein, was vom Problem abhängt. In einer Dimension erfordert dies durchschnittlich n ~ 1 / d Punkte. Wenn im Kontext des obigen KNN-Beispiels die Daten durch nur ein Merkmal mit Werten im Bereich von 0 bis 1 und mit n Trainingsbeobachtungen beschrieben werden, sind neue Daten nicht weiter als 1 / n entfernt. Daher ist die Entscheidungsregel für den nächsten Nachbarn effizient, sobald 1 / n im Vergleich zur Skala der Merkmalsvariationen zwischen Klassen klein ist.
Wenn die Anzahl der Features p ist, benötigen Sie jetzt n ~ 1 / d ^ p Punkte. Nehmen wir an, wir benötigen 10 Punkte in einer Dimension: Jetzt werden 10 ^ p Punkte in p Dimensionen benötigt, um den Raum [0, 1] zu ebnen. Wenn p groß wird, nimmt die Anzahl der für einen guten Schätzer erforderlichen Trainingspunkte exponentiell zu.
EDIT: soll auch die tilde ( ~
) in diesem beispiel ungefähr darstellen? oder der Python-Tilde-Operator?