Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
site:enseignement:master:bdle:tmes:projet2020 [24/11/2020 18:05] amine [Projet 2] |
site:enseignement:master:bdle:tmes:projet2020 [14/12/2020 09:47] (Version actuelle) amine [Modalités] |
||
---|---|---|---|
Ligne 24: | Ligne 24: | ||
===== Projet 2 ===== | ===== Projet 2 ===== | ||
- | en construction ... | + | Le notebook des réponses devra contenir les informations suivantes : |
- | rajouter notebook et trame réponses | + | * Nom(s) et prénom(s) du groupe (monôme ou binôme mais pas au delà) |
+ | * Description des données utilisées | ||
+ | * Source : lien vers la source publique des données ou lien de téléchargement si pas de lien publique | ||
+ | * Taille : en MB et en nb_lignes | ||
+ | * Description breve des données, quelle est la variable à prédire | ||
+ | * L'argumentaire demandé dans chacune des taches décrites ci-dessous | ||
+ | |||
==== Modalités ==== | ==== Modalités ==== | ||
- | Rendre un lien vers un **notebook** Databricks + petit compte-rendu (suivant **trame**) | + | Rendre |
- | Date de remise : **10-12-2020** | + | - un document pdf avec lien vers un **notebook** Databricks contenant **code source** et **informations** décrites ci-haut |
+ | - un document HTML obtenu en exportant votre **notebook** | ||
+ | Date de remise : à partir du **10-12-2020** jusqu'au **20-12-2020 23h59** sur | ||
+ | [[https://moodle-sciences.upmc.fr/moodle-2020/course/view.php?id=3209|Moodle]] | ||
- | + | Le sujet traité est la réalisation d’un pipeline ML pour entrainer un arbre de décision pour la *régression* à l’aide de l'API Spark ML décrite en cours, Le langage utilisé est **Scala**. | |
- | + | ||
- | Le sujet traité est la réalisation d’un pipeline ML pour entrainer un arbre de décision pour la *régression* à l’aide de l'API Spark ML décrite en cours, | + | |
L'objectif principal est d'être confronté à des problématiques réelles rencontrées lorsqu'on traite des données "brutes". | L'objectif principal est d'être confronté à des problématiques réelles rencontrées lorsqu'on traite des données "brutes". | ||
Vous être libre d'utiliser le dataset de votre choix dont la taille sera entre 10 MB et 50 MB. | Vous être libre d'utiliser le dataset de votre choix dont la taille sera entre 10 MB et 50 MB. | ||
Ligne 43: | Ligne 50: | ||
Vous pouvez également extraire un echantillon d'un dataset volumineux si besoin. | Vous pouvez également extraire un echantillon d'un dataset volumineux si besoin. | ||
- | ==== Tache 1 ==== | + | === Tache 1 === |
* Identifier les données manquantes : extraire, pour chaque attribut, sa proportion de valeurs nulles | * Identifier les données manquantes : extraire, pour chaque attribut, sa proportion de valeurs nulles | ||
* Identifier les valeurs aberrantes en fonction de votre dataset, s'il y en a | * Identifier les valeurs aberrantes en fonction de votre dataset, s'il y en a | ||
- | * Sélectionner un sous-ensemble d'attributs pertinents en suivant un ensemble de critères que vous vous fixerez et que vous décrirez. | + | * Sélectionner un sous-ensemble d'attributs pertinents en suivant des critères qui vous semblent pertinents et que vous documenterez. |
- | * Sélectionner un sous-ensembles des données, si besoin en suivant également des critères qui vous semblent pertinents. | + | |
- | Les critères des deux derniers points seront définis en vous appuyant sur votre compréhension des données ou sur des indications fournies par l'auteur des données (ex. les données fournies dans le cadre d'un challenge sont souvent accompagnées de suggestions des participants) | + | Les critères du dernier point seront définis en vous appuyant sur votre compréhension des données ou sur des indications fournies par l'auteur des données (ex. les données fournies dans le cadre d'un challenge sont souvent accompagnées de suggestions des participants). |
- | ==== Tache 2 ==== | + | |
+ | === Tache 2 === | ||
Créer un pipeline pour encoder les features comme vu en cours : indexation des string, assemblage des vecteurs puis indexation. | Créer un pipeline pour encoder les features comme vu en cours : indexation des string, assemblage des vecteurs puis indexation. | ||
- | Préciser quelles variables seront catgoricielles et quelles variables seront continues | + | Préciser quelles variables donnent lieux à des "catgorical features" et quelles variables donnent lieux à des features continues. |
- | Si besoin, transformation des attributs timestamps vers nombre ou bien extraction de l’année ou du mois. | + | A titre d'exemple, pour un dataset avec des attributs timestamps, envisager une opération roll-up vers le mois ou l'année. |
- | Construire une paire 30%-70%d de jeux de test et d'entrainement. | + | Construire une paire 30%-70% de jeux de test et d'entrainement. |
Lancer l'entrainement de l'arbre de décision puis afficher ses paramètres. | Lancer l'entrainement de l'arbre de décision puis afficher ses paramètres. | ||
Ligne 64: | Ligne 72: | ||
Analyser les métriques RMSE et MAE et donner votre impression sur la qualité du modèle. | Analyser les métriques RMSE et MAE et donner votre impression sur la qualité du modèle. | ||
- | ==== Tache 3 ==== | + | === Tache 3 === |
- | • Itération 1 : | + | == Sous-tache a == |
- | • Cross validation avec 3 folds, grid search sur paramètres pertinents • Sélection du meilleur modèle | + | Mettre en place une cross validation avec 3 folds, et y inclure un grid search avec un ensemble de paramètres qui vous semblent pertinents. |
- | • Analyses des métriques RMSE et MAE si dispo | + | |
- | • Iteration 2 : tentative d’amélioration de la précision | + | Afficher pour le meilleur modèle sélectionné : |
- | • Elimination des valeurs aberrantes (si elles existent) | + | * les paramètres de l'arbre |
- | • Imputation des valeurs manquantes (utiliser fonctions Spark ML) | + | * les métriques RMSE et MAE et les comparer à celles obtenues en |
- | • Relancer l’inference et constater les nouvelles valeurs des métriques | + | |
+ | == Sous-tache b == | ||
+ | Dans une tentative d’améliorer la précision : | ||
+ | |||
+ | * sélectionner un sous-ensembles des données en suivant également des critères qui vous semblent pertinents (valeurs aberrantes, prediction trop imprecise) | ||
+ | * Imputation des valeurs manquantes si possible (explorer l'estimateur d'imputation de Spark ML) | ||
+ | * Toute autre astuce qui vous semble utile | ||
+ | |||
+ | Relancer la cross validation avec le dataset nettoyé et constater les nouvelles valeurs des métriques. | ||
- | ==== Tache 4 ==== | ||
- | • Comparer les résultats des deux itérations | + | === Tache 4 === |
- | • Tenter d’expliquer la différence | + | Donner succinctement votre avis sur la libraire ML : difficultés rencontrées, aspects appréciés, facilité d'utilisation par rapport à d'autres librairies plus familières . |
- | • Avis sur la libraire ML : difficultés rencontrées, aspects appréciés | + | |