Evaluierung von Regressionsmodellen
In der Welt des maschinellen Lernens ist das Erstellen eines Modells nur der erste Schritt. So wie wir einen Kuchen backen, müssen wir ihn probieren, um zu wissen, ob er gelungen ist. Für Regressionsmodelle (eine Art von Modell, das zur Vorhersage kontinuierlicher numerischer Werte wie Hauspreise, Temperatur oder Verkaufszahlen verwendet wird),Modellbewertungist unserVerkostungsschritt. Sie sagt uns, wie genau die Vorhersagen des Modells sind, wo es gut abschneidet und wo Verbesserungspotenzial besteht.
Dieser Artikel führt Sie durch eine systematische Untersuchung der Bewertungsmethoden für Regressionsmodelle, von Kernkonzepten über spezifische Metriken bis hin zur Codepraxis, sodass Sie nicht nur Bewertungsberichte verstehen, sondern Ihr Modell auch selbst "bewerten" können.
Kernkonzepte von Regressionsmodellen und Bewertung
Bevor wir in die Metriken eintauchen, müssen wir einige grundlegende Konzepte verstehen; sie sind der Grundstein aller Bewertungsmethoden.
Was ist ein Regressionsproblem?
Regression ist eine Art des überwachten Lernens, deren Ziel es ist, einenkontinuierlichen numerischen Wert vorherzusagen。
- Beispiel: Vorhersage des Verkaufspreises (ein kontinuierlicher numerischer Wert) basierend auf Fläche, Alter und Lage des Hauses (Merkmale).
Warum brauchen wir eine Evaluierung?
- Modellauswahl: Vergleiche, welcher von verschiedenen Algorithmen (z. B. lineare Regression, Entscheidungsbaum-Regression) auf deinen Daten besser abschneidet.
- Parameterabstimmung: Beim Anpassen von Modellparametern (z. B. Regularisierungsstärke) benötigen wir ein objektives Kriterium, um zu beurteilen, ob die Anpassung wirksam ist.
- Leistungsbestätigung: Stelle sicher, dass das Modell eine zuverlässige Vorhersagefähigkeit für ungesehene Daten besitzt, um eine "Sesselstrategie" zu vermeiden.
Schlüsselbegriff: Fehler
Alle Evaluierungsmetriken drehen sich um den "Fehler". Der Fehler ist die Differenz zwischen dem vorhergesagten Wert des Modells (ŷ) und dem wahren Wert (y).
- Fehler an einem einzelnen Punkt:
误差 = y - ŷ - Die Essenz der Evaluierung istdas Zusammenfassen und Analysieren dieser Fehler auf unterschiedliche Weise.。
Detaillierte Erklärung der wichtigsten Evaluierungsmetriken
Wir werden die am häufigsten verwendeten und wichtigsten Bewertungsmetriken vorstellen und dabei durchgehend ein einfaches Beispiel verwenden.
Angenommen, wir haben die Preise von 5 Häusern vorhergesagt:
| Wahrer Preis (y) | Vorhergesagter Preis (ŷ) | Fehler (y - ŷ) |
|---|---|---|
| 200 | 210 | -10 |
| 150 | 145 | 5 |
| 300 | 310 | -10 |
| 400 | 380 | 20 |
| 250 | 255 | -5 |
1. Mittlerer absoluter Fehler (MAE)
Intuitives Verständnis: Addiere die Absolutwerte aller Vorhersagefehler und berechne dann den Durchschnitt. Es spiegelt direkt wider, „im Durchschnitt, um wie viele Einheiten der vorhergesagte Wert vom wahren Wert abweicht“.
Berechnungsformel:
MAE = (1/n) * Σ|y_i - ŷ_i|wobeinist die Anzahl der Stichproben,Σist das Summenzeichen.
Berechnungsbeispiel:
MAE = (|-10| + |5| + |-10| + |20| + |-5|) / 5 = (10+5+10+20+5)/5 = 50/5 = 10
Interpretation: Im Durchschnitt weicht unsere Hauspreisvorhersage um100,000 yuan vom wahren Preis ab。
Eigenschaften:
- Vorteile: Intuitiv und leicht zu verstehen; nicht übermäßig von extremen Fehlerwerten (Ausreißern) beeinflusst.
- Nachteile: Die Betragsfunktion ist in der Mathematik nicht überall differenzierbar, was in einigen Optimierungsszenarien unpraktisch ist.
2. Mittlerer quadratischer Fehler (MSE)
Intuitives Verständnis: Zuerst wird jeder Fehler „quadriert“ (um das negative Vorzeichen zu eliminieren und Fehler zu verstärken), dann wird der Durchschnitt gebildet. Es istsehr empfindlich gegenüber großen Fehlern.。
Berechnungsformel:
MSE = (1/n) * Σ(y_i - ŷ_i)^2
Berechnungsbeispiel:
MSE = [(-10)^2 + (5)^2 + (-10)^2 + (20)^2 + (-5)^2] / 5 = (100+25+100+400+25)/5 = 650/5 = 130
Interpretation: Der Durchschnitt der quadrierten Fehler beträgt 130. Dieser Wert selbst hat keine direkte Einheitenbedeutung (er ist 10,000 yuan zum Quadrat), aber er ist sehr effektiv für den Vergleich von Modellen.
Eigenschaften:
- Vorteile: Hervorragende mathematische Eigenschaften (überall differenzierbar); es ist die Zielfunktion, die beim Training vieler Modelle minimiert wird (z. B. lineare Regression).
- Nachteile: Seine Dimension unterscheidet sich von den Originaldaten, was die Größenordnung schwer interpretierbar macht; empfindlich gegenüber Ausreißern.
3. Wurzel des mittleren quadratischen Fehlers (RMSE)
Intuitives Verständnis: Es ist die Quadratwurzel des MSE. Es entspricht einer „Wiederherstellung“ des MSE in seine ursprüngliche Form, wodurch er wieder dieselbe Dimension wie die wahren Werte und die vorhergesagten Werte erhält.
Berechnungsformel:
RMSE = sqrt(MSE)
Berechnungsbeispiel:
RMSE = sqrt(130) ≈ 11.4
Interpretation: Im Durchschnitt weichen unsere Vorhersagen um etwa114,000 yuanvon den wahren Werten ab. Diese Interpretation ähnelt dem MAE (100,000 yuan), aber da RMSE zuerst quadriert und dann die Quadratwurzel zieht, gewichtet es größere Fehler stärker, weshalb es normalerweise größer als MAE ist.
Eigenschaften:
- Vorteile: Es hat dieselbe Dimension wie die Originaldaten und ist besser interpretierbar als MSE; es bestraft große Fehler stärker und wird häufig in Szenarien eingesetzt, in denen große Fehler wichtig sind (z. B. Finanzrisikovorhersage).
- Nachteile: Es ist ebenfalls empfindlich gegenüber Ausreißern.
4. R²-Score (Bestimmtheitsmaß)
Intuitives Verständnis: Wie viel besser ist mein Modell als „blind zu raten“ (mit dem Mittelwert zu raten)? Es ist einVerhältniswert, der die Fähigkeit des Modells misst, die Variation in den Daten zu erklären.
Berechnungsformel:
R² = 1 - (Σ(y_i - ŷ_i)^2 / Σ(y_i - y_mean)^2)wobeiy_meanist der Mittelwert der wahren Werte.
„Blindes Raten“-Modell: Für jedes Haus sage ich den mittleren Hauspreis voraus (y_mean)。
- berechnet als
y_mean = (200+150+300+400+250)/5 = 260 - Die Summe der quadrierten Fehler des „Blindes Raten“-Modells:
Σ(y_i - 260)^2 = 1600+12100+1600+19600+100 = 35000
Berechnungsbeispiel:
R² = 1 - (650 / 35000) = 1 - 0.01857 ≈ 0.9814
Interpretation: Unser Modell kann die Schwankung der Zielvariable (Hauspreis)98.14%erklären. Dies zeigt, dass das Modell sehr gut passt.
Eigenschaften:
- Wertebereich: Theoretisch ist der Wertebereich von R²
(-∞, 1]。R² = 1: Perfekte Vorhersage.R² = 0: Die Wirkung des Modells ist dieselbe wie die direkte Vorhersage mit dem Mittelwert.R² < 0: Das Modell ist sogar schlechter als die direkte Vorhersage mit dem Mittelwert (was zeigt, dass das Modell für die Daten völlig ungeeignet ist).
- Vorteile: Dimensionslos, einfache Vergleichbarkeit der Modellleistung über verschiedene Datensätze hinweg.
- Nachteile: Mit steigender Anzahl der Modellmerkmale steigt R² naturgemäß, selbst wenn die hinzugefügten Merkmale nutzlos sind, was zu Overfitting führen kann.
Metrikvergleich und Auswahl
Zum besseren Verständnis fassen wir es in einer Tabelle zusammen:
| Metrik | Berechnungsformel (vereinfacht) | Dimension | Empfindlichkeit gegenüber Ausreißern | Eigenschaften und Anwendungsszenarien |
|---|---|---|---|---|
| MAE | Mittlerer absoluter Fehler | Wie y | Unempfindlich | Intuitivste Interpretation. Fokussiert auf "wie groß die durchschnittliche Abweichung ist"; geeignet für alle Regressionsszenarien, besonders für Daten mit vielen Ausreißern. |
| MSE | Mittlerer quadratischer Fehler | Quadrat von y | Sehr empfindlich | Gute mathematische Eigenschaften. Es handelt sich um eine gängige Verlustfunktion für das Modelltraining. Der Wert selbst ist nicht leicht zu interpretieren. |
| RMSE | Quadratwurzel des MSE | Wie y | Sehr empfindlich | Am häufigsten verwendet. Es kombiniert die mathematischen Vorteile des MSE mit Interpretierbarkeit. Es bestraft große Fehler stark und ist in Finanzwesen, Prognostik und anderen Bereichen beliebt. |
| R² | 1 - (Modellfehler / Basislinienfehler) | Dimensionslos | Empfindlich | Relative Leistungsmetrik. Wird verwendet, um die Verbesserung eines Modells relativ zu einer einfachen Baseline zu vergleichen. Leicht über Datensätze hinweg zu vergleichen. |
Auswahlempfehlungen:
- Bevorzugen Sie die Angabe von RMSE und R²: RMSE gibt die tatsächliche Fehlergröße an, während R² die relative Leistung des Modells angibt. Dies ist die vielseitigste Kombination.
- Wenn viele Ausreißer in den Daten vorhanden sind, achte auf MAE。
- Verwende MSE als Verlustfunktion während des Modelltrainings und der Optimierung.。
- Schau niemals nur auf eine einzige Metrik! Kombiniere mehrere Metriken, um das Modell umfassend zu bewerten.
Code-Übung: Bewertung mit Scikit-learn
Jetzt setzen wir es mit Python und der Machine-Learning-Bibliothek Scikit-learn in die Praxis um.
Umgebungs-Setup
Stelle sicher, dass die notwendigen Bibliotheken installiert sind:
Beispiel
Vollständiger Beispielcode
Beispiel
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
# 1. Simulierte Daten erstellen
np.random.seed(42) # Konsistente Ergebnisse bei jedem Durchlauf sicherstellen
X = 2 * np.random.rand(100, 1) # 100 Stichproben, 1 Merkmal, Bereich [0,2)
y = 4 + 3 * X + np.random.randn(100, 1) # Wahre Beziehung: y = 4 + 3x + Rauschen
# 2. Aufteilen in Trainings- und Testsets (80% Training, 20% Test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. Trainiere ein einfaches lineares Regressionsmodell
model = LinearRegression()
model.fit(X_train, y_train)
# 4. Vorhersagen auf dem Testset treffen
y_pred = model.predict(X_test)
# 5. Berechne alle Evaluationsmetriken
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse) # Oder verwende mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)
# 6. Gib die Evaluationsergebnisse aus
print("=== Evaluationsbericht des Regressionsmodells ===")
print(f"Mittlerer absoluter Fehler (MAE): {mae:.4f}")
print(f"Mittlerer quadratischer Fehler (MSE): {mse:.4f}")
print(f"Wurzel des mittleren quadratischen Fehlers (RMSE): {rmse:.4f}")
print(f"Bestimmtheitsmaß (R²-Wert): {r2:.4f}")
print("\nModellkoeffizienten:)
print(f" Achsenabschnitt: {model.intercept_)
print(f" Steigung (Koeffizient für X): {model.coef_)
# 7. Ergebnisse visualisieren
plt.figure(figsize=(10, 5))
# Unterdiagramm 1: Streudiagramm der wahren Werte gegen die vorhergesagten Werte
plt.subplot(1, 2, 1)
plt.scatter(y_test, y_pred, alpha=0.7, edgecolors='k')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2, label='Perfekte Vorhersagelinie')
plt.xlabel('Wahre Werte (y_test)')
plt.ylabel('Vorhergesagte Werte (y_pred)')
plt.title('Wahre Werte gegen vorhergesagte Werte')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)
# Unterdiagramm 2: Histogramm der Fehlerverteilung
plt.subplot(1, 2, 2)
errors = y_test.flatten() - y_pred.flatten()
plt.hist(errors, bins=15, edgecolor='black', alpha=0.7)
plt.axvline(x=0, color='r', linestyle='--', label='Nullfehlerlinie')
plt.xlabel('Vorhersagefehler')
plt.ylabel('Häufigkeit')
plt.title('Verteilung des Vorhersagefehlers')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7, axis='y')
plt.tight_layout()
plt.show()
Zeilenweise Code-Erklärung
- Daten erstellen: Wir haben simuliert
y = 4 + 3x + 噪声Daten, die eine typische lineare Beziehung plus zufälliges Rauschen darstellen. - Datensatz aufteilen:
train_test_splitTeilen Sie die Daten zufällig in zwei Teile auf. Verwenden Sie das Trainingsset (X_train,y_train), um das Modell zu lernen, und verwenden Sie das ungesehene Testset (X_test,y_test), um seine Generalisierungsfähigkeit zu bewerten. Dies ist ein entscheidender Schritt bei der Evaluierung! - Modell trainieren: Erstellen
LinearRegressionObjekt und Aufruf.fit()Methode zum Trainieren. - Vorhersagen treffen: Rufen Sie
.predict()die Methode auf den Testset-Merkmalen aufX_testum vorhergesagte Werte zu erzeugeny_pred。 - Metriken berechnen: Verwenden Sie Scikit-learns
metricsFunktionen im Modul, um MAE, MSE, R² einfach zu berechnen. RMSE erhält man durch Ziehen der Quadratwurzel aus MSE. - Ergebnisse ausgeben: Formatieren Sie und geben Sie alle Metriken und die vom Modell gelernten Parameter aus.
- Visualisierung:
- Linker Plot: Idealerweise sollten die Punkte im Streudiagramm eng um die rote gestrichelte Linie (perfekte Vorhersagelinie) liegen.
- Rechter Plot: Das Histogramm der Fehlerverteilung sollte ungefähr um 0 zentriert und annähernd normalverteilt sein, was normalerweise ein gutes Zeichen ist.
Praktische Übungen und Zusammenfassung
Praktische Übung
- Code ausführen: Kopieren Sie den obigen Code in Ihre Python-Umgebung und führen Sie ihn aus. Beobachten Sie die Ausgabeergebnisse und Plots.
- Daten ändern: Erhöhen Sie versuchsweise
np.random.randn()die Rauschskala darin, und führen Sie es dann erneut aus. Beobachten Sie, wie sich alle Evaluationsmetriken ändern? Wie unterscheiden sich die Diagramme? - Modell ändern: Versuchen Sie, zu verwenden
from sklearn.tree import DecisionTreeRegressorum das lineare Regressionsmodell zu ersetzen. Vergleichen Sie die Evaluationsmetriken der beiden Modelle. - Rechenübung: Berechnen Sie manuell die MAE, MSE, RMSE und R² für die folgenden drei Stichproben.
- Wahre Werte y: [10, 20, 30]
- Vorhergesagte Werte ŷ: [12, 18, 28]