IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Habitudes et prédictions


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 23
    Points
    23
    Par défaut Habitudes et prédictions
    bonjour,

    Oui ce titre est vraiment très flou !

    J'ai un système de domotique qui me permet d'enregistrer dans une base sql une masse d'information sur les HABITUDES de la maison :
    Dates/heures, allumage et extinction de lumières, ouverture de portes, température des pièces et extérieur, mouvements...
    Bref c'est mon big data personnel

    J'aimerais coder un programme Afin de traiter et croiser ces données, dans un premier temps dans le but de logger les événements inhabituel (ex lumière á 4h du mat); puis dans un (lointain) second temps rendre le programme capable de prédire, d'anticiper des actions ( la luminosité baisse, la tv est allumé -> allume les lumières d'ambiance)

    Mais aucune idée de la manière de programmer cet 'apprentissage' ni de stocker les données (une table sql indexé par date/heure est pour l'instant utilisé mais n'est pas exploitable tels quel.

    Avez vous des pistes ?

    Merci

    Ps: le nombre de données pourra être très important ( années x 365 x 24 x 60 x nombre de capteur x changement d'une des valeurs d'un capteur par minutes (luminosité, temp, mouvement...))

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu peux t'orienter vers un système expert.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    Effectivement en lisant la définition d'un système expert, cela correspond assez au but final de l'application elle même. Mais cela reste très flou :-)

    J'ai bien compris le concept de 'règles' (scenario en domotique), et l’exécution de ces règles.
    J'ai en revanche un gros vide pour le stockage des données de façon optimale, leur traitement puis l'apprentissage des règles.

    J'aimerais rester dans une programmation 'classique' (c, C++, js ou php !)

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Tu peux sans doute simplifier un peu ton nombre de données en éliminant le x60, car je ne pense pas qu'il te faille être à la seconde près. Une précision d'une minute est largement suffisant pour l'emploi du temps de personnes. Ensuite, les maisons sont vides la journée car les gens travaillent et inactive la nuit car les gens dorment. Donc même si les données seront grandes, elles devrait être largement manipulable.

    Je ne suis pas vraiment expert de la chose, mais je ferai des histogrammes pour savoir lorsque chaque type d'évènement se produit le plus durant la journée, mais il faudra différencier entre jour de la semaine et week-end.
    Ensuite, tu peux corréler ces évènements entre eux, par exemple : est ce que l'heure d'allumage de la télé correspond avec celui de l'abaissement de la luminosité.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Qui dit "habitudes" dit période. Et chaque évènement est une habitude de période infinie.

    En clair, la quantité de données n'est pas si importante car tu vas garder les informations sur une simple, double ou triple période pré-supposée pour voir si l'évènement se reproduit, et jeter tes enregistrements anciens.

    En reprenant ton calcul, ce n'est même pas effrayant.
    pour 1 octet par évènement pour 100 capteurs pendant 5 ans, il faut 250Mo
    pour 1 kilo-octet par évènement pour 100 capteurs pendant 5 ans, il faut 250Go.
    La vérité se trouve probablement entre les deux et n'est pas effrayante.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Effectivement, la quantité de données en Mo/Go n'est pas si énorme. Ce ne sont que des valeurs numérique. Je cherche surtout le modèle de stockage facilement exploitable.

    Un exemple de modèle facilement exploitable (Mais pas forcément le plus judicieux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    |DATETIME|DURÉE|VAL1|VAL2|VAL3|VAL4|VAL5|VAL6|.....|VAL64|VAL65|
     
    Je stock 1 ligne (avec les valeurs de tous les capteurs) à chaque changement d'une seule valeur. Je stock donc (nombres de capteur) fois plus de données. Un ajout d'un capteur m'oblige à modifier la structure de la table.
    Mais l'exploitation des valeurs en SQL est très simple et très rapide. Un simple SELECT me permet de savoir si la lumière du salon (VAL3) n'est jamais allumé (!=1) lorsque la luminosité extérieur (VAL10) est supérieur à 30% (>0.3)


    Un exemple de modèle plus classique, standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    |DATETIME|DURÉE|IDduCapteur|VALEUR|
     
    Ici l'enregistrement est simple, léger. Mais les requêtes seront plus gourmande en jointure, sous requêtes (et plus prise de tête) etc...

    Je peux aussi utiliser ce second modèle, puis générer des tables temporaires sur les capteurs qui m'interressent (VAL3, VAL10) en utilisant le premier modèle.
    (Grosse consommation CPU pour recréer les tables mais peut être fait à 4H du mat...)


    Je suis en train de faire des test sur de petits samples de données (à base de Mysql sur des anciens raspberry A ou B).
    Je suis plus habitué modèles des sites internet classiques (Merise, etc..). Mais il doit bien y avoir une autre méthode plus performante pour stocker ce genre de données (big data, statistiques... etc)

  7. #7
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut que veux tu ?
    Sauf ton respect, la principale difficulté me semble que tu ne sais pas vraiment ce que tu veux. Si tu prends le temps de l'expliciter, la programmation se fera tout simplement.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    J'ai :
    Une masse croissante d'information issu de capteurs et d'actionneurs domotique (Datetime, capteurID, valeur (int, float))

    Je veux :

    Étape 1 : Stocker ces valeurs (afin de les exploiter,non pas pour les archiver)

    Etape 2 : 'Combiner' ces valeurs et en déduire des règles d'états ; exemple de règles : Capteur10 est à 1 pour 95% des fois ou Capteur1 = 1 et Capteur2 < 50% et Datetime est un samedi

    Etape 3 : Remonter des comportements anormaux (qui vont à l'encontre des règles déduites)

    Etape 6 : Donner au programme la capacité d'action : Allumer l'actionneur10 car la règle indique que le capteur10 devrait être à 1.


    Je poste sur le forum afin d'obtenir des pistes, des noms de procéder, de SGBD, etc.. Je suis autodidacte en informatique, et je n'ai que très peu d’expérience dans ce type de programmation. Je ne sais même pas si cela pourrai être qualifié de Big Data, d'IA, de système expert (bonne piste que je ne connaissais pas du tout)...

    Merci

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    En terme de stockage, je pencherais plutôt vers ta 2ème proposition (1 ligne par capteur).
    Tu as mis une colonne durée ... peut-être. A voir si tu préfères stocker des durées, ou alors stocker tous les changements ( et donc une colonne de plus qui dit Allumage ou Extinction.

    De toutes façons, si à un moment tu considères que pour certaines analyses, l'autre organisation est plus adaptée, tu peux lancer un traitement pour créer l'autre table.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. Apprendre avec de bonnes habitudes : Ada ou Pascal ?
    Par steiner81 dans le forum Débuter
    Réponses: 15
    Dernier message: 03/06/2007, 00h38
  2. Traitement d'images: prédiction sans connaissance a priori
    Par progfou dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 30/10/2006, 08h52
  3. [Honnête]Vos mauvaises habitudes ?
    Par layouni dans le forum La taverne du Club : Humour et divers
    Réponses: 101
    Dernier message: 20/07/2006, 21h09
  4. [convention] vos habitudes
    Par TabrisLeFol dans le forum Langage
    Réponses: 8
    Dernier message: 17/07/2005, 16h49
  5. Prédiction de trajectoire
    Par Xfennec dans le forum Développement
    Réponses: 3
    Dernier message: 27/07/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo