PermissiveResearch
par Jérôme Morissard
@leverdeterre
leverdeterre
Cocoheads / Paris - Meetup du 09/05/2015
PermissiveResearch
Contexte :
• Application de GED (application de gestion de documents),
• Recherche dans PDF,
• Recherch...
PermissiveResearch
Les problèmes :
• Recherche dans un objet, il faut une ou plusieurs propriétés.
• Recherche dans des ob...
PermissiveResearch
PermissiveResearch
Un algorithme biologique
http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
PermissiveResearch
Un algorithme biologique
http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
• Dans les années 80...
PermissiveResearch
Un algorithme de Smith et Waterman (1981)
http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
L'a...
PermissiveResearch
Un algorithme de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
Séquence 1 : FATCAT...
PermissiveResearch
Smith et Waterman : Matrice de similarité (nucléotide)
Alignement nucléotides
• alphabet : 4 lettres
PermissiveResearch
Smith et Waterman : Matrice de similarité (acidé aminé)
Alignement acide aminés
• alphabet : 22 lettres
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
PermissiveResearch
Performance (iPhone 4)
Données NSPredicate Permissive Research
5272 villes 250ms 1s
52720 villes 2,5s 8...
PermissiveResearch
Performance (iPhone 4)
Données NSPredicate Permissive Research
5272 villes 250ms 1s
52720 villes 2,5s 8...
PermissiveResearch
Optimisation : Commençons par une heuristique
Une heuristique est une méthode de calcul qui fournit
rap...
PermissiveResearch
Optimisation : Heuristique
Données Segments
Découpage de nos données en segments, c’est un
paramètre co...
PermissiveResearch
Optimisation : Heuristique
Segments Données
Pour un segment, on sait retrouver les données associées
PermissiveResearch
Optimisation : Heuristique
autre station
Ma cherche
aut
utr
tre
sta
tat
tion
On recherche les objets av...
PermissiveResearch
Optimisation : Heuristique
SCNF
Ma cherche
SCN
CNF
On garde les X meilleurs
x
x
x
x
x
x
x
PermissiveResearch
Optimisation : Heuristique
Données NSPredicate
Permissive Research
(heuristique)
5272 villes 250ms 30ms...
PermissiveResearch
Les problèmes :
• Recherche dans un objet, il faut une ou plusieurs propriétés,
• Recherche dans des ob...
PermissiveResearch
Optimisation : Heurexacte (Heuristique + Exacte)
Données
Heuristique rapide, on supprime 90% des donnée...
PermissiveResearch
Optimisation : Heuristique
Données NSPredicate
Permissive
Research
(heuristique)
Permissive
Research
(h...
PermissiveResearch
Les améliorations à faire : matrice custom
Il faudrait faire une matrice sur pour gérer nos
pondérer no...
PermissiveResearch
Des questions ?
PermissiveResearch par Jérôme Morissard
Prochain SlideShare
Chargement dans…5
×

PermissiveResearch par Jérôme Morissard

5 941 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 941
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 854
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 ?

×