Sklearn SVM: SVR und SVC, die für jede Eingabe dieselbe Vorhersage erhalten

8

Hier ist ein Einfügen des Codes: SVM-Beispielcode

Ich habe ein paar andere Antworten auf dieses Problem ausgecheckt ... und es scheint, als ob diese spezifische Iteration des Problems ein bisschen anders ist.

Zuallererst sind meine Eingaben normalisiert und ich habe fünf Eingaben pro Punkt. Die Werte sind alle vernünftig groß (gesunde 0.5s und 0.7s etc - wenige nahe Null oder nahe 1 Zahlen).

Ich habe etwa 70 x Eingänge, die ihren 70 y Eingängen entsprechen. Die y-Eingaben werden ebenfalls normalisiert (sie sind prozentuale Änderungen meiner Funktion nach jedem Zeitschritt).

Ich initialisiere meinen SVR (und SVC), trainiere sie und teste sie dann mit 30 Eingaben außerhalb der Stichprobe ... und bekomme für jeden Eingang die exakt gleiche Vorhersage (und die Eingaben ändern sich um vernünftige Beträge-- 0,3, 0,6, 0,5 usw.). Ich würde denken, dass der Klassifikator (zumindest) eine gewisse Differenzierung hätte ...

Hier ist der Code, den ich habe:

%Vor%

Und hier sind Beispiele meiner Eingaben:

%Vor%

Und die x_test -Matrix (5x30) ist ähnlich der x_training -Matrix in Bezug auf Größen und Varianz der Eingaben ... gleich für y_testr und y_testc .

Gegenwärtig sind die Vorhersagen für alle Tests genau gleich (0,00596 für die Regression und 1 für die Klassifikation ...)

Wie bekomme ich die SVR- und SVC-Funktionen, um relevante Vorhersagen auszuspucken? Oder zumindest verschiedene Vorhersagen basierend auf den Eingaben ...

Zumindest sollte der Klassifikator in der Lage sein, Entscheidungen zu treffen. Ich meine, auch wenn ich nicht genügend Dimensionen für die Regression bereitgestellt habe ...

    
bordeo 26.12.2015, 21:07
quelle

3 Antworten

8

Versuchen Sie, Ihr C von der Standardeinstellung zu erhöhen. Es scheint, dass Sie untermßig sind.

%Vor%

p_klassifizierung wird dann:

%Vor%

Für den Fall SVR möchten Sie auch Ihr epsilon reduzieren.

%Vor%

p_regression wird dann:

%Vor%

Sie sollten versuchen, Ihren C-Parameter mithilfe der Kreuzvalidierung zu optimieren, damit er die für Sie am besten geeigneten Ergebnisse erzielen kann. Sie können sich GridSearchCV ansehen, um Ihnen dabei zu helfen.

    
David Maust 26.12.2015, 21:38
quelle
1

Ich hatte das gleiche Problem, aber eine ganz andere Ursache und daher einen ganz anderen Ort, um nach einer Lösung zu suchen.

Wenn Ihre Vorhersageeingaben aus irgendeinem Grund falsch skaliert werden, können die gleichen Symptome auftreten, die hier gefunden werden. Dies könnte das Skalieren von Eingabewerten in einer späteren Vorhersage oder aufgrund der falschen Reihenfolge der Eingaben vergessen (oder miscodieren).

    
James Nowell 06.04.2017 21:46
quelle
0

In meinem Fall musste ich meine Daten mit dem StandardScaler im sklearn-Paket skalieren.

Außerdem musste ich jeden Satz von Merkmalen unabhängig voneinander skalieren, in meinem Fall zwei Arten von Abständen, die jeweils einzeln skaliert wurden.

%Vor%     
John 26.10.2017 23:57
quelle