Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Affectation d'individus après clustering
4 participants
Page 1 sur 1
Affectation d'individus après clustering
Hello,
Voici ma problématique,
J'ai fait une classification mixte.
J'ai construit des pré-classes avec l'algorithme de k-means avec les composantes en facteurs issues d'une ACM.
Une fois mes pré-classes obtenues je fais une CAH dessus par la méthode de Ward.
avec l'aide de la décomposition de l'inertie et le dendrogramme j'obtiens 3 segments homogènes
Maintenant, je voudrai automatiser ce process de sorte que, pour chaque nouvel individu entrant dans ma base, qu'il soit affecté automatiquement, au cluster adapté à son profil.
Connaissez vous une technique particulière pour faire çà ? sans relancer tout l'algorithme bien sûr?
Merci
Voici ma problématique,
J'ai fait une classification mixte.
J'ai construit des pré-classes avec l'algorithme de k-means avec les composantes en facteurs issues d'une ACM.
Une fois mes pré-classes obtenues je fais une CAH dessus par la méthode de Ward.
avec l'aide de la décomposition de l'inertie et le dendrogramme j'obtiens 3 segments homogènes
Maintenant, je voudrai automatiser ce process de sorte que, pour chaque nouvel individu entrant dans ma base, qu'il soit affecté automatiquement, au cluster adapté à son profil.
Connaissez vous une technique particulière pour faire çà ? sans relancer tout l'algorithme bien sûr?
Merci
12010929- Nombre de messages : 45
Date d'inscription : 24/06/2014
Re: Affectation d'individus après clustering
Je pense que tu veux une réponse syntaxique pour un logiciel précis non?
Car sinon la procédure est assez simple, il te suffit de prendre les coordonnées de ton individu, calculer la matrice de distance par rapport à tous les autres et en fonction de ton paramètre k de plus proches voisins à considérer, déterminer la classe par vote majoritaire.
Car sinon la procédure est assez simple, il te suffit de prendre les coordonnées de ton individu, calculer la matrice de distance par rapport à tous les autres et en fonction de ton paramètre k de plus proches voisins à considérer, déterminer la classe par vote majoritaire.
Re: Affectation d'individus après clustering
Oui je serais preneur si çà existe dans un logiciel particulier.
Cela suppose que je relance l'acm sur tous les individus en incluant le nouvel individu du coup les distances initiales vont changer et par conséquent les clusters définit en amont.
Je pensais à un truc du genre faire un logit sur les segments définit et prédire en fonction de l'estimation obtenue. mais je suis pas sûr que ce soit solide comme méthode.
Merci de ton aide
.joyeux_lapin13 a écrit: il te suffit de prendre les coordonnées de ton individu, calculer la matrice de distance par rapport à tous les autres et en fonction de ton paramètre k de plus proches voisins à considérer, déterminer la classe par vote majoritaire
Cela suppose que je relance l'acm sur tous les individus en incluant le nouvel individu du coup les distances initiales vont changer et par conséquent les clusters définit en amont.
Je pensais à un truc du genre faire un logit sur les segments définit et prédire en fonction de l'estimation obtenue. mais je suis pas sûr que ce soit solide comme méthode.
Merci de ton aide
12010929- Nombre de messages : 45
Date d'inscription : 24/06/2014
Re: Affectation d'individus après clustering
Non pas du tout, tu as les axes factoriels de ton ACM, il te suffit de projeter ton nouvel individu sur le plan construit par l'ACM grâce aux axes et appliquer la méthode des k-means derrière pour savoir à quel groupe il appartient.
Re: Affectation d'individus après clustering
Je vois un peu ce que tu veux dire mais il y a un point que je comprends pas.
quand tu dis
l'idée c'est que je me retrouve pas avec des clusters dynamiques ; suite à chaque nouvel individu entrant dans la bdd.
je ne sais pas si je suis assez clair?!!
Merci
quand tu dis
comment faire çà sans que cela n'affecte les clusters initiauxjoyeux_lapin13 a écrit:appliquer la méthode des k-means derrière pour savoir à quel groupe il appartient.
l'idée c'est que je me retrouve pas avec des clusters dynamiques ; suite à chaque nouvel individu entrant dans la bdd.
je ne sais pas si je suis assez clair?!!
Merci
12010929- Nombre de messages : 45
Date d'inscription : 24/06/2014
Re: Affectation d'individus après clustering
Tu pourrais aussi passer par une analyse discriminante sinon, qui te permettra de reclasser un individu facilement.
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
Okay,
pourquoi pas une régression logistique qui elle aussi, comme l'analyse discriminante me fournit des coefficients à re-appliquer sur les nouveaux individus ? je maîtrise pas trop l'analyse discriminante.
Merci
pourquoi pas une régression logistique qui elle aussi, comme l'analyse discriminante me fournit des coefficients à re-appliquer sur les nouveaux individus ? je maîtrise pas trop l'analyse discriminante.
Merci
12010929- Nombre de messages : 45
Date d'inscription : 24/06/2014
Re: Affectation d'individus après clustering
Tu peux faire une régression logistique également qui sera plus facile à mettre en oeuvre si tu as des variables qualitatives (ce qui est le cas car tu passes par une ACM). De plus la reg logistique nécessite moins d'hypothèses contraignantes que l'analyse discriminante pour des résultats similaires.
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
C'est très clair!
Merci beaucoup!
Merci beaucoup!
12010929- Nombre de messages : 45
Date d'inscription : 24/06/2014
Re: Affectation d'individus après clustering
joyeux_lapin13 a écrit:Non pas du tout, tu as les axes factoriels de ton ACM, il te suffit de projeter ton nouvel individu sur le plan construit par l'ACM grâce aux axes et appliquer la méthode des k-means derrière pour savoir à quel groupe il appartient.
Je m’apprêtais à ouvrir un nouveau sujet pour poser exactement la question à laquelle tu réponds !
J'ai lancé une ACP sous SAS justement, et je n'arrive pas à récupérer les coordonnées de nouveaux individus..
Je m'explique :
Pour vérifier que j'arrivais à trouver les bons résultats, j'ai essayé de calculer les coordonnées d'un des individus qui était dans l'échantillon sur lequel j'ai lancé mon ACM (pour ensuite les comparer aux coordonnées que SAS donne en sortie)
Pour l'exemple : j'ai utilisé les variables X1, ..., Xn dans mon ACP
- je considère l'individu n°i, pour lequel X1 vaut x1 et toutes les autres variables 0
- je normalise x1 (j'enlève la moyenne et je divise par l'écart type)
- je multiplie x1 par la 1ère cordonnée du vecteur propre de la variable X1 (sous SAS j'ai supposé que c'était la valeur "prin1" associé à X1)
Ainsi je devrai obtenir les coordonnées de l'individu i sur l'axe 1, non ?
Merci pour votre aide !
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Re: Affectation d'individus après clustering
Pour ton calcul, je l'avais déjà fait une fois. J'étais passé par les valeurs des coordonnées des variables (car avec la proc corresp de SAS (pour faire une ACM), tu n'as pas les vecteurs propres il me semble. Juste les valeurs propres associées à chacun des axes)
Cij est la coodonnée de l'individu i sur l'axe j :
Cij=XMuj
avec M la métrique utilisée en ACM, qui est l'inverse de la matrice diagonale :
Dp=n.j/nQ (poids de la modalité)
et X = Zij/Q avec Q le nombre de variables de ton ACM et Zij l'indicatrice du tableau disjoctif complet
or Uj=Dp/(racine valeur propre)*Dj
avec Dj=coordonnées des variables sur l'axes factorielles j dans R[n],
Je ne sais pas si c'est très clair, avec toutes mes notations, mais
au final j'avais utilisé et validé numériquement la formule :
Donc Cij=Zi/Q*Dj/racine(valeur propre axe j)
avec Zi vecteur de 1 et de 0 en fonction des modalités prises par l'individu i
Q le nombre de variables
Dj les coordonnées des variables sur l'axe factorielle j (SAS te le donne)
Niaboc
Cij est la coodonnée de l'individu i sur l'axe j :
Cij=XMuj
avec M la métrique utilisée en ACM, qui est l'inverse de la matrice diagonale :
Dp=n.j/nQ (poids de la modalité)
et X = Zij/Q avec Q le nombre de variables de ton ACM et Zij l'indicatrice du tableau disjoctif complet
or Uj=Dp/(racine valeur propre)*Dj
avec Dj=coordonnées des variables sur l'axes factorielles j dans R[n],
Je ne sais pas si c'est très clair, avec toutes mes notations, mais
au final j'avais utilisé et validé numériquement la formule :
Donc Cij=Zi/Q*Dj/racine(valeur propre axe j)
avec Zi vecteur de 1 et de 0 en fonction des modalités prises par l'individu i
Q le nombre de variables
Dj les coordonnées des variables sur l'axe factorielle j (SAS te le donne)
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
Ah mais je viens de voir que tu avais fait une ACP et pas une ACM et effectivement tu peux récupérer les vecteurs propres.
Dans ce cas ta démarche est la bonne. Vérifie manuellement tes calculs en prenant un individu qui a participé à l'élaboration des axes.
Niaboc
Dans ce cas ta démarche est la bonne. Vérifie manuellement tes calculs en prenant un individu qui a participé à l'élaboration des axes.
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
niaboc a écrit:Ah mais je viens de voir que tu avais fait une ACP et pas une ACM et effectivement tu peux récupérer les vecteurs propres.
Dans ce cas ta démarche est la bonne. Vérifie manuellement tes calculs en prenant un individu qui a participé à l'élaboration des axes.
Niaboc
Oups oui j'ai fait un lapsus, oui j'ai lancé une ACP pas une ACM !
Merci beaucoup pour le détail de la formule de ton précédent message, mais en effet avec l'ACP c'est + direct.
Mais j'ai toujours un problème ; j'avais déjà appliqué ton conseil : j'ai calculé les coordonnées d'un individu qui a participé à l'élaboration des axes, et j'ai comparé les résultats à ce que SAS me donne, et je ne trouve pas la même chose !
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Re: Affectation d'individus après clustering
Quelques remarques/questions :
Il ne faut pas remettre les autres variables à 0. Toutes les variables de l'individu doivent être prises en compte dans le calcul de ses nouvelles coordonnées.
Je ne sais pas si tu pensais remettre à 0 toutes les autres variables ou si c'est l'individu qui est comme ça.
Idem que précédemment. Tu normalises donc toutes les variables.
Tu fais un calcul vectoriel C11=X1*U1=x11*u11+x12*u21+x13*u31+...
Ton raisonnement est bon si et seulement si ton individu a réellement toutes ses variables, hors X1, à 0.
Niaboc
Plumss a écrit:- je considère l'individu n°i, pour lequel X1 vaut x1 et toutes les autres variables 0
Il ne faut pas remettre les autres variables à 0. Toutes les variables de l'individu doivent être prises en compte dans le calcul de ses nouvelles coordonnées.
Je ne sais pas si tu pensais remettre à 0 toutes les autres variables ou si c'est l'individu qui est comme ça.
Plumss a écrit:- je normalise x1 (j'enlève la moyenne et je divise par l'écart type)
Idem que précédemment. Tu normalises donc toutes les variables.
Plumss a écrit:- je multiplie x1 par la 1ère cordonnée du vecteur propre de la variable X1 (sous SAS j'ai supposé que c'était la valeur "prin1" associé à X1)
Tu fais un calcul vectoriel C11=X1*U1=x11*u11+x12*u21+x13*u31+...
Ton raisonnement est bon si et seulement si ton individu a réellement toutes ses variables, hors X1, à 0.
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
Pardon, je me suis très mal exprimée !
En effet, pour mon individu, l'ensemble des variables valent 0, exceptée x1 qui vaut 100 (j'ai pris cet individu en exemple car il était très simple de vérifier ses coordonnées du coup). Je ne comprends donc pas l'écart de résultat...
En effet, pour mon individu, l'ensemble des variables valent 0, exceptée x1 qui vaut 100 (j'ai pris cet individu en exemple car il était très simple de vérifier ses coordonnées du coup). Je ne comprends donc pas l'écart de résultat...
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Re: Affectation d'individus après clustering
Bonsoir,
j'ai trouvé des exemples sur Internet qui fonctionnent très bien.
en utilisant la formule simple Cj=XMuj, on retrouve bien les coordonnées des individus.
Quelques remarques :
- M est la matrice identité ici, donc nous avons Cj=Xuj.
- On utilise pas de poids ici. En as-tu dans ton ACP? Il faut le prendre en compte en conséquences sinon.
- SAS utilise les variances non biaisées par défaut (sinon il faut rajouter l'option
Si tu n'as pas beaucoup d'individus, c'est peut-être la variance que tu calcules à la "mano" qui n'est pas la même que SAS. Multiplie tes résultats par racine(n/(n-1)) si tu n'as pas mis l'option vardef de SAS pour le vérifier.
Niaboc
j'ai trouvé des exemples sur Internet qui fonctionnent très bien.
en utilisant la formule simple Cj=XMuj, on retrouve bien les coordonnées des individus.
Quelques remarques :
- M est la matrice identité ici, donc nous avons Cj=Xuj.
- On utilise pas de poids ici. En as-tu dans ton ACP? Il faut le prendre en compte en conséquences sinon.
- SAS utilise les variances non biaisées par défaut (sinon il faut rajouter l'option
- Code:
vardef=n
Si tu n'as pas beaucoup d'individus, c'est peut-être la variance que tu calcules à la "mano" qui n'est pas la même que SAS. Multiplie tes résultats par racine(n/(n-1)) si tu n'as pas mis l'option vardef de SAS pour le vérifier.
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
niaboc a écrit:Bonsoir,
j'ai trouvé des exemples sur Internet qui fonctionnent très bien.
en utilisant la formule simple Cj=XMuj, on retrouve bien les coordonnées des individus.
Quelques remarques :
- M est la matrice identité ici, donc nous avons Cj=Xuj.
- On utilise pas de poids ici. En as-tu dans ton ACP? Il faut le prendre en compte en conséquences sinon.
- SAS utilise les variances non biaisées par défaut (sinon il faut rajouter l'option).
- Code:
vardef=n
Si tu n'as pas beaucoup d'individus, c'est peut-être la variance que tu calcules à la "mano" qui n'est pas la même que SAS. Multiplie tes résultats par racine(n/(n-1)) si tu n'as pas mis l'option vardef de SAS pour le vérifier.
Niaboc
Alors pour ce qui est des résultats avec la variance biaisée/sans biais, j'avais fouillé sur le net et déjà testé en multipliant par racine(n/(n-1)), mais je travaille sur 300 000 individus donc ça n'a pas d'influence sur les résultats.
Pour ce qui est des poids je n'en ai pas.
Pour résumer (on va finir pas trouver ce que je fais de mal !) :
Mon code est le suivant :
- Code:
proc princomp data=table outstat=stat out=sortie;
var X1--X70;
RUN;
Prenons toujours mon individu qui a X1=100 et les autres variables à 0.
J'ai moy(X1)=1.99 et std(X1)=7.24, donc X1 normalisée vaut 13.54
Dans la table "Stat", je récupère
- les vecteurs propres sur les axes 1, 2, 3 (etc) et en particulier pour la variable X1 : Prin1=0.16, Prin2=0.10, Prin3=0.05 ...
- ainsi que que valeurs propres Lamba1=1.82 Lamba2=1.62 Lambda3=1.58 ...
Donc pour moi, les coordonnées de l'individu en question valent : coord1=2.17 (13.54*0.16), coord2=1.41, coord3=0.68
Sauf que dans la table "Sortie", je récupère les vraies coordonnées, qui valent : Prin1=2.18, Prin2=1.33, Prin3=0.75 ...
Merci beaucoup pour le temps que tu passes à me répondre !
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Re: Affectation d'individus après clustering
Pourrais-tu joindre la sortie complète de SAS. Ca sera plus simple.
Merci
Merci
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
Oui, ci joint le doc avec :
- la sortie "Stat" avec les valeurs et les vecteurs propres
- un extrait de la sortie "Sortie" (pour 2 individus, dans la sortie il y en a + de 300000) avec jusqu'en colonne BT les variables utilisées dans l'ACP, puis jusqu'en CD les coordonnées des individus sur les différents axes
Et dans le dernier onglet, ma tentative de calcul des coordonnées pour le 1er individu (en bleu).
Merci !
- la sortie "Stat" avec les valeurs et les vecteurs propres
- un extrait de la sortie "Sortie" (pour 2 individus, dans la sortie il y en a + de 300000) avec jusqu'en colonne BT les variables utilisées dans l'ACP, puis jusqu'en CD les coordonnées des individus sur les différents axes
Et dans le dernier onglet, ma tentative de calcul des coordonnées pour le 1er individu (en bleu).
Merci !
- Fichiers joints
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Re: Affectation d'individus après clustering
Ok je vois où est le problème...on est bêtes hihihi
Quand tu centres/réduits les données, tu le fais bien sur X1, mais ce n'est pas parce que X2 vaut 0 pour l'individu 1 que la variable centrée réduite vaut 0 aussi! héhé!
Imagine qu'un panéliste avait pour valeur 0 pour X1, alors sa valeur centrée-réduite aurait été (0-1.99)/7.24=-0.2748
Je te laisse faire les calculs pour vérifier ça!
Niaboc
Quand tu centres/réduits les données, tu le fais bien sur X1, mais ce n'est pas parce que X2 vaut 0 pour l'individu 1 que la variable centrée réduite vaut 0 aussi! héhé!
Imagine qu'un panéliste avait pour valeur 0 pour X1, alors sa valeur centrée-réduite aurait été (0-1.99)/7.24=-0.2748
Je te laisse faire les calculs pour vérifier ça!
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Affectation d'individus après clustering
Ahhh mais oui que je suis bête ! Ca marche nickel, enfin !
Merci mille fois
Merci mille fois
Plumss- Nombre de messages : 6
Date d'inscription : 29/08/2015
Sujets similaires
» affectation régression de Poisson
» seuil d'affectation régression logistique
» Clustering de variables avec effets aléatoires
» Réalisation d'un clustering
» AFC et clustering sur pourcentages
» seuil d'affectation régression logistique
» Clustering de variables avec effets aléatoires
» Réalisation d'un clustering
» AFC et clustering sur pourcentages
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum