TATECHATLAS
◎ Deutsch
Mathematik und Modelle / Anleitung

Auswahl einer Regressionsmetrik für nichtnegative Daten in scikit-learn

Wählen Sie eine Regressionsmetrik für nichtnegative Daten, indem Sie zuerst das Vorhersageziel festlegen, dann eine konsistente Verlustfunktion wie MAE, RMSE oder Pinball-Verlust wählen und schließlich mit einer D2-ähnlichen Kennzahl gegen eine konstante Baseline vergleichen.

Auf dieser Seite

Beginnen Sie beim Ziel der Vorhersage und beim Entscheidungsziel, nicht bei der Liste der Metriken. Für nichtnegative Größen wie Zählungen oder Beträge ist der mittlere absolute Fehler eine einfache nichtnegative Verlustfunktion mit dem besten Wert 0,0 und einer linearen Kosteninterpretation, während der Wurzel-Mittlerer-Quadratische-Fehler ebenfalls nichtnegativ ist, den besten Wert 0,0 hat, aber größere Fehler stärker bestraft. Wenn Sie eine konservative obere Schätzung benötigen, trainieren Sie einen Quantilregressor und bewerten Sie ihn mit einer pinball-basierten Bewertungsfunktion wie make_scorer(mean_pinball_loss, alpha=0.95). Vergleichen Sie das Modell mit einer konstanten Baseline mithilfe einer D2-ähnlichen Kennzahl und bewerten Sie mehrere Metriken gemeinsam in Kreuzvalidierung oder Suche. Wenn eine Bewertungsfunktion extern vorgegeben ist, verwenden Sie sie direkt; andernfalls bevorzugen Sie dieselbe streng konsistente Metrik für Training und Bewertung.

Beginnen Sie beim Vorhersageziel, nicht bei der Metrikliste

Die Metrikwahl sollte dem Entscheidungsziel und der zu vorhersagenden Funktion folgen, nicht der Liste verfügbarer Bewertungen. In der Modellbewertungsanleitung von scikit-learn ist die erste Frage, ob die Bewertungsfunktion extern vorgegeben ist, zum Beispiel durch einen Wettbewerb oder einen Geschäftsvertrag. Wenn sie vorgegeben ist, verwenden Sie diese Bewertungsfunktion direkt. Wenn Sie frei wählen können, sagt die Anleitung, dass Sie vom ultimativen Ziel und der Anwendung der Vorhersage ausgehen und dann zwischen Vorhersagen und Entscheidungsfindung unterscheiden sollten.

Bei der Regression wird die Antwort normalerweise als Zufallsvariable mit einer Verteilung behandelt, sodass eine Punktvorhersage normalerweise eine Funktion wie den Mittelwert, den Median oder ein Quantil ansteuert. Sobald diese Funktion feststeht, empfiehlt die Anleitung, eine streng konsistente Bewertungsfunktion für diese Funktion zu verwenden. Eine streng konsistente Bewertungsfunktion ist auf die Messung des Abstands zwischen Vorhersagen und der wahren Ziel-Funktion mit Beobachtungen abgestimmt und kann sowohl als Trainingsverlust als auch als Bewertungsmetrik verwendet werden. Diese Abstimmung ist wichtig, weil sie Training und Bewertung in derselben Sprache hält.

Für nichtnegative Ziele wie Zählungen oder Beträge bedeutet das, dass Sie entscheiden sollten, ob Sie eine mittelwertartige Punktvorhersage, eine medianartige Punktvorhersage oder ein Quantil wie eine obere Grenze wollen, und dann eine Metrik wählen, die zu dieser Wahl konsistent ist. Die Metrikliste ist dieser Entscheidung nachgeordnet.

Wenn die geschäftliche Auswirkung bei nichtnegativen Größen etwa linear zum absoluten Fehler ist, beginnen Sie mit dem mittleren absoluten Fehler, weil er Stakeholdern leicht erklärbar ist und den besten Wert 0,0 hat. Wenn große Fehler unverhältnismäßig teuer sind, wechseln Sie zum Wurzel-Mittleren-Quadratischen-Fehler und geben Sie klar an, dass er große Abweichungen stärker bestraft. Für Quantilziele wie eine konservative obere Schätzung trainieren Sie einen Quantilregressor und evaluieren ihn mit einer pinball-basierten Bewertungsfunktion bei dem gewählten Alpha, vergleichen Sie dann mit einer konstanten Baseline mithilfe einer D2-ähnlichen Kennzahl, damit die Verbesserung gegen eine einfache Regel und nicht gegen eine beliebige Zahl gemessen wird.

Verwenden Sie MAE, wenn der absolute Fehler bei Zählungen oder Beträgen wichtig ist

Der mittlere absolute Fehler ist ein nichtnegativer Regressionsverlust mit dem besten Wert 0,0 und ist einfach zu interpretieren, weil er absolute Abweichungen mittelt. Die scikit-learn-Dokumentation beschreibt ihn als nichtnegativen Gleitkommawert, dessen bester Wert 0,0 ist, und er unterstützt Stichproben-Gewichte und Multioutput-Aggregation.

Für nichtnegative Ziele ist MAE oft eine gute erste Wahl, wenn die geschäftliche Auswirkung etwa linear zum absoluten Fehler ist. Wenn ein Fehler von 3 Einheiten etwa dreimal so teuer ist wie ein Fehler von 1 Einheit, passt MAE diese Intuition direkter als ein quadratischer Verlust. Das Arbeitsbeispiel zeigt eine kleine nichtnegative Reihe, bei der der durchschnittliche absolute Fehler 1,0 beträgt.

Eine praktische Einschränkung ist, dass MAE linear in jedem absoluten Fehler ist und daher weniger empfindlich auf sehr große Fehler reagiert als quadratische Metriken, aber nicht immun dagegen ist. Geringere Ausreißererstempfindlichkeit ist nicht dasselbe wie das Ignorieren extremer Fehler.

from sklearn.metrics import mean_absolute_error

y_true = [0, 2, 5, 9]
y_pred = [1, 2, 4, 10]

mae = mean_absolute_error(y_true, y_pred)
print(mae)
# 1.0

Verwenden Sie RMSE oder den Wurzel-Mittleren-Quadratischen-Fehler, wenn große Fehler teuer sind

Der Wurzel-Mittlere-Quadratische-Fehler ist ebenfalls ein nichtnegativer Regressionsverlust mit dem besten Wert 0,0 und wurde in scikit-learn ab Version 1.4 hinzugefügt. Weil er Fehler quadriert, bevor er mittelt und dann die Quadratwurzel zieht, betont er größere Abweichungen stärker als MAE.

Das macht RMSE zu einer vernünftigen Wahl, wenn große Fehler unverhältnismäßig teuer sind, zum Beispiel wenn eine Unter- oder Überschätzung eines nichtnegativen Betrags nichtlineare Kosten hat. Das Arbeitsbeispiel verwendet dieselben Eingaben wie das MAE-Beispiel und zeigt einen etwas größeren Wert, weil der größte Fehler unter Quadrierung mehr beiträgt.

Ein häufiges Missverständnis ist, RMSE pauschal als Standardabweichung der Fehler zu behandeln. Diese Gleichheit benötigt spezielle Bedingungen wie einen Fehler-Mittelwert von Null und einen passenden Divisor, daher ist es sicherer, RMSE über sein Empfindlichkeitsprofil zu beschreiben und nicht über die Gleichsetzung mit einer Fehlerstandardabweichung. Auch beim Übersetzen relativer Änderungen sollten diese vom ursprünglichen Nenner neu berechnet werden und die Quadratwurzel in jeder RMSE-Übersetzung beibehalten werden.

from sklearn.metrics import root_mean_squared_error

y_true = [0, 2, 5, 9]
y_pred = [1, 2, 4, 10]

rmse = root_mean_squared_error(y_true, y_pred)
print(rmse)
# 1.118033988749895

Berücksichtigen Sie Quantil- und Pinball-Verlust für nichtsymmetrisches Risiko bei nichtnegativen Daten

Wenn das Ziel keine zentrale Punktvorhersage, sondern eine konservative obere Schätzung für nichtnegative Nachfrage ist, sind Quantilregression und Pinball-Verlust nützlich. Die scikit-learn-Dokumentation zeigt mean_pinball_loss und erklärt, dass Sie eine Bewertungsfunktion mit einem bestimmten Alpha erstellen können, zum Beispiel make_scorer(mean_pinball_loss, alpha=0.95).

Diese Bewertungsfunktion kann zur Bewertung der Generalisierungsfähigkeit eines Quantilregressors durch Kreuzvalidierung verwendet werden und kann auch zur Hyperparameter-Optimierung genutzt werden, wenn das Vorzeichen so umgekehrt wird, dass größere Werte besser sind. Die Dokumentation verweist zudem auf ein Beispiel zu Vorhersageintervallen für Gradient-Boosting-Regression, bei dem Pinball-Verlust zur Bewertung und Optimierung von Quantilregressionen auf Daten mit nichtsymmetrischem Rauschen und Ausreißern eingesetzt wird.

Das ist für nichtnegative Daten relevant, weil das Risiko asymmetrisch sein kann: Eine Untervorhersage der Nachfrage kann teurer sein als eine Übervorhersage oder umgekehrt. Ein Quantilziel ermöglicht es, diese Asymmetrie direkt anzusteuern, und der Pinball-Verlust liefert eine konsistente Möglichkeit, sie zu bewerten.

from sklearn.metrics import mean_pinball_loss, make_scorer

mean_pinball_loss_95p = make_scorer(mean_pinball_loss, alpha=0.95)

# Illustrative use with a quantile regressor:
# cross_val_score(estimator, X, y, cv=5, scoring=mean_pinball_loss_95p)

Verwenden Sie D2-ähnliche Kennzahlen, um mit einer konstanten Baseline zu vergleichen

D2 wird in der scikit-learn-Dokumentation als der Anteil der erklärten Devianz beschrieben und ist eine Verallgemeinerung von R2, bei der das quadratische Fehler durch eine Devianz nach Wahl ersetzt wird, wie zum Beispiel Tweedie, Pinball oder mittlerer absoluter Fehler. Es ist eine Form einer Kennzahl und wird als 1 minus dem Verhältnis der Modelldevianz zur Nullmodelldevianz berechnet.

Die Nullvorhersage hängt vom gewählten Devianzmaß ab: Bei Tweedie ist sie der Mittelwert von y_true, bei absolutem Fehler der Median und bei Pinball-Verlust das Alpha-Quantil. Ein konstantes Modell, das immer diesen Nullwert vorhersagt, erhält ein D2 von 0,0, der beste mögliche Wert ist 1,0, und die Kennzahl kann negativ sein, weil ein Modell beliebig schlechter als das Nullmodell sein kann.

Für die nichtnegative Regression ist das hilfreich, weil es die Verbesserung relativ zu einer einfachen konstanten Baseline einrahmt und nicht relativ zu einer beliebigen absoluten Zahl. Wenn Sie ein pinball-basiertes D2 wählen, wird die Baseline selbst zum relevanten Quantil, was zu einem Quantilvorhersageziel passt.

Bewerten Sie mehrere Metriken gemeinsam in Kreuzvalidierung und Suche

scikit-learn erlaubt die Bewertung mehrerer Metriken in GridSearchCV, RandomizedSearchCV und cross_validate. Die Dokumentation beschreibt drei Möglichkeiten, mehrere Bewertungsmetriken anzugeben: als iterierbare Liste von Zeichenketten-Metriknamen, als Dict, das einem Bewertungsnamen eine Bewertungsfunktion oder einen vordefinierten String zuordnet, oder als aufrufbares Objekt, das ein Dict von Bewertungen zurückgibt.

Für die nichtnegative Regression ist das nützlich, weil eine Metrik selten die ganze Geschichte erzählt. Sie möchten vielleicht MAE für lineare Interpretierbarkeit, RMSE für die Empfindlichkeit gegen große Fehler und eine pinball-basierte Bewertungsfunktion für ein Quantilziel, alles auf denselben Kreuzvalidierungssplits bewertet.

Eine praktische Anmerkung aus der Dokumentation ist, dass benutzerdefinierte Bewertungsfunktionen, die mit n_jobs größer als 1 verwendet werden, robuster sind, wenn sie aus einem anderen Modul importiert werden statt inline definiert zu werden. Achten Sie auch auf Vorzeichenkonventionen beim Einpacken eines Verlusts als Bewertungsfunktion, weil greater_is_better angeben muss, ob die Metrik ein Verlust oder eine Bewertung ist.

from sklearn.model_selection import cross_validate
from sklearn.metrics import mean_absolute_error, root_mean_squared_error, make_scorer

scoring = {
    'mae': make_scorer(mean_absolute_error),
    'rmse': make_scorer(root_mean_squared_error),
}

# cv_results = cross_validate(estimator, X, y, scoring=scoring, cv=5)

Verwenden Sie Dummy-Schätzer als Regressionstest

Die scikit-learn-Dokumentation beschreibt Dummy-Schätzer als einen einfachen Test, wenn überwachtes Lernen durchgeführt wird: Vergleichen Sie Ihren Schätzer mit einfachen Daumenregeln. DummyClassifier implementiert mehrere Strategien für die Klassifikation, und dieselbe Idee gilt sinngemäß für Regressions-Baselines, bei denen eine konstante oder einfache Regel hilft zu beurteilen, ob ein Modell über triviale Vorhersagen hinaus verbessert.

Die Dokumentation betont, dass die predict-Methode bei diesen Dummy-Strategien die Eingabedaten vollständig ignoriert, was genau der Grund ist, warum sie als Baselines nützlich sind: Sie zeigen, wie die Leistung aussieht, wenn das Modell keine Merkmalsinformationen nutzt.

Für die nichtnegative Regression kann eine konstante Baseline besonders informativ sein, wenn sie mit einer D2-ähnlichen Kennzahl kombiniert wird, weil das Nullmodell relativ zum gewählten Devianzmaß definiert ist. Wenn Ihr Modell eine sinnvolle konstante Regel nicht schlägt, ist das ein starkes Signal, Merkmale, die Zieltransformation oder die Bewertungsmetrik zu überprüfen.

Richten Sie Trainingsverlust, Bewertungsmetrik und geschäftliche Bewertung aus

Die Modellbewertungsanleitung sagt, dass eine streng konsistente Bewertungsfunktion, sobald sie gewählt ist, am besten sowohl für Training als auch für Bewertung verwendet wird. Diese Empfehlung ist besonders relevant für die nichtnegative Regression, weil die Ziel-Funktion und die Kostenstruktur die Metrik bestimmen sollten, nicht die Bequemlichkeit.

Wenn eine Bewertungsfunktion extern vorgegeben ist, verwenden Sie diese direkt, auch wenn sie nicht der bequemste Trainingsverlust ist. Wenn Sie frei wählen können, wählen Sie eine Metrik, die zum Vorhersageziel passt, und richten Sie Training und Bewertung dort aus, wo möglich.

In der Praxis kann das bedeuten, MAE oder RMSE für eine mittelwert- oder medianorientierte Punktvorhersage zu verwenden, Pinball-Verlust für ein Quantilziel und eine D2-ähnliche Kennzahl zu nutzen, um die Verbesserung gegen eine konstante Baseline zu kommunizieren. Der Schlüssel ist, dass die Metrik das Entscheidungsproblem widerspiegeln sollte und dieselbe Logik Training und Bewertung leiten sollte, sofern Sie die Freiheit zur Wahl haben.

Was Sie prüfen sollten

  • Klären Sie zuerst die zu vorhersagende Funktion: Mittelwert, Median, Quantil oder volle Verteilung, denn die Metrikwahl folgt daraus.
  • Verwenden Sie den mittleren absoluten Fehler, wenn der absolute Fehler bei nichtnegativen Zählungen oder Beträgen wichtig ist und die geschäftliche Auswirkung etwa linear ist.
  • Verwenden Sie den Wurzel-Mittleren-Quadratischen-Fehler, wenn große Fehler unverhältnismäßig teuer sind, da er größere Abweichungen stärker betont als der mittlere absolute Fehler.
  • Für Quantilziele erstellen Sie eine Bewertungsfunktion mit make_scorer(mean_pinball_loss, alpha=...) und evaluieren oder optimieren Sie einen Quantilregressor damit.
  • Vergleichen Sie Modelle mit einer konstanten Baseline mithilfe einer D2-ähnlichen Kennzahl und beachten Sie, dass die Nullvorhersage vom gewählten Devianzmaß abhängt.
  • Bewerten Sie mehrere Metriken gemeinsam, indem Sie einer Liste, einem Dict oder einem aufrufbaren Objekt, das ein Dict zurückgibt, an GridSearchCV, RandomizedSearchCV oder cross_validate übergeben.
  • Verwenden Sie einen Dummy-Schätzer als Regressionstest, um zu prüfen, ob das Modell über eine triviale Regel hinaus verbessert.
  • Wenn eine Bewertungsfunktion extern vorgegeben ist, nutzen Sie sie direkt; andernfalls richten Sie Trainingsverlust und Bewertungsmetrik auf dieselbe streng konsistente Bewertungsfunktion aus.

Die vorliegenden Quellen liefern keine vollständige Entscheidungsregel für jeden Fall der nichtnegativen Regression. Die Metrikwahl hängt weiterhin von der Anwendung, der Kostenstruktur und der zu vorhersagenden Ziel-Funktion ab. Nichtnegative Daten allein bestimmen nicht die beste Metrik. Benutzerdefinierte Bewertungsfunktionen und die mehrfache Metrikauswertung können besondere Vorsicht bei Parallelisierung und Vorzeichenkonventionen erfordern, zum Beispiel wenn greater_is_better für einen Verlust korrekt eingestellt werden muss. Die Beispiele in den Quellen sind veranschaulichend und können von Datensatzdetails, Zufallszuständen oder Bibliotheksversionen abhängen.

Quellen

  1. scikit-learn: model evaluation ↗
  2. scikit-learn: mean_absolute_error ↗
  3. scikit-learn: root_mean_squared_error ↗
Nach oben ↑