Introduction
Dans ce laboratoire, nous allons explorer les modèles linéaires dans scikit-learn. Les modèles linéaires sont un ensemble de méthodes utilisées pour les tâches de régression et de classification. Ils supposent que la variable cible est une combinaison linéaire des caractéristiques. Ces modèles sont largement utilisés en apprentissage automatique en raison de leur simplicité et de leur interprétabilité.
Nous aborderons les sujets suivants :
- Moindres carrés ordinaires
- Régression Ridge
- Lasso
- Régression logistique
- Descente de gradient stochastique
- Perceptron
Commencez avec Supervised Learning: Regression, si vous n'avez pas d'expérience antérieure en apprentissage automatique.
Conseils sur la VM
Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Moindres carrés ordinaires
Commencez avec Supervised Learning: Regression, si vous n'avez pas d'expérience antérieure en apprentissage automatique.
Les moindres carrés ordinaires (OLS) est une méthode de régression linéaire qui minimise la somme des carrés des différences entre les cibles observées et les cibles prédites. Mathématiquement, il résout un problème de la forme : $$\min_{w} || X w - y||_2^2$$
Commenceons par ajuster un modèle de régression linéaire en utilisant les OLS.
from sklearn import linear_model
reg = linear_model.LinearRegression()
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
reg.fit(X, y)
print(reg.coef_)
- Nous importons le module
linear_modelde scikit-learn. - Nous créons une instance de
LinearRegression. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle linéaire.
Régression Ridge
La régression Ridge est une méthode de régression linéaire qui ajoute un terme de pénalité à la fonction objectif des moindres carrés ordinaires. Ce terme de pénalité aide à réduire le surapprentissage en réduisant les coefficients vers zéro. La complexité du modèle peut être contrôlée par le paramètre de régularisation.
Ajustons un modèle de régression Ridge.
reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])
print(reg.coef_)
- Nous créons une instance de
Ridgeavec le paramètre de régularisationalphadéfini sur 0,5. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle de régression Ridge.
Lasso
Le Lasso est une méthode de régression linéaire qui ajoute un terme de pénalité à la fonction objectif des moindres carrés ordinaires. Le terme de pénalité a pour effet de fixer certains coefficients à exactement zéro, effectuant ainsi une sélection de caractéristiques. Le Lasso peut être utilisé pour l'estimation de modèles creux.
Ajustons un modèle Lasso.
reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])
print(reg.coef_)
- Nous créons une instance de
Lassoavec le paramètre de régularisationalphadéfini sur 0,1. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle Lasso.
Régression logistique
La régression logistique est une méthode de classification qui estime les probabilités des résultats possibles en utilisant une fonction logistique. Elle est couramment utilisée pour les tâches de classification binaire. La régression logistique peut également être étendue pour gérer les problèmes de classification multi-classe.
Ajustons un modèle de régression logistique.
clf = linear_model.LogisticRegression(random_state=0).fit(X, y)
print(clf.coef_)
- Nous créons une instance de
LogisticRegressionavec le paramètrerandom_statedéfini sur 0. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle de régression logistique.
Gradient stochastique (SGD)
Le Gradient stochastique (SGD) est une approche simple mais efficace pour entraîner des modèles linéaires. Il est particulièrement utile lorsque le nombre d'échantillons et de caractéristiques est très grand. Le SGD met à jour les paramètres du modèle en utilisant un sous-ensemble réduit des données d'entraînement à chaque itération, ce qui le rend adapté à l'apprentissage en ligne et à l'apprentissage hors mémoire.
Ajustons un modèle de régression logistique en utilisant le SGD.
clf = linear_model.SGDClassifier(loss="log_loss", max_iter=1000)
clf.fit(X, y)
print(clf.coef_)
- Nous créons une instance de
SGDClassifieravec le paramètrelossdéfini sur "log_loss" pour effectuer une régression logistique. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle de régression logistique obtenu en utilisant le SGD.
Perceptron
Le Perceptron est un algorithme de classification linéaire simple adapté à l'apprentissage à grande échelle. Il met à jour son modèle uniquement sur les erreurs, ce qui le rend plus rapide à entraîner que le gradient stochastique (SGD) avec une perte hinge. Les modèles résultants sont également plus creux.
Ajustons un modèle de perceptron.
clf = linear_model.Perceptron(alpha=0.1)
clf.fit(X, y)
print(clf.coef_)
- Nous créons une instance de
Perceptronavec le paramètre de régularisationalphadéfini sur 0,1. - Nous utilisons la méthode
fitpour ajuster le modèle aux données d'entraînement. - Nous affichons les coefficients du modèle de perceptron.
Sommaire
Dans ce laboratoire, nous avons exploré les modèles linéaires dans scikit - learn. Nous avons appris sur les moindres carrés ordinaires, la régression ridge, le lasso, la régression logistique, le gradient stochastique et le perceptron. Ces modèles peuvent être utilisés pour les tâches de régression et de classification. Nous avons également vu comment ajuster ces modèles en utilisant diverses algorithmes et techniques telles que l'apprentissage en ligne et la sélection de caractéristiques.