Matching entre profils utilisateurs.

WRInaute impliqué
Bonjour,

Y-a-t-il des pros du data mining dans la salle :) ?

Je ne trouve pas la moindre info, si quelqu'un pouvait m'aider en me mettant sur la piste, ca serait sympa....

Cas fictif, mais qui pourrait m'aider a expliquer :

Soit une base de donnees utilisateurs comportant plusieurs millions d'utilisateurs. (d'ou l'interet d'utiliser des vrais algos, pas des trucs a l'arrache)

Chaque utilisateur possede des attributs : sexe, age, poids, ville, etc...

Comment effectuer une recherche, un "match", entre deux profils de maniere la plus efficace possible ?...

Par exemple une personne A recherche qqun de X ans et d'un poids Y.

Le but etant de ressortir les profils les plus pertinants et d'eviter les profils qui ne le sont pas.

Mais de maniere optimisee, c'est a dire, ne pas lire 100% des enregistrements de la table, et ne pas les comparer betement a un a un....

Limiter le nombre d'enregistrement a prendre, je vois a peu pres....

Il me suffit dans mon SELECT de limiter en prenant les criteres de selections tres important et discrimants...

Genre : SELECT * FROM users WHERE age > x_min AND age < x_max AND {CRITERES IMPORTANTS ICI}

Supposons que de 10'000'000 d'enregistrements, je sois passe a un echantillon de 50'000...

C'est une enorme avancee, mais 50'000 enregistrements a comparer betement dans une boucle ca prend du temps quand meme.... :cry:

Il y a surement des moyens mathematiques de faire ressortir que les n profils les plus pertinents rapidement....

Bref, si vous avez la moindre idee ou indice, je suis preneur :lol:

Merci
 
WRInaute accro
ça c'est pour un site de rencontre je pari ^^

c'est génial ces trucks, en ce demerdant bien on remporte le lot pour le prix d'un allopass et popol est heureux pour quelques soirée :D


sinon je ne sait pas pour ta question :lol: :lol: :lol:


désolé ;-)
 
WRInaute impliqué
Ohax a dit:
ça c'est pour un site de rencontre je pari ^^

Dans l'exemple que je donne, oui, afin de simplifer/clarifier mon exemple...en donnant un exemple de trucs connus....

Sinon c'est parce que ce probleme me pose problemes depuis de nombreux cas.... et j'ai quelques idees autour....

C'est ennuyeux de ne pas etre bon en maths :(

Enfin un petit nom d'algo ferait l'affaire :)

Ca fait 3/4 heures que je me fais du Google autour....en prenant l'exemple des sites de rencontres, et je trouve rien....

A part les reseaux neuroniques mais ca me parait trop lourd en temps et en charge pour faire du calcul rapide.... et puis ca doit etre lourd aussi a gerer derriere, j'en ai jamais fait :(....
 
WRInaute passionné
salut, si tu veux mon avis, bon je suis vraiment pas sur de moi mais a partir du moment ou tu fais un select dans une table, t`es forcement oblige de tout ''lire'' pour pouvoir reitrer seulement les enregistrements aillant comme nom commencant par la lettre X par exemple.

je te propose de faire une base SQL Homme ainsi qu`une base Femme, ainsi que de repartir les enregistrements dans des tables definnisant la tranche d`age. et ensuite donc pour ta requete tu selectionnes la table correspondante.

ca reduierait deja beaucoup le nombre d`enregistrements a analyser !!!

tu vois ce que je veux dire ?
 
WRInaute impliqué
rottman a dit:
salut, si tu veux mon avis, bon je suis vraiment pas sur de moi mais a partir du moment ou tu fais un select dans une table, t`es forcement oblige de tout ''lire'' pour pouvoir reitrer seulement les enregistrements aillant comme nom commencant par la lettre X par exemple.

je te propose de faire une base SQL Homme ainsi qu`une base Femme, ainsi que de repartir les enregistrements dans des tables definnisant la tranche d`age. et ensuite donc pour ta requete tu selectionnes la table correspondante.

ca reduierait deja beaucoup le nombre d`enregistrements a analyser !!!

tu vois ce que je veux dire ?

Oui oui, bien sur ca te force a "lire" tous les enregistrements....mais c'est MySQL qui s'en occupe.
Mais une fois montes en RAM, ca a la rigueur ce n'est plus trop un probleme....
Je travaille actuellement sur des bases de 8 millions d'enregistrements assez simples, et un select se fait en temps reel.

Quant a la repartition en table, ca deviendrait tres lourd pour effectuer la moindre recherche, forcant parfois a faire des requetes sur plusieurs tables en meme temps.

Mais mon gros probleme ne reside pas vraiment dans cette "lecture", passer de 10 millions a 50'000 enregistrements ca se fait sans trop de problemes...

Mon probleme est de traiter et "matcher" ses 50'000 enregistrements restants (dans une table ou dans 30 tables, le probleme est le meme), et la d'un algo a l'autre on parle entre ms ou minutes.... :)

Mais je suis trop novice en data mining pour trouver les noms d'algos qui gerent ca :(
 
Discussions similaires
Haut