Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Select other language :


Apprentissage

Enseignements

Enseignements Département Informatique SI5 et Master IFI

Enseignements Département Bâtiment Polytech'Nice

Autres Formations française et étrangère

Activités administratives, Ingénierie et Innovation Pédagogiques

Apprentissage Département Informatique SI5/Master 2 ingénierie informatique EUR DS4H


Recherche

Valorisation de la Recherche

Dépôts Logiciels à l’Agence de Protection des Programme (APP)

Valorisation des résultats de recherche et transfert

Diffusion de la Culture scientifique et Technologique

Communications de presse

Séminaire ENSI Tunis

Pédagogie Innovante

Relations industrielles et socio-économique

Organisation de Manifestations

  • Conférence sur les FabLabs, Alexandre Schneider, Professeur Agrégé en Génie Mécanique, Université de Reims Champagne-Ardenne Web
  • Journées UbiMob'14 Site Web

Animation de la Recherche

U-Santé

Privé

Outils

Sources d'Informations

cours:plim:projet16_17:gr1:gr1

Ceci est une ancienne révision du document !


Smart Contact List

Présentation du projet

  • Nom 1 : Gatien CHAPON
  • Créneau (AM ou PM) : AM
  • Nom 2 : Gregory ROBIN
  • Créneau (AM ou PM) : AM
  • Nom du Projet : Smart Contact List

Un scénario d'illustration du Projet

L’idée de ce projet est de réaliser une application capable de trouver et de proposer à un utilisateur les contacts les plus probables qu’il souhaite appeler à un instant donné. Par exemple, en tant que Bob, commercial ayant beaucoup de contact et énormément d'appels à passer dans la journée, je veux que mon téléphone me propose une liste de contact favoris au moment où je souhaite passer un appel. Pour cela, l’application aura accès au journal d’appel de Bob et utilisera un algorithme d'apprentissage supervisé. De même, Bob pourra effectuer un appel depuis l’application.

Matériel disponible

Cible Mobile utilisée :

Etant donné, qu'Android est l'un des leaders du marché des OS pour les applications mobiles, nous allons nous orienter vers une application compatible avec un os de type Android. Nous prendrons comme cible un téléphone Samsung Galaxy S4 mini avec OS Android et une version 5.0.3

  • Référence du SmartPhone : Samsung Galaxy S4 mini
  • Caractéristiques techniques

Accelerometer, Geomagnetic Sensor, Gyro Sensor, Light Sensor, Proximity Sensor

  • Caractéristiques de l'OS et des environnements logiciels utilisables pour développer sur ce SmartPHone : Android 5.0.3

Environnement logiciel :

Dans le but d'optimiser les performances de notre application et étant donné que nous ciblons des plateformes mobiles de type Android, nous avons choisi de réaliser une application mobile native Android. De ce fait, nous avons choisi d’utiliser Android studio comme environnement logiciel pour développer dans un environnement natif.

Architecture logicielle de la solution :

Notre architecture logicielle sera découpée en deux parties distinctes :

  1. Une partie serveur en charge du traitement des données. Dans notre cas, l’algorithme d’apprentissage sera situé sur celui-ci.
  2. Une partie cliente, l’application mobile permettant :
  • L’accès aux sondes systèmes (journal d’appel, contact)
  • La mise à jour de la base de données locale lorsqu'un appel est émis ou reçu.
  • L’utilisation d’un cache local permettant de stocker les contacts les plus probables pour chaque période de la journée : 8-10h, 10-12h, 12-14h, 14-16h, 16h-18h, 18-20h, 20-22h, 22-00h et 00-06h (mise à jour de ce cache lors de la synchronisation avec le serveur).
  • L’affichage des contacts les plus probables qu’ils souhaitent appeler à un instante donné.

La communication entre le client et le serveur sera effectué à l’aide de requête de type REST.

Reconnaissance de l'activité :

Cette application permettra de prédire vers quels contacts un appel va être émis et ce en fonction de l'heure et de la date à laquelle l’utilisateur souhaite passer un appel.

Ressouces utilisées dans le Projet

Pour ce projet, nous allons principalement nous intéresser aux sondes téléphoniques de l’appareil cible. Pour réaliser notre algorithme d’apprentissage, nous avons besoin de récupérer plusieurs informations :

  • Le journal d'appel de l'utilisateur pour accéder aux informations de chaque appel préalablement réalisés :
    • Date et l'heure de l'appel
    • Le numéro de l'appel
    • La personne appelée
    • Appel reçu ou émis
  • Le répertoire de contact de l'utilisateur pour accéder à tous les contacts de l'utilisateur
  • Nous calculerons de même le nombre d'appel émis et reçu par contact (calcul réalisé sur le serveur).

Faisabilité des choix

Sous Android, l’accès au journal d’appel peux être réaliser en utilisant l’API CallLog.Calls (https://developer.android.com/reference/android/provider/CallLog.Calls.html#CallLog.Calls()). Cette API nous permettra de récupérer tous les informations de l’utilisateur concernant son journal d’appel. Par contre cette API impose bien évidement de demander le droit d’accès au journal d’appel de l’utilisateur.

Nous avons de même la possibilité d’accéder à la liste de contact de l’utilisateur en utilisant l’API Android Read_Contacts (https://developer.android.com/training/contacts-provider/retrieve-names.html).

Algorithme mis en œuvre :

Afin de réaliser ce projet, nous allons mettre en œuvre un algorithme supervisé de type Random forest.

Pour ce faire, nous définiront un vecteur composé d’un grand nombre de données sans quoi l'algorithme serait totalement inefficace.

Avec quelles données ?

Le vecteur sera composé de la date, de l'heure d'appel, de tous les contacts présents sur le téléphone, ainsi que le nombre d'appel par contact et le numéro de téléphone qui constituera notre cible (la classe à reconnaitre).

Cet algorithme nous parait tout à fait pertinent du fait du nombre de contact que l'on peut avoir sur un téléphone. Les données engendrées seront donc normalement assez importantes pour fournir un résultat cohérent quant à la prédiction de l'appel que l'on veut passer.

Pour réaliser cela, nous nous inspirerons d’un exemple d’utilisation de cette algorithme disponible à l’adresse suivante : https://www.kaggle.com/vankads/titanic/a-journey-through-titanic/notebook.  

Planning et Test

  1. Choix et implémentation de la composition définitive du vecteur et des classes pour l’utilisation de l’algorithme d’apprentissage Random Forest.
  2. Création de l’application mobile
  3. Mises-en en place de différents services REST pour l’échange de données entre le client et le serveur.
  4. Phase de test et d’analyse

Pour réaliser la phase de test de notre application, nous utiliserons le jeu de données de nos téléphones personnelles.

Machine "Serveur"

Explication générale

Le serveur fonctionne sous une machine linux ou windows. C'est celui-ci qui se charge de l'algorithme d'apprentissage qui est Random Forest dans notre cas.

Notre serveur reçoit en entrée plusieurs vecteurs (envoyé par l'application mobile et de type POST) correspondants aux appels d'un utilisateur (pour une question de “vie privée” les numéros de téléphone ne sont pas transférés au serveur, seul les noms de contacts sont transférés) .

Après un processus de traitement réalisé par le serveur pour augmenter la taille des vecteurs, un appel à une bibliothèque python implémentant Random Forest est réalisé.

Le serveur renvoi par la suite ces prédictions concernant les contacts que l'utilisateur souhaitera potentiellement appeler à un instant donné.

Installation sous Windows

  • Téléchargement à l'adresse suivante : WindowsServer
  • Lancement : Décompressez le dossier et lancez “en tant qu'administrateur” WindowsServer.exe (pour cela il suffit de réalisé un clic droit sur WindowsServer.exe.

Installation sous Linux

  • Téléchargement à l'adresse suivante : ServerLinux
  • Lancement : cd LinuxServer;./LinuxServer
  • Recommandation : il se peut qu'il y est un probléme de FireWall. Pour régler cela, il suffit d'entrer la commande suivante : sudo iptables -A INPUT -p tcp –dport 5000 -j ACCEPT

Application mobile SmartContactList sous Android

  • Installation : télécharger l'APK suivant sur votre téléphone mobile : SmartContactListApp
cours/plim/projet16_17/gr1/gr1.1485597619.txt.gz · Dernière modification: 2017/01/28 11:00 par gchapon