[PYTHON] Régression avec un modèle linéaire

Bonjour à tous. Je suis maintenant [Machine learning commençant par Python](https://www.amazon.co.jp/Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3 % 82% 8B% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92-% E2% 80% 95scikit-learn% E3% 81% A7% E5% AD% A6% E3% 81% B6% E7% 89% B9% E5% BE% B4% E9% 87% 8F% E3% 82% A8% E3% 83% B3% E3% 82% B8% E3% 83% 8B% E3% 82% A2% E3% 83% AA% E3% 83% B3% E3% 82% B0% E3% 81% A8% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% J'étudie à 92% E3% 81% AE% E5% 9F% BA% E7% A4% 8E-Andreas-C-Muller / dp / 4873117984).

Un concept intéressant appelé régression linéaire est apparu, je pense donc que je devrais le résumer un peu.

Qu'est-ce qu'un retour en premier lieu?

La régression (Kaiki, anglais: régression) consiste à appliquer le modèle Y = f (X) aux données lorsque Y est une valeur continue en statistique. En d'autres termes, ajustez le modèle entre la variable dépendante (variable objective) Y et la variable indépendante (variable explicative) X de l'échelle continue. Si X est unidimensionnel, on parle de régression simple, et si X est bidimensionnel ou plus, on parle de régression multiple. Wikipédia

En d'autres termes, le but de la régression est d'atterrir sur la ** prédiction de valeur continue **. Par exemple ... Prédire le revenu annuel ** d'une personne (variable objective) ** à partir de la formation universitaire, de l'âge et de l'adresse (variable explicative). Prédire le ** rendement (variable objective) ** d'un producteur de maïs à partir du rendement de l'année précédente, des conditions météorologiques et du nombre d'employés (variable explicative).

Alors, qu'est-ce que la régression avec un modèle linéaire?

La régression avec un modèle linéaire utilise littéralement une fonction linéaire pour prédire la variable objective.

La formule générale de prédiction par le modèle linéaire dans le problème de régression est

y = w[0] \times x[0] + w[1] \times x[1] + \dots + w[p] \times x[p] + b

Peut être exprimé comme.

Ici, x [0] ... x [p] indique la ** quantité de caractéristiques ** d'un point de données, w et b sont les ** paramètres ** du modèle entraîné, et y est * du modèle. * Prévoir **.

En d'autres termes, lorsque les w et b optimisés sont obtenus (appris) à partir des données d'apprentissage et qu'un nouveau x [0] ... x [p] est entré, Cela revient à produire ** y ** aussi précis que possible.

Ici, il existe différents algorithmes de régression utilisant un modèle linéaire. La différence entre ces modèles réside dans la méthode de recherche (apprentissage) ** w, b ** et la méthode de vivre la complexité du modèle.

Aujourd'hui, je voudrais aborder la méthode de régression linéaire la plus simple et la plus classique ** généralement la méthode des moindres carrés (OLS) **.

Généralement le moins carré (OLS)

Considérons une variable explicative pour la simplicité. En d'autres termes, la formule est

y = wx + b

Dans cette régression linéaire, w et b sont calculés de sorte que l'erreur quadratique moyenne entre y et la valeur prédite soit minimisée dans les données d'apprentissage. C'est difficile à comprendre à partir du texte, donc si vous y réfléchissez avec une image, c'est comme suit.

IMG_2226.jpeg En d'autres termes, trouvez ** w ** et ** b ** de sorte que la somme des carrés de la longueur de la ligne bleue (erreur) soit aussi petite que possible, et le résultat est une ligne droite rouge.

Si vous écrivez dans une formule mathématique

Erreur quadratique moyenne=\frac{1}{n}\sum_{i=1}^{n} (y_i - y'_i)^2,  (y_i:Valeur dans les données d'entraînement i-ème, y'_i:i-ème valeur prédite)

Sélectionnez w et b pour que cette erreur quadratique moyenne devienne petite. C'est OLS. C'est facile et beau.

Exemple de code

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

import mglearn

X, y =mglearn.datasets.make_wave(n_samples=60)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

lr = LinearRegression().fit(X_train, y_train)

print("lr.coef_(Inclinaison OU poids) : {}".format(lr.coef_))
print("lr.intercept_(Section) : {}".format(lr.intercept_))

print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("test set score: {:.2f}".format(lr.score(X_test, y_test)))

Cliquez ici pour les résultats

lr.coef_(Inclinaison OU poids) : [0.39390555]
lr.intercept_(Section) : -0.031804343026759746
Training set score: 0.67
test set score: 0.66

Tracons cette ligne droite. Figure_1.png

Cependant, la prédiction n'est pas si bonne à 66%. C'est peut-être sous-adapté.

La prochaine fois, nous parlerons de différents modèles de régression, Ridge et Lasso. Passez une bonne nuit à tous. bonne nuit.

Recommended Posts

Régression avec un modèle linéaire
Régression linéaire avec statsmodels
Prédire l'été chaud avec un modèle de régression linéaire
Régression linéaire
[Python] Régression linéaire avec scicit-learn
Régression linéaire robuste avec scikit-learn
Régression linéaire avec distribution t de Student
<Cours> Machine learning Chapitre 1: Modèle de régression linéaire
Optimisation apprise avec OR-Tools [Planification linéaire: modèle en plusieurs étapes]
Montage du modèle avec lmfit
Régression linéaire d'apprentissage automatique
Implémenter un modèle de régression logistique en temps discret avec stan
Programmation linéaire avec PuLP
Effectuer une analyse de régression avec NumPy
Essayez la régression avec TensorFlow
Modèle de régression multivariée avec scikit-learn - J'ai essayé de comparer et de vérifier SVR
Introduction à l'hypothèse Tensorflow-About et au coût de la régression linéaire
Machine Learning: Supervision - Régression linéaire
Analyse de régression multiple avec Keras
Ridge retour avec Mllib à Pyspark
Méthode de régression linéaire utilisant Numpy
Calibrer le modèle avec PyCaret
Régression linéaire en ligne en Python
Implémentation de la régression logistique avec NumPy
Pour ceux qui analysent dans l'atmosphère (modèle de régression linéaire 1)
Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory
Utiliser MLflow avec Databricks ④ --Call model -
Personnaliser le modèle / la couche / la métrique avec TensorFlow
Les débutants en apprentissage automatique essaient la régression linéaire
Jointure externe gauche dans le modèle Django
Modèle de classification simple avec réseau neuronal
Générer automatiquement un diagramme de relation de modèle avec Django
Introduction à la modélisation statistique bayésienne avec python ~ Essai de régression linéaire avec MCMC ~
Modèle multi-entrées / multi-sorties avec API fonctionnelle
Comparaison des modèles de régression - ARMA vs Random Forest Regression
[Python] Modèle gaussien mixte avec Pyro
Détection de chat avec OpenCV (distribution de modèles)
Créer un itérateur de modèle avec PySide
Validez le modèle d'entraînement avec Pylearn2
Analyse de régression logistique Self-made avec python
Régression linéaire (pour les débutants) -Édition de code-
Seq2Seq (2) ~ Attention Model edition ~ avec chainer
Pendule inversé avec contrôle prédictif du modèle
Prédiction des ondes de Sin (retour) avec Pytorch
Essayez de déduire à l'aide d'un modèle de régression linéaire sur Android [PyTorch Mobile]
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
Premier TensorFlow (édition révisée) - Régression linéaire et logistique
J'ai essayé l'analyse de régression multiple avec régression polypoly
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Régression linéaire en Python (statmodels, scikit-learn, PyMC3)
Affinons les hyper paramètres du modèle avec scikit-learn!
Régression linéaire en ligne en Python (estimation robuste)
Apprentissage automatique avec python (2) Analyse de régression simple
Implémentation PRML Chapitre 3 Modèle de fonction de base linéaire
Attention Seq2 Exécutez le modèle de dialogue avec Seq
Différence entre la régression linéaire, la régression Ridge et la régression Lasso
Reproduction sur plaque de régression linéaire bayésienne (PRML §3.3)
Modèle de régression utilisant scikit-learn et sa visualisation