Évaluation du modèle de régression

Dans le monde de l'apprentissage automatique, la construction d'un modèle n'est que la première étape. Tout comme nous cuisons un gâteau, nous devons le goûter pour savoir s'il est réussi. Pour les modèles de régression (un type de modèle utilisé pour prédire des valeurs numériques continues, comme les prix des maisons, la température ou les ventes),L'évaluation du modèleest notreétape de dégustation. Elle nous dit à quel point les prédictions du modèle sont précises, où il performe bien et où il y a une marge d'amélioration.

Cet article vous guidera à travers une étude systématique des méthodes d'évaluation des modèles de régression, des concepts fondamentaux aux métriques spécifiques, puis à la pratique du code, vous permettant non seulement de comprendre les rapports d'évaluation, mais aussi de "noter" vous-même votre modèle.


Concepts fondamentaux des modèles de régression et de l'évaluation

Avant de plonger dans les métriques, nous devons comprendre quelques concepts fondamentaux ; ils sont la pierre angulaire de toutes les méthodes d'évaluation.

Qu'est-ce qu'un problème de régression ?

La régression est un type d'apprentissage supervisé dont l'objectif est de prédire unevaleur numérique continue。

  • Exemple: Prédire le prix de vente (une valeur numérique continue) en fonction de la surface, de l'âge et de l'emplacement de la maison (caractéristiques).

Pourquoi avons-nous besoin d'évaluation ?

  1. Sélection du modèle: Comparer lequel de différents algorithmes (par ex., régression linéaire, régression par arbre de décision) est le plus performant sur vos données.
  2. Réglage des paramètres: Lors de l'ajustement des paramètres du modèle (par ex., la force de régularisation), nous avons besoin d'un critère objectif pour juger si l'ajustement est efficace.
  3. Confirmation des performances: S'assurer que le modèle a une capacité de prédiction fiable sur des données non vues, en évitant la « stratégie en fauteuil ».

Terme clé : Erreur

Toutes les métriques d'évaluation tournent autour de l'« erreur ». L'erreur est la différence entre la valeur prédite par le modèle (ŷ) et la valeur réelle (y).

  • Erreur en un seul point:误差 = y - ŷ
  • L'essence de l'évaluation est derésumer et analyser ces erreurs de différentes manières.。

Explication détaillée des principales métriques d'évaluation

Nous allons présenter les métriques d'évaluation les plus couramment utilisées et les plus importantes, en utilisant un exemple simple tout au long.

Supposons que nous ayons prédit les prix de 5 maisons :

Prix réel (y) Prix prédit (ŷ) Erreur (y - ŷ)
200 210 -10
150 145 5
300 310 -10
400 380 20
250 255 -5

1. Erreur absolue moyenne (MAE)

Compréhension intuitive: Additionnez les valeurs absolues de toutes les "erreurs" de prédiction, puis calculez la moyenne. Cela reflète directement "en moyenne, de combien d'unités la valeur prédite s'écarte de la valeur réelle".

Formule de calcul: MAE = (1/n) * Σ|y_i - ŷ_i|oùnest le nombre d'échantillons,Σest le symbole de sommation.

Exemple de calcul: MAE = (|-10| + |5| + |-10| + |20| + |-5|) / 5 = (10+5+10+20+5)/5 = 50/5 = 10

Interprétation: En moyenne, notre prédiction du prix des maisons s'écarte du prix réel de100,000 yuan。

Caractéristiques:

  • Avantages: Intuitif et facile à comprendre ; pas excessivement affecté par les valeurs d'erreur extrêmes (valeurs aberrantes).
  • Inconvénients: La fonction valeur absolue n'est pas dérivable partout en mathématiques, ce qui est peu pratique dans certains scénarios d'optimisation.

2. Erreur quadratique moyenne (MSE)

Compréhension intuitive: D'abord « mettre au carré » chaque erreur (pour éliminer le signe négatif et amplifier les erreurs), puis prendre la moyenne. Elle esttrès sensible aux grandes erreurs.。

Formule de calcul: MSE = (1/n) * Σ(y_i - ŷ_i)^2

Exemple de calcul: MSE = [(-10)^2 + (5)^2 + (-10)^2 + (20)^2 + (-5)^2] / 5 = (100+25+100+400+25)/5 = 650/5 = 130

Interprétation: La moyenne des erreurs au carré est de 130. Cette valeur elle-même n'a pas de signification directe en termes d'unité (soit 10,000 yuan au carré), mais elle est très efficace pour comparer des modèles.

Caractéristiques:

  • Avantages: Excellentes propriétés mathématiques (dérivable partout) ; c'est la fonction objectif minimisée lors de l'entraînement de nombreux modèles (par exemple, la régression linéaire).
  • Inconvénients: Sa dimension diffère des données d'origine, ce qui rend l'ordre de grandeur difficile à interpréter ; sensible aux valeurs aberrantes.

3. Racine de l'erreur quadratique moyenne (RMSE)

Compréhension intuitive: C'est la racine carrée de la MSE. Cela équivaut à « restaurer » la MSE sous sa forme d'origine, en la ramenant à la même dimension que les valeurs réelles et les valeurs prédites.

Formule de calcul: RMSE = sqrt(MSE)

Exemple de calcul: RMSE = sqrt(130) ≈ 11.4

Interprétation: En moyenne, nos prédictions s'écartent des valeurs réelles d'environ114,000 yuan. Cette interprétation est similaire à celle de la MAE (100,000 yuan), mais comme la RMSE met d'abord au carré puis prend la racine carrée, elle accorde un poids plus important aux erreurs plus grandes ; elle est donc généralement supérieure à la MAE.

Caractéristiques:

  • Avantages: Elle a la même dimension que les données d'origine, avec une meilleure interprétabilité que la MSE ; elle pénalise davantage les grandes erreurs et est couramment utilisée dans les scénarios où les grandes erreurs comptent (par exemple, la prévision du risque financier).
  • Inconvénients: Elle est également sensible aux valeurs aberrantes.

4. Score R² (coefficient de détermination)

Compréhension intuitive: Dans quelle mesure mon modèle est-il meilleur que « deviner à l'aveugle » (deviner avec la moyenne) ? C'est unevaleur de ratio, mesurant la capacité du modèle à expliquer la variation des données.

Formule de calcul: R² = 1 - (Σ(y_i - ŷ_i)^2 / Σ(y_i - y_mean)^2)oùy_meanest la moyenne des valeurs réelles.

Modèle « supposition à l'aveugle »: Pour n'importe quelle maison, je prédis le prix moyen d'une maison (y_mean)。

  • calculé commey_mean = (200+150+300+400+250)/5 = 260
  • La somme des erreurs au carré du modèle « supposition à l'aveugle » :Σ(y_i - 260)^2 = 1600+12100+1600+19600+100 = 35000

Exemple de calcul: R² = 1 - (650 / 35000) = 1 - 0.01857 ≈ 0.9814

Interprétation: Notre modèle peut expliquer la98.14%fluctuation de la variable cible (prix de la maison). Cela indique que le modèle s'ajuste très bien.

Caractéristiques:

  • Intervalle: Théoriquement, l'intervalle de R² est(-∞, 1]。
    • R² = 1: Prédiction parfaite.
    • R² = 0: L'effet du modèle est le même que celui d'une prédiction directe avec la moyenne.
    • R² < 0: Le modèle est encore pire qu'une prédiction directe avec la moyenne (ce qui indique que le modèle est totalement inadapté aux données).
  • Avantages: Adimensionnel, facile à comparer les performances des modèles sur différents jeux de données.
  • Inconvénients: À mesure que les caractéristiques du modèle augmentent, le R² augmente naturellement même si les caractéristiques ajoutées sont inutiles, ce qui peut conduire à un surapprentissage.

Comparaison des métriques et comment choisir

Pour une compréhension plus claire, résumons avec un tableau :

Métrique Formule de calcul (simplifiée) Dimension Sensibilité aux valeurs aberrantes Caractéristiques et scénarios d'application
MAE Erreur absolue moyenne Identique à y Insensible Interprétation la plus intuitive. Met l'accent sur « l'ampleur de l'écart moyen » ; convient à tous les scénarios de régression, en particulier aux données comportant de nombreuses valeurs aberrantes.
MSE Erreur quadratique moyenne Carré de y Très sensible Bonnes propriétés mathématiques. C'est une fonction de perte courante pour l'entraînement de modèles. La valeur elle-même n'est pas facile à interpréter.
RMSE Racine carrée de MSE Identique à y Très sensible Le plus couramment utilisé. Il combine les avantages mathématiques de MSE avec l'interprétabilité. Il pénalise fortement les grandes erreurs et est populaire en finance, en prévision et dans d'autres domaines.
R² 1 - (erreur du modèle / erreur de référence) Sans dimension Sensible Métrique de performance relative. Utilisée pour comparer l'amélioration d'un modèle par rapport à une référence simple. Facile à comparer entre les jeux de données.

Recommandations de sélection:

  1. Préférez rapporter RMSE et R²: RMSE donne l'ampleur réelle de l'erreur, tandis que R² donne la performance relative du modèle. C'est la combinaison la plus polyvalente.
  2. Lorsqu'il y a de nombreuses valeurs aberrantes dans les données, faites attention à la MAE。
  3. Utilisez MSE comme fonction de perte lors de l'entraînement et de l'optimisation du modèle.。
  4. Ne regardez jamais une seule métrique! Combinez plusieurs métriques pour évaluer globalement le modèle.

Exercice pratique : Évaluation avec Scikit-learn

Maintenant, passons à la pratique avec Python et la bibliothèque d'apprentissage automatique Scikit-learn.

Configuration de l'environnement

Assurez-vous que les bibliothèques nécessaires sont installées :

Exemple

pip install numpy scikit-learn matplotlib

Exemple de code complet

Exemple

import numpy as np
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. Créer des données simulées
np.random.seed(42) # Assurer des résultats cohérents à chaque exécution
X = 2 * np.random.rand(100, 1) # 100 échantillons, 1 caractéristique, intervalle [0,2)
y = 4 + 3 * X + np.random.randn(100, 1) # Relation vraie : y = 4 + 3x + bruit

# 2. Diviser en ensembles d'entraînement et de test (80 % entraînement, 20 % test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. Entraîner un modèle de régression linéaire simple
model = LinearRegression()
model.fit(X_train, y_train)

# 4. Faire des prédictions sur l'ensemble de test
y_pred = model.predict(X_test)

# 5. Calculer toutes les métriques d'évaluation
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse) # Ou utiliser mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)

# 6. Afficher les résultats d'évaluation
print("=== Rapport d'évaluation du modèle de régression ===")
print(f"Erreur absolue moyenne (MAE) : {mae:.4f}")
print(f"Erreur quadratique moyenne (MSE) : {mse:.4f}")
print(f"Racine de l'erreur quadratique moyenne (RMSE) : {rmse:.4f}")
print(f"Coefficient de détermination (score R²) : {r2:.4f}")
print("\nCoefficients du modèle :)
print(f" Ordonnée à l'origine : {model.intercept_)
print(f" Pente (Coefficient pour X) : {model.coef_)

# 7. Visualiser les résultats
plt.figure(figsize=(10, 5))

# Sous-graphique 1 : Nuage de points des valeurs réelles vs valeurs prédites
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='Ligne de prédiction parfaite')
plt.xlabel('Valeurs réelles (y_test)')
plt.ylabel('Valeurs prédites (y_pred)')
plt.title('Valeurs réelles vs valeurs prédites')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)

# Sous-graphique 2 : Histogramme de la distribution des erreurs
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='Ligne d'erreur nulle')
plt.xlabel('Erreur de prédiction')
plt.ylabel('Fréquence')
plt.title('Distribution de l'erreur de prédiction')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7, axis='y')

plt.tight_layout()
plt.show()

Explication du code ligne par ligne

  1. Créer des données: nous avons simuléy = 4 + 3x + 噪声des données, qui représentent une relation linéaire typique avec du bruit aléatoire.
  2. Diviser le jeu de données:train_test_splitDivisez aléatoirement les données en deux parties. Utilisez l'ensemble d'entraînement (X_train, y_train) pour entraîner le modèle, et utilisez l'ensemble de test non vu (X_test, y_test) pour évaluer sa capacité de généralisation. C'est une étape cruciale de l'évaluation !
  3. Entraîner le modèle: CréerLinearRegressionobjet et appelez.fit()méthode pour entraîner.
  4. Faites des prédictions: Appelez.predict()méthode sur les caractéristiques de l'ensemble de testX_testpour générer les valeurs préditesy_pred。
  5. Calculez les métriques: Utilisez celles de Scikit-learnmetricsfonctions du module pour calculer facilement MAE, MSE, R². RMSE s'obtient en prenant la racine carrée du MSE.
  6. Affichez les résultats: Formatez et affichez toutes les métriques et les paramètres appris par le modèle.
  7. Visualisation:
    • Graphique de gauche: Idéalement, les points de dispersion doivent s'aligner étroitement autour de la ligne pointillée rouge (ligne de prédiction parfaite).
    • Graphique de droite: L'histogramme de distribution des erreurs doit être à peu près centré sur 0 et approximativement distribué normalement, ce qui est généralement bon signe.

Exercices pratiques et résumé

Exercice pratique

  1. Exécutez le code: Copiez le code ci-dessus dans votre environnement Python et exécutez-le. Observez les résultats de sortie et les graphiques.
  2. Modifiez les données: Essayez d'augmenternp.random.randn()l'échelle de bruit dans celles-ci, puis réexécutez. Observez comment toutes les métriques d'évaluation changent ? En quoi les graphiques diffèrent-ils ?
  3. Changez le modèle: Essayez d'utiliserfrom sklearn.tree import DecisionTreeRegressorpour remplacer le modèle de régression linéaire. Comparez les métriques d'évaluation des deux modèles.
  4. Exercice de calcul: Calculez manuellement la MAE, la MSE, la RMSE et le R² pour les trois échantillons suivants.
    • Valeurs réelles y : [10, 20, 30]
    • Valeurs prédites ŷ : [12, 18, 28]
Autres extensions