PermissiveResearch par Jérôme Morissard

5 912 vues

Publié le

Jérôme nous parlera de son nouveau framework open source qui permet d’effectuer des recherche plus ou moins permissive selon l’algorithme choisi dans des listes de données et ainsi de retourner à vos utilisateurs des résultats qui leur seront plus pertinents.

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
5 912
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 838
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

PermissiveResearch par Jérôme Morissard

  1. 1. PermissiveResearch par Jérôme Morissard @leverdeterre leverdeterre Cocoheads / Paris - Meetup du 09/05/2015
  2. 2. PermissiveResearch Contexte : • Application de GED (application de gestion de documents), • Recherche dans PDF, • Recherche dans des objets CoreData, • Recherche dans les plist. Pourquoi ce composant ?
  3. 3. PermissiveResearch Les problèmes : • Recherche dans un objet, il faut une ou plusieurs propriétés. • Recherche dans des objets hétérogènes, il faut prévoir des méthodes de recherche spécifiques par type d’objet. • La recherche est exacte, mais ne pourrait - elle pas m’autoriser quelques fautes ? • Taille du clavier, sur iPhone j’ai parfois l’impression d’avoir des gros doigts. Pourquoi ce composant ?
  4. 4. PermissiveResearch
  5. 5. PermissiveResearch Un algorithme biologique http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
  6. 6. PermissiveResearch Un algorithme biologique http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman • Dans les années 80, la grande question était de classer les être vivants, • Comment les classer ? • En comparant leurs séquence d’ADN.
  7. 7. PermissiveResearch Un algorithme de Smith et Waterman (1981) http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman L'algorithme de Smith-Waterman est un algorithme optimal qui donne un alignement correspondant au meilleur score possible de correspondance entre les acides aminés ou les nucléotides des deux séquences. Le calcul de ce score repose sur l'utilisation de matrices de similarité ou matrices de substitution.
  8. 8. PermissiveResearch Un algorithme de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST Séquence 1 : FATCATY Séquence 2 : CATFAST Alignement 1 Séquence 1 : FATCA-TY Séquence 2 : CATFAST Alignement 2 Séquence 1 : FATCATY——— Séquence 2 : ———CATFAST Alignement 3 Thréonine Sérine Tyrosine Phénylalanine Pour trouver le meilleur alignement, il faut trouver le bien comprendre ce que l’on peut substituer.
  9. 9. PermissiveResearch Smith et Waterman : Matrice de similarité (nucléotide) Alignement nucléotides • alphabet : 4 lettres
  10. 10. PermissiveResearch Smith et Waterman : Matrice de similarité (acidé aminé) Alignement acide aminés • alphabet : 22 lettres
  11. 11. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C A G S F A
  12. 12. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A G S F A Pour chaque cellule, on maximise le score
  13. 13. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G S F A Pour chaque cellule, on maximise le score
  14. 14. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G S F A Pour chaque cellule, on maximise le score
  15. 15. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G S F A Pour chaque cellule, on maximise le score
  16. 16. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G S F A Pour chaque cellule, on maximise le score
  17. 17. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G 0 0 2 2 12 16 10 S F A
  18. 18. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G 0 0 2 2 12 16 10 S 0 0 5 1 6 17 14 F A
  19. 19. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G 0 0 2 2 12 16 10 S 0 0 5 1 6 17 14 F 6 0 0 3 0 11 20 A
  20. 20. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G 0 0 2 2 12 16 10 S 0 0 5 1 6 17 14 F 6 0 0 3 0 11 20 A 0 10 4 0 7 5 14
  21. 21. PermissiveResearch Un algorithm de Smith et Waterman (1981) Séquence 1 : FATCATY Séquence 2 : CATFAST F A T C A T Y T 0 0 5 0 0 5 0 C 0 0 0 14 8 2 3 A 0 4 0 8 18 12 6 G 0 0 2 2 12 16 10 S 0 0 5 1 6 17 14 F 6 0 0 3 0 11 20 A 0 10 4 0 7 5 14
  22. 22. PermissiveResearch Performance (iPhone 4) Données NSPredicate Permissive Research 5272 villes 250ms 1s 52720 villes 2,5s 8s PermissiveResearch Vs NSPredicate : l’algorithme de PermissiveResearch à une plus grande complexité algorithmique.
  23. 23. PermissiveResearch Performance (iPhone 4) Données NSPredicate Permissive Research 5272 villes 250ms 1s 52720 villes 2,5s 8s Les 2 algorithmes ont une complexité temps ~linéaire : f(nombre de données)
  24. 24. PermissiveResearch Optimisation : Commençons par une heuristique Une heuristique est une méthode de calcul qui fournit rapidement une solution réalisable, pas nécessairement optimale ou exacte, pour un problème d'optimisation difficile. http://fr.wikipedia.org/wiki/Heuristique_(mathématiques)
  25. 25. PermissiveResearch Optimisation : Heuristique Données Segments Découpage de nos données en segments, c’est un paramètre configurable (ici, une longueur de 3)
  26. 26. PermissiveResearch Optimisation : Heuristique Segments Données Pour un segment, on sait retrouver les données associées
  27. 27. PermissiveResearch Optimisation : Heuristique autre station Ma cherche aut utr tre sta tat tion On recherche les objets avec un maximum d’étiquettes
  28. 28. PermissiveResearch Optimisation : Heuristique SCNF Ma cherche SCN CNF On garde les X meilleurs x x x x x x x
  29. 29. PermissiveResearch Optimisation : Heuristique Données NSPredicate Permissive Research (heuristique) 5272 villes 250ms 30ms 52720 villes 2,5s 0,6s C’est rapide … mais : c’est moins précis, la complexité espace augmente (les segments) et on ne tolère d’erreur.
  30. 30. PermissiveResearch Les problèmes : • Recherche dans un objet, il faut une ou plusieurs propriétés, • Recherche dans des objets hétérogènes, il faut prévoir des méthodes de recherche spécifiques par type d’objet, • La recherche est exacte, mais ne pourrait - elle pas m’autoriser quelques fautes ? • Taille du clavier, sur iPhone j’ai parfois l’impression d’avoir des gros doigts. Pourquoi ce composant ?
  31. 31. PermissiveResearch Optimisation : Heurexacte (Heuristique + Exacte) Données Heuristique rapide, on supprime 90% des données. On garde les objets qui ont un maximum fragments communs. Sous-ensemble de données On analyse finement les objets restants Sous-sous-ensemble de données Retour des résultats
  32. 32. PermissiveResearch Optimisation : Heuristique Données NSPredicate Permissive Research (heuristique) Permissive Research (heurexact) 5272 villes 250ms 30ms 300ms 52720 villes 2,5s 0,6s 2,4s On conserve la performance, on a une bonne approximation, et on autorise des erreurs :)
  33. 33. PermissiveResearch Les améliorations à faire : matrice custom Il faudrait faire une matrice sur pour gérer nos pondérer nos erreurs.
  34. 34. PermissiveResearch Des questions ?

×