35
PermissiveResearch par Jérôme Morissard @leverdeterre leverdeterre Cocoheads / Paris - Meetup du 09/05/2015

PermissiveResearch par Jérôme Morissard

Embed Size (px)

Citation preview

Page 1: PermissiveResearch par Jérôme Morissard

PermissiveResearchpar Jérôme Morissard

@leverdeterreleverdeterre

Cocoheads / Paris - Meetup du 09/05/2015

Page 2: PermissiveResearch par Jérôme Morissard
Page 3: PermissiveResearch par Jérôme Morissard

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

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

PermissiveResearch

Page 6: PermissiveResearch par Jérôme Morissard

PermissiveResearchUn algorithme biologique

http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman

Page 7: PermissiveResearch par Jérôme Morissard

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

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

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

PermissiveResearchSmith et Waterman : Matrice de similarité (nucléotide)

Alignement nucléotides

• alphabet : 4 lettres

Page 11: PermissiveResearch par Jérôme Morissard

PermissiveResearchSmith et Waterman : Matrice de similarité (acidé aminé)

Alignement acide aminés

• alphabet : 22 lettres

Page 12: PermissiveResearch par Jérôme Morissard

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PermissiveResearchOptimisation : Heuristique

Segments Données

Pour un segment, on sait retrouver les données associées

Page 28: PermissiveResearch par Jérôme Morissard

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

PermissiveResearchOptimisation : Heuristique

SCNFMa cherche

SCN

CNF

On garde les X meilleurs

xxxxxxx

Page 30: PermissiveResearch par Jérôme Morissard

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

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

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

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

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

PermissiveResearch

Des questions ?