TP1RL

Télécharger au format pdf
Télécharger au format pdf
Vous êtes sur la page 1sur 7
USTHB, FGE, ELN Master 1 ESE TP Intelligence arti TP N°1: REGRESSION LINEAIRE Serer Définir le made de régrossion linéaire et expliquer son application Définir la fonction du cout et du gradient. Présentation des résultats sous forme graphiques et évaluation de modéle. Appliquer l’équation de régression a la prédiction. Présentation des résultats avec le module fitlm et comparaison avec la méthode normale. * Matlab * Liste de bases de dornées (ville txt et salaires.txt) * S'apporter votre PC. 1 Partie théorique 1.1 Descente du gradient Dans cette section, vous allez ajuster les parametres de régression linéaire 0 a notre base de données en utilisant la descente du gradient 1.2 Mise a jour des parametres du modéle Lrobjectif de la régression linéaire est de minimiser la fonction de cout 100) = 3 ¥ (he (x) —¥9)” 0) mt ou I’hypothese hip (x*) est donnee par le modele Inneaire ho (x) Ty = by + Ox Q) Rappelons que les parambtres de votre modale sont les valeurs @;. Ce sont les valeurs que vous allez ajuster pour minimiser le coat J (0). Une fagon de le faire est d’utiliser I’algorithme itératif de descente du gradient. Dans ect algorithme, a chaque itération exécute une mise a jour. wy (e) G8) 25 (hw (x0) yl) 9! (wae pour toute es) Une forme vectorielle de I’équation (3) eat donnée par : pe s= opt — x (xT (x of""—y)) @ Mr. E.Meftah 1 2022/2023 USTHB, FGE, ELI Master 1 ESE TP Intelligence artificielle A chaque étape de la descerte du gradient, vos parameétres 6; se rapprochent de plus en plus des valeurs optimales qui permettront d’obtenir le coftt minimal J (@).. @) A qnoi sert la descente du gradient dans la régression linéaire? (Q2): Démontrez Véquation @), a dérivation de la fonction de coat dela régression linéaire. 2 Partie pratique Dans ce TP, vous allez implémenter la régression linéaire 4 une variable pour prédire les bénéfices dune chaine de restaurants traditionnels. Supposons que vous étes les gérants et que vous prévoyez @ouvrir un nouveau point de vente dans différentes villes. La chaine posséde déja de nombreux restaurants dans différentes villes et vous disposez de données sur les bénéfices et la population de ces villes. Le fichier ville.txt contient la base de données de notre probleme de régression linéaire. La premigre colonne est la population d’une ville et la seconde est le bénéiice dun restaurant dans cette ville. Une valeur négative indique une perte. 2.1 Affichage des données Avant de commencer une tache, il est souvent utile de comprendre les données en les visualisant Pour la base de données ville txt, vous pouvez utiliser un nuage de points afin de visualiser les don- nées, puisqu’ll n’y a que deux propriétés a représenter (le bénéfice et la population). (De nombreux problémes que vous rencont-erez dans la vie réelle sont multidimensionnels et ne peuvent pas étre représentés sur un graphique a deux dimensions). Dans TP1.m, la base de données est importée & partir du fichier de données sous forme de variables X ety. Wh Initialisation clear ; close all ; cle data = load(‘ville.txt'); % lire des donnees separees par des virgules X = data(:, 1); y = data(:, 2); m= length(y); % nomore d'exemples d'apprentissage plot(x, y, 'bo', 'MarkerSize', 11); % Affichez les donnees ylabel('Benefice en 10000$'); % Definir le label de l'axe des y xlabel('Population d2 la ville en 10 000 habitants'); % Definir le label de l'axe des x 2.2. Implémentation Dans TP1.m, nous avons déja configuré les données pour la régression linéaire. Dans les lignes ci- dessous, nous ajoutons une autre dimension a nos données pour tenir compte du terme d’intercep- tion @). Nous initialisons également les paramétres initiaux a 0 et le taux d’apprentissage alpha & 0,01. X = Cones(m, 1), data(:,1)]; % Ajouter une colonne de "uns" a X theta = zeros(2, 1); % Initialiser les parametres d'ajustement iterations = 1500; alpha = 0.01; Mr. E.Meftah 2 2022/2023 USTHB, FGE, ELI Master 1 ESE TP Intelligence artificielle @ [Note cimplementation :] Nous stockons chaque exemple comme une ligne dans la matrice X. Pour prendre en compte le terme d’interception (@y), nous ajoutons une premiére colonne supplémentaire 4 X et ui attribuons tous des uns. Cela nous permet de traiter 8 comme une autre “caractéristique-feature’ 2.2.1 Calculer le coat J (9) En effectuant la descente du gradient pour apprendre & minimiser la fonction de coitt | (9), il est intéressant de surveiller la convergence en calculant le coat. Dans cette section, vous allez implé- menter une fonction permettant de calculer J (@) de fagon a pouvoir verifier la convergence de votre algorithme. Votre prochaine tache consiste a compléter le code du fichier CalulCost.m, qui est une fonction per- mettant de calculer J (@). Raspelez-vous que les variables X et y ne sont pas des valeurs scalaires, mais des matrices dont les lignes représentent les exemples de l'ensemble d’apprentissage. function J = CalculCost(X, y, theta) CalculCost Calcule le cout de la regression lineaire J = Calulcost(Xx, y, theta) determine le cout de l'utilisation de theta comme parametre de regression lineaire afin d'ajuster les points de donnees en X et y Initialiser quelques valeurs utiles m = length(y); % nomore d'exemples d'apprentissage % Vous davaz retournar corractamant las variahlas suivantes J=0 VOTRE CODE Icr Instructions : Calculer le cout d'un choix particulier de theta % Vous devez fixer J au cout h_theta =... ; %Uompleter 1a Ligne en vous servant de 1'eq(2) sum_sq = sum(....); ZCompleter la ligne en vous servant de 1'eq(1). J = sum_sq+i/(2*m); ) Apres avoir terminé le fonction, appelez. cette fonction sur le programme initial TP1.m, et affichez la valeur de coat J. @ Répétez le méme calcul pour @ = [@;)] = [=1;2] , Que remarquez-vous? 2.2.2 Descente du gradient Maintenant, vous allez implémenter la descente du gradient dans le ficaier DesctGrad.m. La structure de la boucle a été écrite pour vous, et vous navez qu’a fournir les mises a jour de @ a chaque itération. Lorsque vous programmez, assurez-vous de comprendre ce que vous essayez.d'optimiser et ce que vous mettez a jour. N’oubliez pas que le coat J (8) est paramétré par le vecteur @, et non par X et/ou y. Autrement dit, nous minimisons la valeur de [ (0) en changeant les valeurs du vecteur @, et non en changeant X et/ou y (Se référer a V’équation (3)) function [theta, J_hist] = DesctGrad(X, y, theta, alpha, iterations) % DesctGrad Effectue une descente du gradient pour apprendre le theta Initialiser quelques valeurs utiles m= length(y); % nomore d'exemples d'apprentissage J_hist = zeros(iterations, 1); Mr. E.Meftah 3 2022/2023 USTHB, FGE, ELI Master 1 ESE TP Intelligence artificielle for iter = 1:iterations % VOTRE CODE Ict Instructions : Effectuer une seule tape de gradient sur le vecteur paranetre theta. UL'impl mentation vectorielle de 1a descente du gradient selon 1'Eq (4) est theta : % Sauvegarder le cout J a chaque it ration || J_hist (iter) = CalculCost(x, y, theta); end end ° ®@® Une fois que vous aver terminé, donnez les valeurs dajustement @y et 4; ainsi que le coat J (@) aprés la convergence. Vous pouvez utiliser vos paramétres finaux dans TP1.m pour tracer la droite de la régression linéaire. Vos valeurs finales pour 9 seront également utilisées pour effectuer des prédictions sur les béné- fices dans des zones de 40000 et 80000 habitants. Donnez. ces prédictions, en servant 'example predict1 = [1, 4] * theta*10000; predict2 = [1, 8] * theta+10000; ® Tracez la courbe | (8) = f(it), le coat en fonction le nombre d’itération et déduisez le nombre ditération nécessaire a‘in d’assurer la convergence ( plot(1 :numel(J_his), J_his, '-b’, 'LineWid- th’, 2)3) Quel est I'intéret de fixer un nombre des itérations? Appliquer la décente da gradient sur les 3 initialisations des paramétres (thetas) : @@ (a) Initialisation aléatoire (©) Initialisation a zero (©) Initialisation A un Est-ce que initialisation des parametres affecte la convergence? ® 2.3. Régression linéaire par la fonction fitim Matlab propose une methode plus simple d’ajustement des modeles linéaires : la fonction fitIm. Pour utiliser fitlm, nous commengons par placer nos données dans un modéle : mdl = fitlm(X,y) {%Ajustez un modele de regreseioa lineaire en utilisant fitim. Tracez la droite de la régression linéaire (plot(mdl)). Mr. E.Meftah 4 2022/2023 USTHB, FGE, ELI Master 1 ESE TP Intelligence artificielle Le modéle affiche également les informations sur les coefficients estiriés, qui sont stockées dans la propriété Coefficients (mdl.Coetficients). Les resutats sont donnés par : Estimé (Estimate) Interception (p) XH (Q2): Donnez les valeurs d’zjustement 8) et 6), et comparez les avec ceux trouver dans la section 2.2.2. Que remarquez-vous? 3 HomeWork En tant qu’employé, vous devez connaitre plusieurs facteurs qui peuvent affecter votre salaire. U'un de ces facteurs est le nombre d’années d’expérience. En effet, si vous avez plus d’expérience dans un domaine, vous pouvez obtenir un meilleur salaire. Dans ce cas, vous réaliserez quelques prédictions en utilisant la base de données salaires.txt qui couvrait le lien entre larnée d’expérience et le salaire. @:) Reprenez la partie 2.2.2, Ensuite, donnez la prédiction du salaire d’un employé dans 4 ans, et dans 8 ans Reprenez la partie 2.3. 4 Taches optionnelles Dans cette section, nous avons inclus quelques codes Python™ @(facultatifs). Ils vous aideront a ap- profondir votre compréhension du TP, et si vous étes en mesure de le faire, nous vous encourageons a les compléter également, Mr. E.Meftah 5 2022/2023 (il: USTHB, FGE, ELI Master 1 ESE TP Intelligence artificielle 4.1 Affichage des données 4.2.2 Descente di gradient # chargenent de bibliotheques loftiedoeneee nity ren # Calcul scientifique e: uectoriel ens Cat Desetine eemtnecene ioe python ters): import auspy as np ‘# Initialiser quelques valeursy # utilisé pour manipuler Les chemingy wutéles “de répertoire m = len(y) import oc cout = np.zeros(iters) # didliothéque permet de tracer et dey theta = theta. copy()

Vous aimerez peut-être aussi