diff --git a/readme.md b/readme.md index 2cdcb73480835b89e398309f2979a6ff96b5d409..aef4cc43e6d4424e38b5a2ff1f943f11ada504fb 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@ --- -title : "Travail pratique - Optimisation" +title : "Rapport - Travail pratique - Optimisation" author : "Nicolas Rivier & Birner Scott" date : "2021 - 2022" tof: true @@ -26,7 +26,7 @@ E(a,b) = $\sum_{j=1}^N (a * x_{j} + b - y_{j})^2$ En résolvant le système de deux équations à deux inconnues. Ce sont avec ces équations que nous allons pouvoir réaliser notre solutions numérique. -Nous alons d'abord chercher la dérivée en a et en b de la fonction de cout. +Nous allons d'abord chercher la dérivée en **a** et en **b** de la fonction de cout. Tels que : @@ -84,7 +84,7 @@ $a = \frac{-BD + CN}{AN - {B}^2}$ $a = \frac{CN - BD}{AN - {B}^2}$ -On a alors obtenu **a**, il nous reste plus qu'a l'inserer dans la formul de **b**, pour obtenir **b** sans variable. +On a alors obtenu **a**, il nous reste plus qu'a l'insérer dans la formule de **b**, pour obtenir **b** sans variable. On obtient: @@ -93,52 +93,52 @@ $b = -a\frac{B}{N} + \frac{D}{N} = -(\frac{CN - BD}{AN - {B}^2})\frac{B}{N} + \ $b = -(\frac{CNB - {B^2}D}{{AN^2} - {B^2}N}) + \frac{D}{N}$ ## Vérifiaction -On peux tester nos deux formule dans un exel par exemple pour s'assurer de la justesse des transformation. +On peux tester nos deux formules dans un excel par exemple pour s'assurer de la justesse des transformation. -On vas donc génerer un nuage de point suivant une droite, puis calculer nos deux formule en rentrant comme parametre les differents somme de points. +On vas donc génerer un nuage de points suivant une droite, puis calculer nos deux formules en rentrant comme paramètre les differentes sommes de points. -ce qui vas nous donner un premier resultat (Solution analitique a et b) que lon peux comparer avec l'equation de la coubre de tendance lineaire calculer par exel. +ce qui vas nous donner un premier resultat (Solution analitique a et b) que l'on peut comparer avec l'équation de la courbe de tendance lineaire calculée par excel.  -On compart donc que les deux resultat sont identique sur la base d'afichage des nombre a virgule obtenu. -De cette façon, nous avons pu confirmer la qualité de nos calculs, mais aussi de s'avoir à quoi s'attendre en therme de résultat par la suite. +On compart donc que les deux resultats sont identiques sur la base d'affichage des nombres a virgules obtenu. +De cette façon, nous avons pû confirmer la qualité de nos calculs, mais aussi de s'avoir à quoi s'attendre en therme de résultat par la suite. -À partir de ce moment là, on en a déduit que les équations obtenues en **A et B** sont correcte. +À partir de ce moment là, on en a déduit que les équations obtenues en **A** et **B** sont correcte. # Solution numérique ## Génération des points pseudo aléatoire -Nous parlons de points pseudo aléatoire car, ils sont en réalité généré autour d'une fonction de droite tel que f() = ax+b avec une marge d'erreur en 0 et 1 sur l'axe y. +Nous parlons de points pseudo aléatoire car, ils sont en réalité générés autour d'une fonction de droite tel que f() = ax+b avec une marge d'erreur entre 0 et 1 sur l'axe y. {width=400px} -En effet, de cette façon on s'assure que la droite que nous souhaitons retrouver resemble à celle qui a permis de générer les points... +En effet, de cette façon on s'assure que la droite que nous souhaitons retrouver ressemble à celle qui a permis de générer les points aléatoire... ## Descente de gradient -Pour trouver la meilleure droite passant par le nuage de points, nous devont appliqué la descente de gradient. En effet, c'est cette formule qui nous permettra de retrouver l'ordonée à l'origine ainsi que la pente de la meilleur droite passant par un nuage de points. +Pour trouver la meilleure droite passant par le nuage de points, nous devont appliquer la descente de gradient. En effet, c'est cette formule qui nous permettra de retrouver l'ordonnée à l'origine ainsi que la pente de la meilleur droite. Sur notre nuage de points nous avons appliqué la formule suivante: **Formule descente de gradient** -Et nous nous sommes arrêté quand le $\epsilon$ était inférieur à 0.001 ce qui représente environ 385 itération sur 30 points +Et nous nous sommes arrêté quand le $\epsilon$ était inférieur à 0.001 ce qui représente environ 385 itération sur 30 points. ## Validation du modèle de régression La validation croisée consiste à valider la descente de dradient de notre droite sur plusieurs échantillons de données. -Il a donc fallu en premier temps séparé de manière aléatoire notre nuage de points en 3 groupes distinct. Par la suite, le calcule de la descente du gradient et appliqué sur chacun des groupe. Le but de cette opération est de retrouvé dans chacun des groupes des droits similaires à celle trouvée au départ avec le nuage complet. Cela a pour but de valider nos données! +Il a donc fallu en premier temps séparer de manière aléatoire notre nuage de points en trois groupes distincts. Par la suite, le calcule de la descente du gradient est appliqué sur chacun des groupe. Le but de cette opération est de retrouvé dans chacun des groupes des droites similaires à celle trouvée au départ avec le nuage complet. Cela a pour but de valider nos résultats! {width=400px} ## Erreur quadratique -L'erreur quadratique va nous donner un indice pour savoir à quel point nous somme précis dans le calcul de la descente de gradient. Plus la valeur de l'erreur quadratique est petite, mieux c'est. +L'erreur quadratique va nous donner un indice de précision dans le calcul de la descente de gradient. Plus la valeur de l'erreur quadratique est petite, mieux c'est. En voici la formule : **Formule erreur quadratique** # Résultats -Comme nous avons pu le voir dans les figures précédentes, nous avons optenu des résultats concluent. J'entends pas là que aussi bien la droite obtenue sur la descente de gradient avec le nuage complet **et** les droits obtenues sur la validation croisée se ressemble et semblent juste au niveau de nos nuage de points. +Comme nous avons pu le voir dans les figures précédentes, nous avons obtenu des résultats concluents. J'entends pas là que aussi bien la droite obtenue sur la descente de gradient avec le nuage complet **et** les droits obtenues sur la validation croisée se ressemble et semblent juste au niveau de nos nuage de points. -Voici un tableau des données obtenue sur une génération aléatoire ainsi que leur différence. +Voici un tableau des données obtenues sur une génération aléatoire: | Nuage de 30 points | Descente de gradient | Différence | Erreur quadratique | | :-- | :-- | :-- | :-- | @@ -149,9 +149,10 @@ Voici un tableau des données obtenue sur une génération aléatoire ainsi que On peut constater une différence de précision au niveau de l'erreur quadratique. En effet, l'erreur quadratique obtenue pendant la validation croisée par chacun des groupes sont bien plus petites que cette optenue sur le nuage complet. On peut en déduire qu'il est préférable de réaliser la descente de gradient sur des lots données pas trop volumineux et de vérifier l'écart de chacun des résultats afin de s'assurer que le résultat obtenu soit le plus juste possible. -# Amélioration possible - # Conclusion +Pour conclure, nous sommes parvenu à retrouvé la meilleure droite passant par un nuage de point aléatoire. Ce qui était l'objectif final ce travail. Ce qui veut dire que les étapes intermédiaire pour arriver à ce point sont fonctionnels, à savoir: **la minisation de la fonction de coup** et la **descente de gradient**. Nous avons également pu faire une partie analyse des résultats via l'**erreur quadratique** et on peut donc en déduire que les résultats trouvé sont plutôt satisfaisant. +En revanche, nous avons un soucis dans notre solution numérique. En effet, nous avons réussir à faire ce tp sur un nombre de point aléatoire inférieur à 40... Au dela, nous avons des résultats biaisé pour la descente de gradient. Par exemple: -nan; inf. Malheureusement nous ne sommes pas parvenu à savoir d'où provenait l'erreur et cela n'ou a empêché de faire cette étude sur un plus grand nombre de points. # Remerciements +Nous tenions à remercier M. Malaspinas pour nous avoir donné un TP aussi agréable et constructif à réaliser et cela avec des technologies de pointe tel que le C. Un remerciement spécial aussi pour M. (l'assistant) qui est parvenu à répondre à nos questions de manière très pédagogique et ce en dévulgarissant le plus possible la problématique. \ No newline at end of file diff --git a/src/droite_nuage_0_1_A.vec b/src/droite_nuage_0_1_A.vec index 9d3993e974684069727bda7f202d66c771922bf8..badc478a34e09966f1ee5b65a5667a6639f10c15 100644 Binary files a/src/droite_nuage_0_1_A.vec and b/src/droite_nuage_0_1_A.vec differ diff --git a/src/droite_nuage_0_1_B.vec b/src/droite_nuage_0_1_B.vec index 24ef5e38f28ed80ff63a6e2f762347f70e9638cc..2ab48e35a0296fd62ac37740c4d1c89f20ec6724 100644 Binary files a/src/droite_nuage_0_1_B.vec and b/src/droite_nuage_0_1_B.vec differ diff --git a/src/droite_nuage_0_2_A.vec b/src/droite_nuage_0_2_A.vec index 9d3993e974684069727bda7f202d66c771922bf8..badc478a34e09966f1ee5b65a5667a6639f10c15 100644 Binary files a/src/droite_nuage_0_2_A.vec and b/src/droite_nuage_0_2_A.vec differ diff --git a/src/droite_nuage_0_2_B.vec b/src/droite_nuage_0_2_B.vec index 24ef5e38f28ed80ff63a6e2f762347f70e9638cc..2ab48e35a0296fd62ac37740c4d1c89f20ec6724 100644 Binary files a/src/droite_nuage_0_2_B.vec and b/src/droite_nuage_0_2_B.vec differ diff --git a/src/droite_nuage_1_2_A.vec b/src/droite_nuage_1_2_A.vec index 5798fc18dd93f0c63befcde68cd655c40a824944..5ca530f7e544414b2fc2994f999972f81ee40b4f 100644 Binary files a/src/droite_nuage_1_2_A.vec and b/src/droite_nuage_1_2_A.vec differ diff --git a/src/droite_nuage_1_2_B.vec b/src/droite_nuage_1_2_B.vec index 32fec07dc7bfeb6b525c4ca18b08a72a55cd7d7f..32a0f7e57f1f15c57ac527e88ce21a6a3d6980da 100644 Binary files a/src/droite_nuage_1_2_B.vec and b/src/droite_nuage_1_2_B.vec differ diff --git a/src/droite_nuage_complet_A.vec b/src/droite_nuage_complet_A.vec index 6819862bcdd0381611cc0093cce893b75be28f58..55f8771fea3d801a5fc4eaa2a9a744a5be2b2df2 100644 Binary files a/src/droite_nuage_complet_A.vec and b/src/droite_nuage_complet_A.vec differ diff --git a/src/droite_nuage_complet_B.vec b/src/droite_nuage_complet_B.vec index 9165de064df0ac19e2f90d4d56b45cf114d207ac..298bee33a8e9ab38d230803ccb520d5a91220086 100644 Binary files a/src/droite_nuage_complet_B.vec and b/src/droite_nuage_complet_B.vec differ diff --git a/src/points_X.vec b/src/points_X.vec index 54bc52036416ff8419aeb9743137fe6b5f2d446f..287604afb3266480a772e60e2f5a003599754fb5 100644 Binary files a/src/points_X.vec and b/src/points_X.vec differ diff --git a/src/points_Y.vec b/src/points_Y.vec index 380da97c6a5e6cdc189b3609f2a35ab157adb37d..263fcd497bc38ee55be7cd6c11a839bd5413eb00 100644 Binary files a/src/points_Y.vec and b/src/points_Y.vec differ