Algo de détection d'habitudes d'inscriptions - Algo - Programmation
MarshPosté le 05-06-2014 à 15:35:04
Bonjour,
Voilà, j'ai un logiciel où des gens s'inscrivent sur un planning pour chaque semaine (on reste au niveau de la journée entière, pas de créneau horaires) toute l'année et j'aimerais faire un algo qui détecte les habitudes d'inscriptions des utilisateurs afin d'anticiper des oublis d'inscriptions. Un utilisateur peut s'inscrire sur 0 ou plusieurs jours de chaque semaine de l'année. Mais certains oublient et du coup, on doit gérer des présents qui n'auraient pas dû l'être (et non, on peut pas les virer ).
Du coup, je voudrais mettre en place un système un minimum intelligent qui vérifie régulièrement, si, pour la période suivante, chaque utilisateur s'est inscrit, comme il a l'habitude de le faire lors des périodes précédentes. Ex : y'en a qui s'inscrivent tous les lundi et jeudi, d'autres que les mardi, certaines encore qu'un lundi sur 2... bref, vous voyez le genre.
J'ai cherché un peu dans Google si y'avait des algos répondant à mon pb, mais bon, j'ai rien trouvé de très probant (j'ai peut-être pas employé les bons mots-clés).
J'avais plusieurs idées : 1) définir un "profil" pour chaque utilisateur en voyant les jours du planning comme une position dans une chaîne de caractères et les jours où y'a une inscription, les marquer avec un caractère différent. Ensuite, appliquer un algo pour réduire au motif le plus court la chaîne. Enfin, dupliquer le motif et comparer la chaîne résultante à celle issue du planning actuel et appliquer un calcul de distance entre chaînes. Mais j'ai peur que le coup des positions des jours dans la chaîne masque un peu la notion de date et des lundi/mardi/mercredi... Par ailleurs, j'ai peur que cet algo soit un peu trop "sensible" à des événements aléatoires, genre, un jour, l'utilisateur s'est inscrit sur un jour alors qu'il n'avait jamais fait.
2) faire un profil "génétique" du comportement de l'utilisateur pour chaque semaine, le profil étant associé à un n° de semaine. Les gênes seraient les jours de la semaine concernée avec comme valeur, 0 ou 1 (1 = inscription). Ensuite, pour chaque séquence différente, j’attribuerais son % de récurrence. Un gène étant vu comme un vecteur, je pourrais calculer le taux de corrélation entre le gène représentant le planning actuel et ceux passés. Ca me permettra de voir si ça correspond ou pas. Par contre, avec ce système par semaine, je gère pas le cas de motifs ayant une période > à la semaine Je peux pas le faire par mois à cause du fait que chaque mois n'a pas le même nb de jours et que les semaines peuvent être à cheval sur 1 mois. Ou alors, je travaille par paquet de 4 semaines.
Après, j'aimerais que mon algo puisse détecter et s'adapter à des changements "brutaux" d'habitudes. Des idées ?
Marsh Posté le 05-06-2014 à 15:35:04
Bonjour,
Voilà, j'ai un logiciel où des gens s'inscrivent sur un planning pour chaque semaine (on reste au niveau de la journée entière, pas de créneau horaires) toute l'année et j'aimerais faire un algo qui détecte les habitudes d'inscriptions des utilisateurs afin d'anticiper des oublis d'inscriptions. Un utilisateur peut s'inscrire sur 0 ou plusieurs jours de chaque semaine de l'année. Mais certains oublient et du coup, on doit gérer des présents qui n'auraient pas dû l'être (et non, on peut pas les virer ).
Du coup, je voudrais mettre en place un système un minimum intelligent qui vérifie régulièrement, si, pour la période suivante, chaque utilisateur s'est inscrit, comme il a l'habitude de le faire lors des périodes précédentes.
Ex : y'en a qui s'inscrivent tous les lundi et jeudi, d'autres que les mardi, certaines encore qu'un lundi sur 2... bref, vous voyez le genre.
J'ai cherché un peu dans Google si y'avait des algos répondant à mon pb, mais bon, j'ai rien trouvé de très probant (j'ai peut-être pas employé les bons mots-clés).
J'avais plusieurs idées :
1) définir un "profil" pour chaque utilisateur en voyant les jours du planning comme une position dans une chaîne de caractères et les jours où y'a une inscription, les marquer avec un caractère différent. Ensuite, appliquer un algo pour réduire au motif le plus court la chaîne. Enfin, dupliquer le motif et comparer la chaîne résultante à celle issue du planning actuel et appliquer un calcul de distance entre chaînes. Mais j'ai peur que le coup des positions des jours dans la chaîne masque un peu la notion de date et des lundi/mardi/mercredi... Par ailleurs, j'ai peur que cet algo soit un peu trop "sensible" à des événements aléatoires, genre, un jour, l'utilisateur s'est inscrit sur un jour alors qu'il n'avait jamais fait.
2) faire un profil "génétique" du comportement de l'utilisateur pour chaque semaine, le profil étant associé à un n° de semaine. Les gênes seraient les jours de la semaine concernée avec comme valeur, 0 ou 1 (1 = inscription). Ensuite, pour chaque séquence différente, j’attribuerais son % de récurrence. Un gène étant vu comme un vecteur, je pourrais calculer le taux de corrélation entre le gène représentant le planning actuel et ceux passés. Ca me permettra de voir si ça correspond ou pas.
Par contre, avec ce système par semaine, je gère pas le cas de motifs ayant une période > à la semaine Je peux pas le faire par mois à cause du fait que chaque mois n'a pas le même nb de jours et que les semaines peuvent être à cheval sur 1 mois. Ou alors, je travaille par paquet de 4 semaines.
Après, j'aimerais que mon algo puisse détecter et s'adapter à des changements "brutaux" d'habitudes. Des idées ?
Merci
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta