Konsequenz der Feature-Skalierung

11

Ich verwende derzeit SVM und skaliere meine Trainingsfunktionen auf den Bereich von [0,1]. Ich passe zuerst mein Trainingsset an / transformiere es und wende dann dieselbe Transformation auf mein Testset an. Zum Beispiel:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Angenommen, ein bestimmtes Merkmal im Trainingssatz hat einen Bereich von [0,100] und dasselbe Merkmal im Testsatz hat einen Bereich von [-10,120]. Im Trainingssatz wird diese Funktion entsprechend auf [0,1] skaliert, während im Testsatz diese Funktion auf einen Bereich außerhalb des zuerst angegebenen Bereichs skaliert wird, etwa [-0.1,1.2].

Ich habe mich gefragt, welche Konsequenzen es hat, wenn die Test-Set-Funktionen außerhalb der Reichweite derjenigen liegen, die zum Trainieren des Modells verwendet werden. Ist das ein Problem?

mike1886
quelle

Antworten:

6

Innerhalb jeder Klasse gibt es Werteverteilungen für die Features. Das ist an sich kein Grund zur Sorge.

Aus einer leicht theoretischen Sicht können Sie sich fragen, warum Sie Ihre Features skalieren sollten und warum Sie sie genau auf die gewählte Weise skalieren sollten.
Ein Grund kann sein, dass Ihr spezieller Trainingsalgorithmus bekanntermaßen mit Werten um 0 - 1 schneller (besser) konvergiert als mit Merkmalen, die andere Größenordnungen abdecken. In diesem Fall geht es Ihnen wahrscheinlich gut. Ich vermute, dass Ihre SVM in Ordnung ist: Sie möchten aufgrund des inneren Produkts zu große Zahlen vermeiden, aber ein Maximum von 1,2 gegenüber einem Maximum von 1,0 macht keinen großen Unterschied.
(OTOH, wenn Sie z. B. wüssten, dass Ihr Algorithmus keine negativen Werte akzeptiert, wären Sie offensichtlich in Schwierigkeiten.)

Die praktische Frage ist, ob Ihr Modell in Fällen, die etwas außerhalb des vom Training abgedeckten Bereichs liegen, eine gute Leistung erbringt. Dies kann meines Erachtens am besten und möglicherweise nur durch Testen mit solchen Fällen / Überprüfen der Testergebnisse auf Leistungsabfälle für Fälle außerhalb des Trainingsbereichs beantwortet werden. Es ist ein berechtigtes Anliegen, und dies zu prüfen, wäre Teil der Validierung Ihres Modells.

Die Beobachtung von Unterschieden in der von Ihnen beschriebenen Größe ist meiner Meinung nach ein Grund, die Modellstabilität genau zu betrachten.

cbeleites unzufrieden mit SX
quelle
7

Dies war als Kommentar gedacht, aber es ist zu lang.

Die Tatsache , dass Ihr Test - Set einen anderen Bereich hat könnte ein Zeichen dafür sein , dass der Trainingssatz nicht eine gute Darstellung des Prüfgerätes ist. Wenn der Unterschied jedoch wie in Ihrem Beispiel sehr gering ist, hat er wahrscheinlich keine Auswirkungen auf Ihre Vorhersagen. Leider glaube ich nicht, dass ich einen guten Grund habe zu glauben, dass dies unter keinen Umständen Auswirkungen auf eine SVM hat.

Beachten Sie, dass die Gründe für die Verwendung von MinMaxScalar (gemäß der Dokumentation) sind:

Die Motivation, diese Skalierung zu verwenden, umfasst die Robustheit gegenüber sehr kleinen Standardabweichungen von Merkmalen und die Beibehaltung von Nulleinträgen in spärlichen Daten.

Daher ist es wichtig, dass Sie sicherstellen, dass Ihre Daten in diesen Fall passen.

Wenn Sie wirklich Bedenken haben, einen Differenzbereich zu haben, sollten Sie preprocessing.scalestattdessen eine regelmäßige Standardisierung (z. B. ) verwenden.

Robert Smith
quelle
Hallo Robert, danke für die Antwort! Guter Punkt bezüglich der Darstellung des Trainings- / Testsatzes, aber dies sind Zeitreihendaten. Wenn neue Daten eingehen, kann ich nicht garantieren, dass die Werte im Bereich ähnlich sind wie zuvor. Ich habe genau das gleiche Gefühl wie Sie, dass ich keinen guten Grund habe zu glauben, dass es unter keinen Umständen Auswirkungen auf eine SVM hat.
Mike1886
Haben Sie Vorhersagen mit MinMaxScaler und Standardisierung verglichen?
Robert Smith
Ich habe und die Ergebnisse sind ähnlich, aber das sagt mir nicht wirklich, ob es mit dem MinMaxScalar schwierig wird.
Mike1886
Sicher. In jedem Fall ist es besser, Standardisierung zu verwenden, wenn Sie nicht etwas Wertvolles erhalten MinMaxScaler.
Robert Smith