Date: 7 janvier 2025 Description: Document de notes pour le transfert de connaissances par rapport au modèle Datagotchi ⚡ Projet.s : Datagotchi (https://www.notion.so/Datagotchi-7566c06c954a404bb4d8b2957799d83f?pvs=21), Datagotchi Canada (https://www.notion.so/Datagotchi-Canada-4bc674b7086b481c80a461f67ae6c05e?pvs=21) Participant.e.s: Hubert Cadieux, Sarah-Jane Vincent, Nicholas Gaudet, Alexandre Bouillon, Étienne Proulx État: En cours d'utilisation Archivé: No
À skipper pour cette édition: c’est un modèle multinomial
- Avec le package
nnet
, la fonctionmultinom
- Équivalent de
lm
ouglm
, mais pour une variable dépendante catégorielle (dans notre cas: 5 partis NON-ORDONNÉS) - On va pas tester d’autre type de modèle
On est limités par le nombre de variables dans l’app. On doit donc choisir un nombre X
de variables qui seront incluses dans le modèle
ses_gender_factor VS ses_gender_numeric: on garde laquelle?
Même principe qu’à l’étape 2.
Comment? Faire une loop à travers M
modèles en changeant aléatoirement les variables indépendantes du modèle ; à chaque modèle, on calcule la qualité du modèle (voire section plus bas pour des infos là-dessus) et on garde l’info. Par exemple, à chaque modèle, on enregistre une dataframe avec J
rangées (nombre de variables indépendantes dans le modèle) et 3-4 colonnes: identifiant du modèle (un chiffre), nom de la variable indépendante (ses_gender_factor
), et le score de qualité du modèle. En répétant ça M
fois, on s’assure d’avoir chaque variable indépendante au moins 25-30 fois et c’est facile après de voir quelles variables ont été incluses dans des meilleurs modèles.
Partie pas mal théorique
Pour USA 2024, j’ai fait le sandbox (https://clessn.shinyapps.io/sandbox_datagotchi/) qui nous permettait de tester différents modèles et de voir si le modèle faisait du sens selon notre intuition.
Ça pourrait être une bonne idée d’adapter le code pour en faire un pour les fédérales rendu à cette étape.
J’avais fait du code pour tester plusieurs interactions automatiquement, mais ça avait pas donné grand chose
ses_gender * ses_income
ses_income * lifestyle_consCoffee
lifestyle_fishing_freq * lifestyle_hunting_freq
ses_age * ses_education
income * lifestyle_eatMeatFreq
ses_education * lifestyle_eatMeatFreq
ses_education * lifestyle_hunting_freq
lifestyle_consClothes * lifestyle_favAlcool
lifestyle_pets * lifestyle_eat_meat_freq
lifestyle_typeTransport * lifestyle_motorized_freq
lifestyle_yoga_freq * lifestyle_consCoffee
lifestyle_consClothes * lifestyle_volunteeringsocial_freq
ses_income * lifestyle_videogame_freq
ses_gender * lifestyle_eatMeatFreq
age * museums
education * museums
income * museums
exercise * lifestyle_smokeFreq
age * lifestyle_typeTransport
income * lifestyle_consClothes
income * lifestyle_favAlcool
educ * lifestyle_favAlcool
age * tattoo
age * volunteering
age * lifestyle_consCoffee
Il faut transformer le modèle en coefficients, accorder les coefficients avec le mapping (dans le Google Sheets) et mettre les coefficients dans la feuille à cet effet
Quand on veut savoir quel modèle performe le mieux, il est essentiel de le tester sur des nouvelles données (qu’il n’a jamais vues). Pourquoi ?
- Pour s'assurer que le modèle généralise bien et qu’il n’est pas juste bon pour les données sur lesquelles il a été entraîné (overfitting).
- Diviser les données :
- Training set : pour entraîner le modèle.
- Test set : pour évaluer la performance sur des données inédites.
- Validation croisée: Répéter le processus sur plusieurs sous-ensembles pour garantir une évaluation plus robuste.
- Donc, dans vos loops, voici les étapes
- Séparer le jeu de données en training set (80% du jeu de données) et testing set (20% du jeu de données)
- Séparer le testing set en 3 à 5 sous-ensembles.
- Mesurer la performance du modèle à travers les 3 à 5 sous-ensemble
- Donc, dans vos loops, voici les étapes
Le but : Choisir le modèle qui performe bien sur des données non vues, pas juste sur les données d'entraînement.
Contrairement aux USA, notre variable dépendante est catégorielle non-ordonnée. On doit donc avoir une mesure . Je ne crois pas qu’il est suffisant de simplement regarder si le modèle s’est trompé (1) ou non (0). Il y a une différence si le modèle prédit un NPD au PLC que s’il prédit un NPD au PCC. Il faudra prendre en compte quand vous établissez un indice de “qualité” du modèle. Contactez Nadjim qui a fait les derniers modèles au fédéral et au provincial. Il n’y a pas UNE réponse à cette question, ça varie selon nos besoins (communiquez avec Yannick)