permissiveresearch par jérôme morissard
TRANSCRIPT
![Page 1: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/1.jpg)
PermissiveResearchpar Jérôme Morissard
@leverdeterreleverdeterre
Cocoheads / Paris - Meetup du 09/05/2015
![Page 2: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/2.jpg)
![Page 3: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/3.jpg)
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 ?
![Page 4: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/4.jpg)
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 ?
![Page 5: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/5.jpg)
PermissiveResearch
![Page 6: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/6.jpg)
PermissiveResearchUn algorithme biologique
http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
![Page 7: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/7.jpg)
PermissiveResearchUn 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.
![Page 8: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/8.jpg)
PermissiveResearchUn 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.
![Page 9: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/9.jpg)
PermissiveResearchUn algorithme de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
Séquence 1 : FATCATY Séquence 2 : CATFAST
Alignement 1Séquence 1 : FATCA-TY Séquence 2 : CATFAST
Alignement 2Séquence 1 : FATCATY——— Séquence 2 : ———CATFAST
Alignement 3
ThréonineSérine
TyrosinePhénylalanine
Pour trouver le meilleur alignement, il faut trouver le bien comprendre ce que l’on peut substituer.
![Page 10: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/10.jpg)
PermissiveResearchSmith et Waterman : Matrice de similarité (nucléotide)
Alignement nucléotides
• alphabet : 4 lettres
![Page 11: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/11.jpg)
PermissiveResearchSmith et Waterman : Matrice de similarité (acidé aminé)
Alignement acide aminés
• alphabet : 22 lettres
![Page 12: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/12.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0CAGSFA
![Page 13: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/13.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3AGSFA
Pour chaque cellule, on maximise le score
![Page 14: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/14.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6GSFA
Pour chaque cellule, on maximise le score
![Page 15: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/15.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6GSFA
Pour chaque cellule, on maximise le score
![Page 16: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/16.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6GSFA
Pour chaque cellule, on maximise le score
![Page 17: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/17.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6GSFA
Pour chaque cellule, on maximise le score
![Page 18: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/18.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6G 0 0 2 2 12 16 10SFA
![Page 19: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/19.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6G 0 0 2 2 12 16 10S 0 0 5 1 6 17 14FA
![Page 20: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/20.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6G 0 0 2 2 12 16 10S 0 0 5 1 6 17 14F 6 0 0 3 0 11 20A
![Page 21: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/21.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6G 0 0 2 2 12 16 10S 0 0 5 1 6 17 14F 6 0 0 3 0 11 20A 0 10 4 0 7 5 14
![Page 22: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/22.jpg)
PermissiveResearchUn algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY Séquence 2 : CATFAST
F A T C A T YT 0 0 5 0 0 5 0C 0 0 0 14 8 2 3A 0 4 0 8 18 12 6G 0 0 2 2 12 16 10S 0 0 5 1 6 17 14F 6 0 0 3 0 11 20A 0 10 4 0 7 5 14
![Page 23: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/23.jpg)
PermissiveResearchPerformance (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.
![Page 24: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/24.jpg)
PermissiveResearchPerformance (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)
![Page 25: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/25.jpg)
PermissiveResearchOptimisation : 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)
![Page 26: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/26.jpg)
PermissiveResearchOptimisation : Heuristique
Données Segments
Découpage de nos données en segments, c’est un paramètre configurable (ici, une longueur de 3)
![Page 27: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/27.jpg)
PermissiveResearchOptimisation : Heuristique
Segments Données
Pour un segment, on sait retrouver les données associées
![Page 28: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/28.jpg)
PermissiveResearchOptimisation : Heuristique
autre stationMa cherche
aut
utr
tre
sta
tat
tion
On recherche les objets avec un maximum d’étiquettes
![Page 29: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/29.jpg)
PermissiveResearchOptimisation : Heuristique
SCNFMa cherche
SCN
CNF
On garde les X meilleurs
xxxxxxx
![Page 30: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/30.jpg)
PermissiveResearchOptimisation : 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.
![Page 31: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/31.jpg)
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 ?
![Page 32: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/32.jpg)
PermissiveResearchOptimisation : Heurexacte (Heuristique + Exacte)
DonnéesHeuristique 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
![Page 33: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/33.jpg)
PermissiveResearchOptimisation : Heuristique
Données NSPredicatePermissive 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 :)
![Page 34: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/34.jpg)
PermissiveResearchLes améliorations à faire : matrice custom
Il faudrait faire une matrice sur pour gérer nos pondérer nos erreurs.
![Page 35: PermissiveResearch par Jérôme Morissard](https://reader033.vdocuments.pub/reader033/viewer/2022042607/55a687581a28ab341e8b45bb/html5/thumbnails/35.jpg)
PermissiveResearch
Des questions ?