Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Enlever "outliers" ou Normalisation?
3 participants
Page 1 sur 1
Enlever "outliers" ou Normalisation?
Bonjour tout le monde,
Je réalise une étude sur 100,000 individus et 24 variables explicatives.
Parmi ces variables j'ai des variables relatives à un montant (exprimé en €), des variables relatives à une durée (exprimée en journées), des variables relatives à un nombre d’événements positifs pour chaque individu et enfin 4 variables qualitatives.
Je vais faire une régression logistique sur une variable catégorielle à prédire, et également une comparaison avec un arbre de décision ou autre méthode d'apprentissage supervisé pour avoir des "comparatifs" possible entre méthodes mais la régression logistique me semble le plus adapté.
Lorsque je regarde un premier résumé de mes variables (après avoir enlevé les variables trop corrélées entre elles) je me rends compte qu'il y a quelques valeurs "aberrantes" comme des montants vraiment trop élevés, des durée vraiment trop importante, etc.
Je pensais enlever ces valeurs après un boxplot (sous R ts <- boxplot(); valaberrante <- ts$out en gros) mais ça m'enlève "trop" d'individus qui pour le coup ne sont pas -d'un point de vue métier- des individus extrêmes.
Alors peut être il y a un choix plus judicieux pour enlever les valeurs extrêmes (par exemple ne considérer que ceux qui sont dans le dernier decile ou quelque chose dans le genre) soit je pourrai normaliser mes variables (car bon certaines en €, d'autres en Jours, etc.) ce qui me permettrait de garder mes individus même les plus extrêmes.
Ou alors faire les 2? Enlever les individus réellement extrêmes (comment les définir automatiquement?) puis normaliser quoi qu'il arrive mes données.
L'idée étant de "nier" le moins possible mes données.
Si vous aviez quelques conseils je suis preneur
Cordialement,
KaliHD
Je réalise une étude sur 100,000 individus et 24 variables explicatives.
Parmi ces variables j'ai des variables relatives à un montant (exprimé en €), des variables relatives à une durée (exprimée en journées), des variables relatives à un nombre d’événements positifs pour chaque individu et enfin 4 variables qualitatives.
Je vais faire une régression logistique sur une variable catégorielle à prédire, et également une comparaison avec un arbre de décision ou autre méthode d'apprentissage supervisé pour avoir des "comparatifs" possible entre méthodes mais la régression logistique me semble le plus adapté.
Lorsque je regarde un premier résumé de mes variables (après avoir enlevé les variables trop corrélées entre elles) je me rends compte qu'il y a quelques valeurs "aberrantes" comme des montants vraiment trop élevés, des durée vraiment trop importante, etc.
Je pensais enlever ces valeurs après un boxplot (sous R ts <- boxplot(); valaberrante <- ts$out en gros) mais ça m'enlève "trop" d'individus qui pour le coup ne sont pas -d'un point de vue métier- des individus extrêmes.
Alors peut être il y a un choix plus judicieux pour enlever les valeurs extrêmes (par exemple ne considérer que ceux qui sont dans le dernier decile ou quelque chose dans le genre) soit je pourrai normaliser mes variables (car bon certaines en €, d'autres en Jours, etc.) ce qui me permettrait de garder mes individus même les plus extrêmes.
Ou alors faire les 2? Enlever les individus réellement extrêmes (comment les définir automatiquement?) puis normaliser quoi qu'il arrive mes données.
L'idée étant de "nier" le moins possible mes données.
Si vous aviez quelques conseils je suis preneur
Cordialement,
KaliHD
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
Bonjour tout le monde,
J'ai choisit d'élaguer les valeurs vraiment trop extrêmes (pas une winsorisation) mais simplement soit les enlever de l'échantillon d'apprentissage soit les supprimer tout simplement.
En gros je prend le 99ème centile et au dessus j'estime que ça n'a plus de "sens" de les inclure. Idem en dessous du 1er centile.
Quoi qu'il arrive ça ne représente même pas 1% de ma population.
Et enfin je choisis de ne pas "standardiser" car (à part pour une interprétation des coefficients plus simples) je n'ai pas intérêt à le faire dans ma régression logistique.
De toute façon après on peut se ramener à des coefficients "interprétable plus facilement" en travaillant directement sur les coefficients obtenus par la régression logistique.
Bien cordialement et en espérant que ça ait aidé d'autres personnes,
KaliHd
J'ai choisit d'élaguer les valeurs vraiment trop extrêmes (pas une winsorisation) mais simplement soit les enlever de l'échantillon d'apprentissage soit les supprimer tout simplement.
En gros je prend le 99ème centile et au dessus j'estime que ça n'a plus de "sens" de les inclure. Idem en dessous du 1er centile.
Quoi qu'il arrive ça ne représente même pas 1% de ma population.
Et enfin je choisis de ne pas "standardiser" car (à part pour une interprétation des coefficients plus simples) je n'ai pas intérêt à le faire dans ma régression logistique.
De toute façon après on peut se ramener à des coefficients "interprétable plus facilement" en travaillant directement sur les coefficients obtenus par la régression logistique.
Bien cordialement et en espérant que ça ait aidé d'autres personnes,
KaliHd
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
Salut,
ton model va servir à faire de la prédiction ou c'est juste pour une analyse ?
ton model va servir à faire de la prédiction ou c'est juste pour une analyse ?
FS- Nombre de messages : 163
Date d'inscription : 25/04/2008
Re: Enlever "outliers" ou Normalisation?
FS a écrit:Salut,
ton model va servir à faire de la prédiction ou c'est juste pour une analyse ?
Prédiction aussi pourquoi?
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
Heu...
si tu enlèves le premier et le dernier centile, il te reste 98% de la population par définition.
Cordialement.
si tu enlèves le premier et le dernier centile, il te reste 98% de la population par définition.
Cordialement.
gg- Nombre de messages : 2174
Date d'inscription : 10/01/2011
Re: Enlever "outliers" ou Normalisation?
gg a écrit:Heu...
si tu enlèves le premier et le dernier centile, il te reste 98% de la population par définition.
Cordialement.
Hé hé en fait vu que concrètement je faisais ça que pour au dessus du 99ème centile je virais bien 1% ... mais bon vu que j'ai une très grosse population je me suis rabattu sur un choix plus "petit" encore en enlevant uniquement les individus dont la valeur à certaines variables dépassent une valeur n'arrivant qu'une fois sur 10000.
Mais j'hésite quand même à normaliser, notamment pour les prix et les durées qui ont une grosse variabilité ... j'ai peur que ça influe trop sur mon modèle.
Cdlt,
KaliHD
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
C'est effectivement dangereux d'enlever les valeurs "exceptionnelles". les valeurs manifestement erronées, oui. Mais si on pense aux débits d'une rivière, enlever les valeurs extrêmes, c'est oublier les crues décennales ou centennales et les étiages (plus d'eau); qui sont pourtant les événements majeurs pour la prévision !
A toi de voir dans ton cas particulier.
Cordialement.
A toi de voir dans ton cas particulier.
Cordialement.
gg- Nombre de messages : 2174
Date d'inscription : 10/01/2011
Re: Enlever "outliers" ou Normalisation?
Oui je sais bien pour les valeurs extrêmes ...
Le souci c'est que la régression logistique est assez sensible à ce type de valeurs et donc j'aime pas trop l'idée de mettre ces individus dans l'échantillon d'apprentissage.
D'un autre côté c'est aussi prendre en compte que certains peuvent avoir un comportement exceptionnel ... qui peuvent en plus m'intéresser dans mon modèle de prédiction ...
Est-ce que standardiser mes données est une bonne chose dans ce cas?
Bien cordialement,
KaliHD
Le souci c'est que la régression logistique est assez sensible à ce type de valeurs et donc j'aime pas trop l'idée de mettre ces individus dans l'échantillon d'apprentissage.
D'un autre côté c'est aussi prendre en compte que certains peuvent avoir un comportement exceptionnel ... qui peuvent en plus m'intéresser dans mon modèle de prédiction ...
Est-ce que standardiser mes données est une bonne chose dans ce cas?
Bien cordialement,
KaliHD
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
Je ne sais pas ce que tu appelles "standardiser", mais toute transformation des données a des effets parasites qui peuvent enlever tout intérêt aux résultats obtenus.
gg- Nombre de messages : 2174
Date d'inscription : 10/01/2011
Re: Enlever "outliers" ou Normalisation?
Standardiser pour moi c'est "juste" centrer et réduire mes données.
Effectivement je ne voulais pas le faire pour les raisons que tu évoques.
Après il me reste la solution de découper mes variables quanti. en classes pour "diminuer" le poids de ces valeurs extrêmes?
Encore merci pour le partage ici
KaliHD
Effectivement je ne voulais pas le faire pour les raisons que tu évoques.
Après il me reste la solution de découper mes variables quanti. en classes pour "diminuer" le poids de ces valeurs extrêmes?
Encore merci pour le partage ici
KaliHD
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Re: Enlever "outliers" ou Normalisation?
Ok !
Centrer réduire ne pose pas particulièrement de problèmes, mais ne change rien aux problèmes de valeurs très éloignées. Elles restent relativement très éloignées !
Le placement en classes n'a d'intérêt que lorsque les valeurs sont imprécises, que les modifier légèrement ne change rien à la réalité. Mais attention aux bornes de classes (par exemple jamais de valeurs d'arrondi, qui peuvent fausser les résultats).
Cordialement.
Centrer réduire ne pose pas particulièrement de problèmes, mais ne change rien aux problèmes de valeurs très éloignées. Elles restent relativement très éloignées !
Le placement en classes n'a d'intérêt que lorsque les valeurs sont imprécises, que les modifier légèrement ne change rien à la réalité. Mais attention aux bornes de classes (par exemple jamais de valeurs d'arrondi, qui peuvent fausser les résultats).
Cordialement.
gg- Nombre de messages : 2174
Date d'inscription : 10/01/2011
Re: Enlever "outliers" ou Normalisation?
gg a écrit:Ok !
Centrer réduire ne pose pas particulièrement de problèmes, mais ne change rien aux problèmes de valeurs très éloignées. Elles restent relativement très éloignées !
Le placement en classes n'a d'intérêt que lorsque les valeurs sont imprécises, que les modifier légèrement ne change rien à la réalité. Mais attention aux bornes de classes (par exemple jamais de valeurs d'arrondi, qui peuvent fausser les résultats).
Cordialement.
Oui pour centrer réduire effectivement ça ne change pas grand chose.
Le placement en classes me permet d'inclure des valeurs très extrêmes dans une classe plus "globale". L'idée étant de faire gaffe à ne pas se retrouver avec des classes où les individus sont tous soit positifs soit négatifs sinon forcément ça biaise la discrimination.
Et donc de découper en classes m'a permis de résoudre un autre problème que j'ai eu plus loin i.e. certaines probabilités prédites sont égales à 1 ou à 0 ou très proches de ces valeurs et du coup ça fait tendre la log-vraisemblance vers l'infini.
Après oui il faut faire attention à ce que ça reste cohérent dans le découpage des classes.
Encore merci,
Cdlt,
KaliHD
HDKalit- Nombre de messages : 85
Date d'inscription : 10/01/2013
Sujets similaires
» enlever les "levels"
» Les tests classiques pour détecter les outliers ?
» ANOVA et ddl...
» détection d'outliers
» normalisation d'une épreuve
» Les tests classiques pour détecter les outliers ?
» ANOVA et ddl...
» détection d'outliers
» normalisation d'une épreuve
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum