[PYTHON] Méthode d'évaluation du problème de régression d'apprentissage automatique (erreur quadratique moyenne et coefficient de décision)

○ Les principaux points de cet article Notez que j'ai appris à évaluer le problème de régression.

○ Code source (Python): pour le modèle de régression linéaire

Apprentissage et évaluation des problèmes de régression


from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from sklearn.svm import SVR
%matplotlib inline

#Préparation des données. Prix des maisons à Boston
data = load_boston()
X = data.data[:, [5,]] #Extraire uniquement le nombre de pièces comme variables explicatives
y = data.target

#Apprendre avec un modèle de régression simple
model_l = LinearRegression()
model_l.fit(X, y)
#Récurrence ligne droite y=ax +Inclinaison de b et valeur de section
print(model_l.coef_) #a: Inclinaison
print(model_l.intercept_) #b: Coupe

#Prévoir
l_pred = model_l.predict(X)

#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.legend()
plt.show()

résultat [9.10210898] -34.67062077643857 ダウンロード.png

C'est comme ça?

Erreur quadratique moyenne

Calcul de l'erreur quadratique entre la valeur prédite et la valeur réelle et prendre la moyenne Plus la valeur est petite, plus la valeur prédite est correcte.

Erreur quadratique moyenne


mean_squared_error(y, l_pred)
43.60055177116956

Coefficient de décision

Un nombre qui indique la précision de la prédiction en utilisant l'erreur quadratique moyenne. Ce sera une valeur de 0 à 1. Même en comparant différentes valeurs, les valeurs sont relativement comparables.

Coefficient de décision


r2_score(y, l_pred)
0.48352545599133423

Le résultat du modèle de régression linéaire est-il un bon résultat? Ensuite, essayez d'autres algorithmes.

○ Code source (Python): pour le modèle SVR

Apprentissage et évaluation de SVR


# SVR(Machine à vecteurs de support (méthode du noyau))Apprendre en
model_s = SVR(C=0.01, kernel='linear') #Le paramètre de régularisation est 0.Utiliser le noyau linéaire avec 01
model_s.fit(X, y)

#Récurrence ligne droite y=ax +Inclinaison de b et valeur de section
print(model_s.coef_) #a: Inclinaison
print(model_s.intercept_) #b: Coupe

#Prévoir
s_pred = model_s.predict(X)

#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.legend()
plt.show()

résultat [[1.64398]] [11.13520958] ダウンロード (1).png

Le SVR est-il plus subtil? ??

Erreur quadratique moyenne et coefficient de détermination


mean_squared_error(y, s_pred)
72.14197118147209
r2_score(y, s_pred)
0.14543531775956597

La régression linéaire est meilleure. Pourtant! !! Je ne sais pas si je change les hyper paramètres (paramètres de régularisation et méthode du noyau) de SVR.

○ Code source (Python): pour le modèle SVR

Apprentissage et évaluation SVR (modification des hyper paramètres)


model_s2 = SVR(C=1.0, kernel='rbf') #Utiliser le noyau rbf avec le paramètre de régularisation 1
model_s2.fit(X, y)

#Prévoir
s_pred2 = model_s2.predict(X)

#affichage graphique
fig, ax = plt.subplots()
ax.scatter(X, y, color='red', marker='s', label='data')
ax.plot(X, l_pred, color='blue', label='regression curve')
ax.plot(X, s_pred, color='black', label='svr curve')
ax.plot(X, s_pred2, color='orange', label='svr_rbf curve')
ax.legend()
plt.show()

résultat ダウンロード (2).png

Est-ce lisse et agréable? ??

Erreur quadratique moyenne et coefficient de détermination


mean_squared_error(y, s_pred2)
37.40032481992347
r2_score(y, s_pred2)
0.5569708427424378

Mieux que la régression linéaire. Cela dépend des hyper paramètres.

■ Impressions ・ Étudiez comment évaluer les problèmes de régression. L'erreur quadratique moyenne et le coefficient de détermination sont tous deux déterminés sur la base de la "différence entre la valeur prédite et les données réelles". En tant que programme, la «liste de données de réponse correcte» et la «liste de données prédites» sont comparées, et la différence est calculée pour chaque donnée, mise au carré et moyennée. Facile à comprendre sensuellement.

Recommended Posts

Méthode d'évaluation du problème de régression d'apprentissage automatique (erreur quadratique moyenne et coefficient de décision)
Les pièges du RMSE (erreur quadratique moyenne), un indice d'évaluation de la régression!
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Classification et régression dans l'apprentissage automatique
[Apprentissage automatique] Résumé et exécution de l'évaluation / des indicateurs du modèle (avec jeu de données Titanic)
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Procédure d'apprentissage automatique de base: ③ Comparez et examinez la méthode de sélection de la quantité de caractéristiques
Prédire les travaux de courte durée de Weekly Shonen Jump par apprentissage automatique (Partie 2: Apprentissage et évaluation)
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique
Introduction à l'apprentissage automatique ~ Montrons le tableau de la méthode du K plus proche voisin ~ (+ gestion des erreurs)
[Régression linéaire] À propos du nombre de variables explicatives et du coefficient de détermination (degré de liberté ajusté)
Méthode de voisinage #k d'apprentissage automatique et sa mise en œuvre et divers
Une méthode concrète pour prédire les courses de chevaux et simuler le taux de récupération par apprentissage automatique
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
Régression logistique d'apprentissage automatique
Régression linéaire d'apprentissage automatique
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Music and Machine Learning Prétraitement MFCC ~ Mel Frequency Kepstram Coefficient
Examen de la méthode de prévision des échanges utilisant le Deep Learning et la conversion en ondelettes - Partie 2
[Apprentissage automatique] Comprendre la régression logistique à partir de scikit-learn et des mathématiques