APPRENTISSAGE AVEC PYTHON ET SICKIT LEARN
Master 1 Business Analytics & Data Science
TP1 : Régression Linéaire avec Scikit-learn
Suite : Evaluation du Modèle & Etude Théorique
Mounira Ilahi Amri
Objectifs
Pour le TP précédent, nous avons vu comment faire une régression
linéaire en python à l’aide de la librairie sklearn sur un problème
élémentaire. Ce TP fait la suite. Nous allons apprendre à :
Utiliser la somme résiduelle des carrés pour évaluer
l’apprentissage de notre modèle,
Résoudre analytiquement l’équation correspondant à notre
modèle afin de minimiser la fonction de coût,
Mesurer les performances de notre modèle sur un ensemble
de test.
** Ce tp est insipré des travaux de Gavin Hackeling dans le livre
Mastering machine learning with scikit-learn.
Exercice 3: Evaluation du modèle
Il nous faut maintenant évaluer notre modèle. Pour cela, nous avons besoin de définir
Publicité
une fonction de perte (également appelée une fonction de coût). La différence entre le
prix réel des pizzas et le prix prédit par notre modèle est appelée erreur résiduelle ou
erreur d’apprentissage. Lorsque nous évaluons notre modèle sur une base de test
indépendante, l’erreur résultante est appelée erreur de prédiction ou erreur de test.
Nous pouvons créer le meilleur modèle possible en minimisant la somme de l’erreur
résiduelle. Cette erreur est appellée residual sum of squares RSS (indiqués par les lignes
verticales en rouge).
1
La fonction de coût associée à cette erreur est définie comme suit :
(cid:6)
(cid:1)(cid:2)(cid:2) (cid:4) (cid:5)
(cid:7)(cid:8)(cid:9)
(cid:10)(cid:11)(cid:12) (cid:13) (cid:14) (cid:10)(cid:15)(cid:12)(cid:16)(cid:16) (cid:17)
avec yi la valeur observée et f (xi) la valeur prédite.
Calculer l’erreur obtenue en python.
Residual sum of squares : 1.75
Exercice 4: Etude théorique de notre problème de pizza
Nous souhaitons trouver les meilleurs paramètres α et β pour résoudre l’équation y =
αx + β (minimiser la fonction de coût).
Publicité
Pour calculer le paramètre α nous avons besoin de calculer la variance de x et la
covariance de x et y. La variance mesure à quel point un échantillon de points est
éparpillé. Une variance proche de 0 signifie que les données sont proches de leur
moyenne. La variance est calculée comme suit :
avec x¯ la moyenne des x, xi l’exemple d’apprentissage, et n le nombre d’exemples.
Nous pouvons directement calculer la variance d’un échantillon à l’aide de la
2
bibliothèque numpy avec la fonction np.var(x, ddof=1).
La covariance mesure à quel point deux variables changent ensemble. Si les variables
augmentent en même temps alors la covariance est positive, si l’une augmente et l’autre
diminue alors la covariance est négative. S’il n’existe aucune relation entre les deux
variables alors la covariance est nulle.
La covariance est calculée :
avec xi le ième exemple, x¯ la moyenne des x, y¯ la moyenne des prix, et yi le prix du
ième exemple.
Comme pour la variance, nous pouvons calculer la covariance directement à l’aide de
numpy avec np.cov(x.transpose(), y)[0][1].
Nous avons maintenant les valeurs de la variance et de la covariance nécessaires pour
calculer le paramètre α comme suit :
Publicité
Calculer ce paramètre.
Il nous faut maintenant calculer le paramètre β = y¯ αx¯, avec y¯ la moyenne des y,
et x¯ la moyenne des x (notre modèle doit passer par le centroid de coordonnées (x¯,
y¯)).
−
Calculer ce paramètre.
Afin d’éviter le surapprentissage, nous souhaitons maintenant évaluer notre modèle
sur un ensemble de test indépendant. Définissons cet ensemble comme suit :
Exemple
1
2
3
4
5
Taille
8
9
11
16
Publicité
12
Prix
11
8.5
15
18
11
Nous allons utiliser une mesure classique appelée R-squared (coefficient de
3
détermination). Nous avons besoin de notre RSS définie précédement ainsi que la
somme totale des carrés :
avec yi la prédiction pour la ième variable et y¯ la moyenne des valeurs prédites.
Nous définissons simplement
Heureusement, là encore nous pouvons calculer directement R2 avec sklearn, en
utilisant la fonction score.
Rsquared = 0.66
4