2016-03-24 5 views
2

Scikits GridSearch ist perfekt, wenn ich die besten Hyperparameter finden will. Ich möchte die gleiche Philosophie verwenden, um den besten Parametersatz für eine lineare Regression zu finden, wobei eine Zielfunktion über mehrere Falten hinweg verwendet wird. Wie kann ich die Parameter einer linearen Regression (auf mehrere Falten) optimieren (wörtlich: Betas und Intercept)?Scikit Grid Suche der Parameter (keine Hyperparameter)

Use Case (vereinfacht):
Ich habe eine Datenmenge, die im Wert von Daten drei Jahren. Ich möchte definieren, was die beste lineare Regression ist, die "in allen Jahren ok" ist. Wenn ich die lineare Regression an den vollständigen Datensatz anpasse, erhalte ich den, der den kleinsten Fehler in allen Daten reduziert. Effektiv werde ich den Fehler von enter image description here

minimieren, aber das (min(error)) ist nicht mein Ziel. Ich kann ein gutes Ergebnis für dieses Ziel bekommen, einfach weil der Klassifikator gut im Jahr 1 und 2 war, und das war gut genug, um Jahr 3 zu kompensieren.

Was ich effektiv minimieren möchte, ist etwas in Richtung min(max(error_year_1, error_year_1, error_year_1)).

Ein hacky Weg über dies ist eine Funktion f (b0, b1, b2, Jahr1, Jahr2, Jahr3), die das Maximum des Fehlers zurückgibt, und dann minimieren diese Funktion mit scipy.

Aktuelle Frage: gibt es eine Möglichkeit, dies in scikit zu tun?

Antwort

0

Es scheint mir, dass Scikit nur direkten API-Zugriff auf die scoring bietet, die ich glaube, wird nur eine Falte auf einmal sehen.

nicht sehr schön, aber ich denke, die beste Wahl über die grid_scores_cv_validation_scores der GridSearchCV und per Hand holen den Satz von params zu gehen, die den max der Verlustfunktion minimierten Sie wählen.

Denke nicht, dass es den Klassifikator rettet, du musst wahrscheinlich einen anderen Logit neu trainieren, wenn du damit Vorhersagen treffen willst.