Techniques pour trouver des correlations dans une base de donnée?

Répondre
Partager Rechercher
Salut. Je me demandais s'il y a actuellement des outils informatiques qui cherchent seuls des corrélations entre divers paramètres d'une base de donnée. Si elle peut trouver des causalités et faire le café en prime, tant mieux, mais j'ai comme un doute

J'ai mis la main sur une base de donnée anonymisée et dispo publiquement. Elle contient des infos comme age, sex, XP, nombre de jeux joues, etc... Du coup je voudrais pouvoir savoir (par exemple), quels sont les facteurs principaux qui caractérisent mettons le top centile des joueurs de 40-45 ans, ou savoir quel est le taux de progression d'un joueur de 15 ans vs un joueur de 20 ans, quelle est la différence principale entre un 2e décile et un 8e décile, trouver quels sont les principaux facteurs de progrès (années de jeu? Nombre de jeux? Sex? etc..)

Je peux faire pas mal d'analyses a la mano, mais ca prendrait pas mal de temps pour essayer chaque combinaison de paramètres qui me passent par la tête, et je sais que parfois il y a des corrélations auxquelles l'esprit humain ne pense pas. Quelqu'un aurait des idées? Au pire je peux toujours faire des trucs sur Excel ou Access, mais s'il y a un truc tout mâché (genre copy paste dans Watson et il te dit tout )

Le but? Aucun, juste un hobby pour me faire travailler l'esprit.
Ce que tu cherches c'est faire du data mining. Après, j'ai pas connaissance d'un truc "gratuit" et "générique" (dans le sens qui s'adapte tous seul à n'importe quelle base de donnée).
Citation :
Publié par Hellraise
Il n'y avait pas des logiciels justement avec des IA qui trouvaient des relations tous seuls?
Ben si c'est du data mining. Mais c'est pointu... Donc tu auras rien gratuit...

En gros, soit tu prends des algos et tu les adaptes pour ton cas et c'est gratuit. (faut être codeur... Et motivé )

soit tu sors la CB
Je ne comprends pas trop ton soucis.

T'as combien de lignes ? C'est jouable un export CSV en Google Sheet ou Excel ?

Tu peux faire des Queries se rapprochant de SQL sur les deux (une des raisons pour lesquelles je préfère Google Spreadsheet à Excel, manier les queries est plus intuitif).

Sinon les deux outils leaders du côté utilisateur data sont Tableau et Looker mais ce serait de l'overkill pour un simple dataset.

Après si tu code un peu en Python tu peux toujours t'amuser à faire des représentations graphique des données brutes que tu as.

Dans tous les cas, j'ai bien peur que tu doive en rester à la "mano".

Si il suffisait de copier coller un data set dans un outil pour avoir toutes les combinaisons possibles ET les analyses s'y rattachant, les boites ne rechercheraient pas autant de profils Data & B.I.

C'est un job mec !
J'ai utlisé KNIME pour faire ce genre de truc.

Sinon dans le genre j'ai commencé à faire joujou avec Glueviz mais pas sur des vrais projets. Tant qu'à faire installe Anaconda, comme ça t'aura Spyder (environnement/ide python avec package scientifique) et d'autres trucs sympas prêts à l'utilisation.

Sinon SAS ça sert exactement à ça aussi, mais j'ai souvenir (ça remonte) d'un truc très laid.

Et si @Jyharl, chercher toutes les corrélations pour en extraire les plus pertinentes (y compris les combinaisons de facteurs), trouver les clusters dans ses données (knn et gnagnagna), ça se fait évidemment "automatiquement" avec ce genre d'outils.
Ah j'oubliais un truc. Pour la représentation graphique / Dashboard, tu peux essayer de jouer un peu avec Google Data Studio (gratuit, en béta) qui a un vaste choix de format comme fichier source (même une spreadsheet ! ).

@Assurancetourix : Ben pas si tu code pas un minimum, non. Lui dans son message initial il parlait limite de juste copier coller un data set et avoir une IA qui lui sort tout, tout seul. Non ça n'existe pas.

L'outil il en sait rien de ce que l'utilisateur trouve pertinent hein. Faut lui dire. Anaconda je ne vois pas l'intérêt si l'utilisateur ne fait pas de Python. C'est comme lui filer Databricks.
Je peux pas vraiment t'aider mais juste te dire que j'ai reçu des cours à une époque lointaine sur comment résoudre ce genre de problème, que c'est un pas un sujet simple et qu'il y a des gens dont c'est le métier de faire ça. En gros ne t'attends pas à pouvoir te démerder tout seul avec Excel ou un random freeware, si t'as pas un minimum de bases derrière.
Citation :
Publié par Jyharl
@Assurancetourix : Ben pas si tu code pas un minimum, non. Lui dans son message initial il parlait limite de juste copier coller un data set et avoir une IA qui lui sort tout, tout seul. Non ça n'existe pas.
Bah... si?
Si tes données de base sont assez propres/homogène et que tu n'as pas besoin d'inventer/calculer de nouveaux paramètres complexes...

Son premier example:
Citation :
Du coup je voudrais pouvoir savoir (par exemple), quels sont les facteurs principaux qui caractérisent mettons le top centile des joueurs de 40-45 ans
Ca se fait avec un "graphe" assez simple dans KNIME imo.
Citation :
Publié par Assurancetourix
Bah... si?
Si tes données de base sont assez propres/homogène et que tu n'as pas besoin d'inventer/calculer de nouveaux paramètres complexes...
Oui ben si tu parle de poser des filtres, autant faire ça avec Excel hein.
Mais tu dois bien définir à la base les paramètres qui t'intéressent. L'outil ne va pas lire tes pensées...

A moins évidement que tu te contente d'un simple "parser" de donnée qui va TOUT te catégoriser. Mais t'auras bien une composante humaine pour trier ce qui est pertinent ou non.
Citation :
Publié par Jyharl
Oui ben si tu parle de poser des filtres, autant faire ça avec Excel hein.
Mais tu dois bien définir à la base les paramètres qui t'intéressent. L'outil ne va pas lire tes pensées...
Ben il a défini ce genre de paramètre dans les exemples qu'il donne. "Je cherche les variables les plus discriminantes du cluster défini par "age dans une fourchette et top centile".

Dernière modification par Assurancetourix ; 27/03/2019 à 11h29.
Citation :
Publié par Assurancetourix
Ben il a défini ce genre de paramètre dans les exemples qu'il donne. "Je cherche les variables les plus discriminantes du cluster défini par "age dans une fourche et top centile".
Oui, et ton outil ne va pas lire JoL et comprendre le français... Donc il sera bien obligé de configurer l'outil et non juste copier coller un data set et abracadabra.

Même dans KNIME tu dois créer le workflow que tu veux et si t'y as jamais touché, t'auras un peu de taf.

Note que je ne dis pas que c'est impossible hein. Je dis que non, y a pas d'outil où tu copie colle un data set et pouf ça fait des chocapics sans une once de paramétrage préalable.
En gros il s'agit de faire des analyses factorielles, non ?

Si c'est bien ça, comme dit Jyharl, ça demande de préparer des trucs à la main :
- avoir une base de données propre
- recoder des variables notamment pour avoir moins de modalités
- choisir l'outil (R, SAS, y en a d'autres)
- choisir les variables que tu vas mettre
- savoir analyser les résultats

En gros, c'est un métier en fait.

Dernière modification par Lunevirtuelle ; 27/03/2019 à 11h27.
Citation :
Publié par Jyharl
Oui, et ton outil ne va pas lire JoL et comprendre le français... Donc il sera bien obligé de configurer l'outil et non juste copier coller un data set et abracadabra.

Même dans KNIME tu dois créer le workflow que tu veux et si t'y as jamais touché, t'auras un peu de taf.

Note que je ne dis pas que c'est impossible hein. Je dis que non, y a pas d'outil où tu copie colle un data set et pouf ça fait des chocapics sans une once de paramétrage préalable.
Ha ben oui c'est sûr. Mais bon en relisant l'op j'ai comme l'impression qu'il sait très bien caractériser ses critères, et rechercher des corrélations "à la main" (tiens vérifions si telle variable ne serait pas discriminante)... il lui faut juste un truc qui évite de faire cette dernière étape 500x au pifomètre, et ya pas nécessairement besoin de coder pour ça.
Citation :
Publié par Jyharl

T'as combien de lignes ?
Je dirais 10 tables de 20k lignes, et une de 300k pour avoir toutes les infos.


Citation :
Ha ben oui c'est sûr. Mais bon en relisant l'op j'ai comme l'impression qu'il sait très bien caractériser ses critères, et rechercher des corrélations "à la main" (tiens vérifions si telle variable ne serait pas discriminante)... il lui faut juste un truc qui évite de faire cette dernière étape 500x au pifomètre, et ya pas nécessairement besoin de coder pour ça.
Oui, en gros je sais faire pas mal de trucs, mais ça prend du temps. Et je n'ai pas suivi les progrès de l'automatisation dans l'analyse de données, et j'avais cru comprendre que pas mal de choses étaient améliorées et plus manuelles (il n'y avait pas un Watson d'IBM ou MS qui prenait une BdD et répondait a des questions en langage naturel?).

De plus, mettons que je trouve que le nombre de match ne corrèle pas avec la performance, mais le niveau des adversaire si. C'est facile, je peux conceptualiser l'idée et la tester plus ou moins facilement.
Par contre, si ça se trouve, les plus gros gains d'XP se font en Mars ou les jours de pleine lune (exemples au pif). Et ca, je n'aurais jamais la présence d'esprit de tester ces variables-ci. Alors si une IA me dit que les gains de performance sont corrélés avec les phase de la lune, alors je peux m’amuser a comprendre s'il s'agit d'une causalité, ou s'il y a un facteur commun qui permettrait d'optimiser les gains d'XP. Ou simplement d'avoir une info conne mais drôle a balancer sur JoL "lol les joueurs de mon échantillon sont des loups garous!".
Citation :
Publié par Lunevirtuelle
En tout cas elle donne envie ta base de données. Si jamais tu peux partager, je suis preneuse.
Pareil.

Sinon @Hellraise - l'analyse de donnée c'est un peu comme la recherche. C'est en trouvant ce que tu n'as pas cherché au départ que tu peux découvrir des corrélations auxquelles tu n'aurais pas pensé en premier lieu. C'est ce qui fait que c'est si passionnant.

On ne te demandera jamais de penser à tout dès le début. Tu vas d'abord regarder ce qui te semble couler de source et vérifier tes hypothèses en premier lieu. Au bout d'un moment tu auras forcément des instants "Hey mais pourquoi ça c'est comme ça ?" et tu vas creuser. Et théoriquement on peut creuser vachement profondément. Tu parle de pleine lune en rigolant mais parfois quand tu ne trouve pas de corrélation tu commence à penser en dehors des sentiers battus et y a des moments assez WTF quand tu tombe sur une corrélation impensable.

Anecdote perso : Par exemple, à l'époque où je bossais encore dans le F2P on avait remarqué qu'effectivement et sans surprise, la période de noël était celle où on faisait le plus de thunes sur l'année. Mais paradoxalement, bien que c'était la période où les joueurs dépensaient le plus c'était aussi celle où ils jouaient le moins. Et sur la période post-noël on perdait plus ou moins 10% des joueurs qui ne revenaient pas après les vacances (Juillet-Aout avait le même effet, 10% des joueurs ne revenaient pas). Alors je ne sais pas si c'est encore le cas aujourd'hui et ça dépend aussi des jeux. Mais on avait trouvé ça assez intéressant à l'époque de pouvoir confirmer que les vacances avaient un effet "sevrage du MMO" bien réel. On a aussi l'effet météo. On avait moins de joueurs online quand il faisait beau que quand y avait un temps de merde.

Pour en revenir au fait de creuser, c'est un peu le danger aussi. On peut parfois se perdre dedans tellement c'est prenant. Alors quand tu le fais à titre perso ça passe mais au boulot faut mettre "temps passé VS résultats" dans la balance et parfois, même si c'est frustrant, on arrête de creuser parce que ça vaut pas le coup.

Par contre, comme c'est un data set que t'as récupéré et que tu n'as pas accès directement à la source, n'oublie pas que tu vas manquer pas mal d'information et de contexte. C'est l'un des gros pièges de l'analyse de donnée. Partir sur des conclusions avec les data que tu as sans prendre aussi en compte que ce que tu n'as pas est une erreur classique.

Y a une histoire assez connue dans le milieu de la data (dont je ne fais absolument pas partie mais je bosse avec eux régulièrement) liée au biais du survivant. Tiens la page Wikipedia en français. La partie dont on parle beaucoup en data c'est celle sur les avions de la seconde guerre mondiale.

Citation :
Au cours de la Seconde Guerre mondiale, le statisticien Abraham Wald a pris en compte le biais du survivant dans ses calculs afin d'évaluer comment minimiser la perte de bombardiers sous le feu ennemi. En étudiant les dommages causés à des aéronefs revenus de mission, l'étude a recommandé de blinder les endroits des appareils qui présentaient le moins de dommages. En effet, Wald a constaté que les études précédentes ne tenaient compte que des aéronefs qui avaient « survécu » à leur mission, sans tenir compte de ceux qui avaient disparu. Ainsi, les endroits endommagés des aéronefs revenus représentent les endroits où ces derniers peuvent encaisser des dommages et réussir à rentrer à la base. La conclusion de Wald est que lorsqu'un aéronef est endommagé à un autre endroit, il ne revient pas du front. En conséquence, ce sont ces endroits - ceux non endommagés chez les « survivants » - qui devraient être renforcés, et non les endroits endommagés

Dernière modification par Jyharl ; 27/03/2019 à 12h46.
Citation :
Publié par Jyharl
Sinon @Hellraise - l'analyse de donnée c'est un peu comme la recherche. C'est en trouvant ce que tu n'as pas cherché au départ que tu peux découvrir des corrélations auxquelles tu n'aurais pas pensé en premier lieu. C'est ce qui fait que c'est si passionnant.

On ne te demandera jamais de penser à tout dès le début. Tu vas d'abord regarder ce qui te semble couler de source et vérifier tes hypothèses en premier lieu. Au bout d'un moment tu auras forcément des instants "Hey mais pourquoi ça c'est comme ça ?" et tu vas creuser. Et théoriquement on peut creuser vachement profondément. Tu parle de pleine lune en rigolant mais parfois quand tu ne trouve pas de corrélation tu commence à penser en dehors des sentiers battus et y a des moments assez WTF quand tu tombe sur une corrélation impensable.

Anecdote perso : Par exemple, à l'époque où je bossais encore dans le F2P on avait remarqué qu'effectivement et sans surprise, la période de noël était celle où on faisait le plus de thunes sur l'année. Mais paradoxalement, bien que c'était la période où les joueurs dépensaient le plus c'était aussi celle où ils jouaient le moins. Et sur la période post-noël on perdait plus ou moins 10% des joueurs qui ne revenaient pas après les vacances (Juillet-Aout avait le même effet, 10% des joueurs ne revenaient pas). Alors je ne sais pas si c'est encore le cas aujourd'hui et ça dépend aussi des jeux. Mais on avait trouvé ça assez intéressant à l'époque de pouvoir confirmer que les vacances avaient un effet "sevrage du MMO" bien réel. On a aussi l'effet météo. On avait moins de joueurs online quand il faisait beau que quand y avait un temps de merde.

Pour en revenir au fait de creuser, c'est un peu le danger aussi. On peut parfois se perdre dedans tellement c'est prenant. Alors quand tu le fais à titre perso ça passe mais au boulot faut mettre "temps passé VS résultats" dans la balance et parfois, même si c'est frustrant, on arrête de creuser parce que ça vaut pas le coup.

Par contre, comme c'est un data set que t'as récupéré et que tu n'as pas accès directement à la source, n'oublie pas que tu vas manquer pas mal d'information et de contexte. C'est l'un des gros pièges de l'analyse de donnée. Partir sur des conclusions avec les data que tu as sans prendre aussi en compte que ce que tu n'as pas est une erreur classique.

Y a une histoire assez connue dans le milieu de la data (dont je ne fais absolument pas partie mais je bosse avec eux régulièrement) liée au biais du survivant. Tiens la page Wikipedia en français. La partie dont on parle beaucoup en data c'est celle sur les avions de la seconde guerre mondiale.
Je sais que c'est passionnant, pour cela que j'aime bien l'analyse dans mes jeux, MMOs, FPS, choix d'écoles, choix de maisons, etc..
Mon métier est de toute façon lié a l'analyse, mais je ne suis pas un pro du BI/MI/Data (je devrais m'y former, c'est tellement passionnant), et j'aime bien le coté artisanal de la chose. C'est juste qu'avec l'évolution des technologies (cf le thread évolution du travail sur l'agora), j'étais persuadé que les IA (ou plutôt les algos) arrivaient a maintenant trouver des corrélations et les présenter aux humains, qui alors font l'interprétation et décident si le facteur est valable et actionnable.

La je crois que je vais me faire une petit base Access et basta, je ferais une interface pour sélectionner la catégorie que je veux analyser et je manipulerai pour voir s'il y a des paramètres significatifs. Mais j;aurais bien aimé demander cela a une IA
Tu peux faire les tests classiques type chi 2 tout simplement. Tu demandes au logiciel de ton choix (moi j'utilise R, c'est open source, mais ça demande du code) de faire ce test sur tous les couples de variables et tu sauras si il y a de grandes chances que les variables soient indépendantes ou pas. Ca te permet déjà de bien débroussailler le terrain pour faire des trucs plus poussés "à la main".
Je complète un peu ce qui s’est dit en citant Lisrel : https://en.m.wikipedia.org/wiki/LISREL . C’est l’outil le plus efficace que j’ai pu utiliser dans une problématique « j’ai des données et j’en fait quoi ?! ».

Sinon, si tu as des donnés et que tu as des questions précises : tu auras des approches possibles différentes... qui passeront le plus souvent par de la normalisation/agrégation/nettoyage de données.




Si ce genre de jeu de données intéresse des gens : pas mal de données sont « publiées » par les états. Ici pour la France par exemple : https://www.data.gouv.fr/fr/datasets...a-circulation/ .
J'arrive sur le tard sur le sujet, mais si chaque enregistrement de la table de la base de données fait un individu et chaque colonne d'attribut, une caractéristique,
alors un SELECT * FROM maTable donne la matrice de départ à exploiter.
Une conversion en CSV de cette sortie permet de la recharger sur R Studio, et là :
summary fait les analyses univariées (moyenne, médiane, quartiles...),
cor(...) les corrélations pour les analyses bi-variées,
et pca(...) l'Analyse en Composantes Principales, du package FactomineR

et déjà, ça, ça fait le café.

Dernière modification par Caniveau Royal ; 28/03/2019 à 13h21. Motif: Package factomine'R
Y a des outils en Python pour faire ce genre de recherche et de trouvaille. Ça demande pas mal de temps, et si tu ne connais pas Python ça peut prendre encore un peu plus de temps. Mais une matrice de corrélation, c'est une ligne de code une fois les données sous le bon format.
R, ou SAS, peuvent apporter les mêmes éléments si tu es plus familier avec ceux-là.

Un exemple rapide en 2 mn de google-fu: https://datascience.stackexchange.co...ix-with-pandas
Citation :
Publié par Caniveau Royal
et pca(...) l'Analyse en Composantes Principales
Sauf que la fonction pca fait partie du package FactomineR, qu'il faut installer en plus de R (et R studio si tu souhaites ajouter une interface un peu plus amicale, il en existe d'autres, Eclipse par exemple). Ca implique une mini formation sur R pour comprendre la logique de fonctionnement, moi j'ai suivi ce doc mais il est un peu ancien maintenant, y a peut être mieux. Ensuite y a de la doc ciblée sur FactomineR (qui est un package français, donc la doc existe en français).
Économiste de formation, j'ai fait pas mal d'économétrie et de stats dans ma jeunesse, même si depuis près d'une 15aine d'année je n'y ai plus retouché du tout. Mais malgré tout, je suis un peu surpris, comme l'OP, qu'il n'existe pas d'outil simple permettant de tester toutes les corrélations possibles, de les livrer et de laisser l'humain chercher du sens à tout ça.
Je ne parle pas ici de régressions complexes et multifactorielles, mais au moins un premier niveau de lectures de corrélations éventuelles.
Il me semblait d'ailleurs avoir lu que le développement des datas s'était accompagné d'IA dédiées, notamment un article sur le big data en santé et d’algorithmes qui permettaient d'identifier les corrélations inattendues et qu'on n'aurait jamais pu dénicher à la main.
Alors qu'il n'existe pas d'outil simple et clé en main pour sortir les liens possibles entre variables de petites tables comme celles de l'OP, je suis presque déçu…
J'ai aussi une lointaine formation d'économiste, mais je ne suis pas surpris.
On utilisait eviews à l'époque. J'ai vu que l'appli existait toujours aujourd'hui et j'ai jeté un œil au tarifs... Ces logiciels clé en main coûtent une petite fortune!! Ils sont destinés à des professionnels.
Pour des besoins ponctuels, j'utiliserais effectivement python/panda, voire même simplement Excel.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés