J.ROCHAS,GE SONG, F.HUET
PROJET
SOUS LA DIRECTION :
SURVEY OF DIFFERENT APPROACHES FOR COMPUTING KNN ON TOP OF
MAP REDUCE
...
DEFINITIONS :
KNN = K nearest neighbors

KNN(r,S) = set KNN of r from S

KNNJ(R,S) = {r,KNN(r,S) | for all r in R}
2
Exemple
exemple pour k =3
R
s
3
Exemple
exemple pour k =3
R
s
4
R
s
Exemple
exemple pour k =3
5
Problèmes :Data deluge
Parallelisme!
6
MAP REDUCE
7
Map Reduce
MapReduce est un patron d'architecture de
développement informatique, popularisé par
Google, dans lequel sont e...
Map Reduce
Idee :
Map<K1,V1> —> list <K2, V2>

Reduce<K2,list<V2>> —> list <K3, V3>
9
KNN :
DIFFERENTS ALGORITHMES
10
2 types d’Algorithmes
KNN

reel K plus proche voisins

ANN

approximatif plus proche voisins
11
KNN : REEL
1. HBKNNJ : BASIC
2. HBNLJ : BLOC NESTED
12
HBKNNJ
Hadoop Basic K
Nearest Neighbors
Join
13
HBKNNJ :
Hadoop Basic K Nearest Neighbors Join
PRINCIPE :

2 Dataset R et S

Joindre R a S

calculer les K plus proches vo...
Tours
Nice
Paris
Toulouse
Reims
Quels sont les 2 plus proches voisins de R dans S ?
R
S
15
HBKNNJ : Hadoop Basic K
1 JOB

nice, <43, 7>

toulouse,<43, 1>

reims<49,4>

paris,<48,2>

tours,<47,1>,R
input
R
S
16
HBKNNJ : Hadoop Basic K
1 JOB

nice, <43, 7>

toulouse,<43, 1>

reims<49,4>

paris,<48,2>

tours,<47,1>,R tours,<47,1>,S
n...
HBKNNJ : Hadoop Basic K
1 JOB

nice, <43, 7>

toulouse,<43, 1>

reims<49,4>

paris,<48,2>

tours,<47,1> tours,<47,1>,S
nic...
HBKNNJ : Hadoop Basic K
1 JOB

nice, <43, 7>

toulouse,<43, 1>

reims<49,4>

paris,<48,2>

tours,<47,1> tours,<47,1>,S
nic...
Tours
Nice
Paris
Toulouse
Reims
20
HBKNNJ :
Hadoop Basic K Nearest Neighbors Join
INCONVENIENTS :

seul la phase map est mise en parallèle

AVANTAGES :
1 seu...
HBNLJ
Hadoop Block
Nested Loop Join
22
"Efficient Parallel
kNN Joins for Large
HBNLJ :
Hadoop Block Nested Loop Join
But :
On veut mettre le phase reduce en parallèle en
découpant le travail

Methode :...
HBNLJ :
Hadoop Block Nested Loop Join
Decoupage :
R1 R1 R1
R2 R2 R2
R3 R3 R3
s1
s1
s1
s2
s2
s2
s3
s3
s3
distribue R en lig...
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

25
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

Phase map
toulouse tou...
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

toulouse toulouse
nice...
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

Phase map
toulouse tou...
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

Phase map
toulouse tou...
nice
paris
tours
lyon
reims
nancy
lille
toulouse
R
S
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

Phase map
toulouse tou...
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

Phase reduce
toulouse toulouse
nice nice
paris
paris
tours
tours nancy
nanc...
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

toulouse toulouse
nice nice
paris
paris
tours
nancy
reims
reims
lyon
lyon
32
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

output
toulouse toulouse
nice nice
paris
paris
tours
nancy
reims
reims
lyon...
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

output
toulouse toulouse
nice nice
paris
paris
tours
nancy
reims
reims
lyon...
HBNLJ : Hadoop Block Nested Loop Join
1er JOB

output
toulouse toulouse
nice nice
paris
paris
tours
nancy
reims
reims
lyon...
HBNLJ : Hadoop Block Nested Loop Join
2eme JOB

toulouse,reims
toulouse,tours
toulouse,paris
toulouse,lyon
nice,reims
nice...
HBNLJ : Hadoop Block Nested Loop Join
2eme JOB

toulouse,reims
toulouse,tours
toulouse,paris
toulouse,lyon
nice,reims
nice...
HBNLJ : Hadoop Block Nested Loop Join
2eme JOB

toulouse,reims
toulouse,tours
toulouse,paris
toulouse,lyon
nice,reims
nice...
HBNLJ :
Hadoop Block Nested Loop Join
JOB 1:
calcul des
candidats
KNN( R ,S)
JOB 2:
calcul des
KNN( R ,S)
INPUT

R
INPUT

...
HBNLJ :
Hadoop Block Nested Loop Join
Avantage :
On découpe le travail en n*n reducer donc la phase
reduce peut être mis e...
HVKNNJ
Hadoop Voronoi K
Nearest Neighbors
Join
41
"Efficient
processing of k
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
Voronoi ?
c est une structure qui permet de diviser notre
espace en cellu...
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
43
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
selection pivots
44
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
diagrame voronoi
45
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
diagrame voronoi
46
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
Pb : la replication de S
pour k = 3
47
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
R
s
Pb : la replication de S
pour k = 3
48
HVKNNJ :
Hadoop Voronoi K Nearest Neighbors
Join
JOB 2:
selection du pivot
le plus proche
+statistique
ETAPE:
grouping
INP...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
strategie de pivots
Farthest :
sur un échantillon on prend le plus loin

KMean...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Probleme ?
on a n reducer et p cellule pivots comment distribuer...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Probleme ?
on a n reducer et p cellules de pivots 

comment dist...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

But
éviter la replication de S

avoir des cellule qui prennent l...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

2 strategies
Geo

Greedy
54
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Geo
Geo : Regrouper les pivots les plus proches
1
2
3
4
5
55
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Geo
Geo : Mais les cellules non pas la meme repartion
Prendra pl...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
Greedy :repartir suivant les scores et les
cellules qui o...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C ...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C ...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C ...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C ...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
Grouping ???

Greedy
2
2
2
2
1
6
1
8
10
3
pivots rep score
A E,B 28
B A,E,D,C ...
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
etape 3: grouping

Resultat :
Greedy meilleur
avec plus de reducer
63
ANN : APPROXIMATIVE
1. HZKNNJ : Z-VALUE
2. LSH : LOCALITY
64
HZKNNJ
Hadoop Z-Value K
Nearest Neighbors
Join
65
"Efficient Parallel
kNN Joins for Large
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Idee : 

Transformer d-dimension
en 1 dimension grace au
Z value

On mapp...
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
depart creation des copies
transformation basé
sur le space filling
= mapp...
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-value
z_q
z+(z_q)z-(z_q)
candidats de q
68
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
Comment faire la partition ?
69
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
70
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
71
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
2-NNcopy
72
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
2-NNcopy
73
HZKNNJ :
Hadoop Z-Value K Nearest Neighbors
Join
Z-S
Z-R
2-NN
BTree BTree BTree
cKNN cKNNcKNN
74
JOB 1:
copies
+z_value

————-

statistiques
INPUT

S
etape 0:
creation des vectors
INPUT

R
JOB 2:
calcul des
candidats
JO...
HLSH
Hadoop Locality
Sensitive Hashing
76
"Parallel Similarity
Join »
HLSH :
Hadoop Locality Sensitive Hashing
1,0,-4
6,-8,7
9,0,-8
Idee :
• hash nos objets
• les objets qui ont le meme
hashin...
HLSH :
Hadoop Locality Sensitive Hashing
1,0,-4
6,-8,7
9,0,-8
calcul des KNN des objets R
avec les objets S, du meme bucke...
La fonction de hashing
g est une famille de hash de longueur M

L famille de g
HLSH :
Hadoop Locality Sensitive Hashing
lo...
La fonction de hashing
!
!
!
a = random gaussian vector

b in [0,W]

W = définit la taille du bucket
HLSH :
Hadoop Locality...
La fonction de hashing
3 parametres
L = augmente la precision, mais augmente le temps
M = augmente probabilité que les ele...
JOB 1:
générer les
hash et calcul
statistique
ETAPE 2:
définir la
partition grace
aux statistiques
INPUT

S
etape 0:
definir...
Partition
on a plus de buckets que de reducers

Hadoop fait mal sa partition 

Définir une partition pour que chaque reduce...
HLSH :
Hadoop Locality Sensitive Hashing
Pros
rapide et moins de calcul

Cons
la fonction de hash est dataset dépendant

m...
RESUME
1. KNN
1. HBKNNJ : BASIC
2. HBNLJ : BLOC NESTED
LOOP
3. HVKNNJ : VORONOI
85
RESUME
HBKNNJ:Basic
HBNLJ:

bloc nested loop
HVKNNJ: Voronoi
HZKNNJ:zvalue
HLSH:locality
sensitve hashing
pivots
fct hash
...
EXPERIMENTATIONS
87
Contexte
Réalisé Hadoop 1.3

Sur Grid5000
88
Datasets
2 datasets
Open street map : OSM
SURF
89
Mesures
90
Temps
Precision
#data #nodes
#plus proches
voisins
Precision
recall =
| A(q)∩ I(q)|
| I(q)|
A = Actual dataset

I = Ideal dataset
91
GEOGRAPHIC DATA…
92
OSM DATA
Donnée géographiques

XML

latitude,longitude

2 dimensions
93
IMPACT SUR NOMBRE DE
NODES
94
4x10ˆ3m data
time(sec)
110
115
120
125
130
#nodes
3 10 15 18
HBKNNJ
Impact du nombre de nodes …
95
4x10ˆ3m data
time(sec)
0
37,5
75
112,5
150
#nodes
3 10 15 18
HBKNNJ : Basic HBNLJ: Bloc nested loop
Impact du nombre de no...
4x10ˆ3m data
time(sec)
0
125
250
375
500
#nodes
3 10 15 18
HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi
4x10ˆ3m ...
4x10ˆ3 data
time(sec)
0
275
550
825
1100
#nodes
3 10 15 18
HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ :...
4x10ˆ3 data
time(sec)
0
275
550
825
1100
#nodes
3 10 15 18
HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ :...
IMPACT SUR NOMBRE DE
DONNEES
100
CONFIGURATION
20 nodes

1 slots/node

K = 20 trouver K voisins le plus proches

change taille des données

mesure le temps...
Impact du nombre de données
4x10ˆ3 data
time(sec)
0
3500
7000
10500
14000
#data
50 100 200 400 800 1600
HBNLJ: bloc nested...
Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nest...
Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nest...
Impact du nombre de données
4x10ˆ3 data
time(sec)
0
10000
20000
30000
40000
#data
50 100 200 400 800 1600
HBNLJ: Bloc nest...
Impact du nombre de données
4x10ˆ3 data
time(sec)
0
1250
2500
3750
5000
#data
50 100 200 400 800 1600
HLSH : LSH HZKNNJ : ...
Impact du nombre de données
accuracy(%)
0,8
0,85
0,9
0,95
1
#data
50 200 400 800 1600
HLSH : LSH HZKNNJ : Zvalue
107
IMPACT SUR 'K'
K = LE NOMBRE DE VOISINS
SOUHAITES
108
4x10ˆ3 data
time(sec)
0
52,5
105
157,5
210
K
2 20 200 400
HBNLJ: Bloc nested loop
Impact du nombre de K … - temps
109
4x10ˆ3 data
time(sec)
0
275
550
825
1100
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi
Impact du nombre de K … - ...
4x10ˆ3 data
time(sec)
0
275
550
825
1100
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue
Impact du ...
4x10ˆ3 data
time(sec)
0
275
550
825
1100
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH...
Mais, la précision …
113
4x10ˆ3 data
accuracy
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ...
4x10ˆ3 data
time(sec)
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNN...
4x10ˆ3 data
time(sec)
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
K
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNN...
Mais si on modifie les paramètres
de la fonction de hash …
117
4x10ˆ3 data
accuracy
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
#nodes
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi H...
4x10ˆ3 data
accuracy
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
#nodes
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi H...
et par rapport au temps…
120
4x10ˆ3 data
time(sec)
0
275
550
825
1100
#nodes
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH ...
4x10ˆ3 data
time(sec)
0
275
550
825
1100
#nodes
2 20 200 400
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue
HLSH ...
4x10ˆ3 data
time(sec)
0
62,5
125
187,5
250
#nodes
2 20 200 400
HLSH : LSH HLSH : avec params changes
Impact du nombre de K...
DATA SURF…
124
DONÉE SURF
descriptor générés par l'algorithme de Speeded
Up Robust Features (SURF)

dimension 128
125
2 algorithmes partent
HBKNNJ - Basic : trop lent

HZKNNJ - Z-Value : une precision < 5% pour un
dataset de haute dimension...
IMPACT SUR NOMBRE DE
DONNEES
127
Impact du nombre de données
!
1;49724;1186657;1.0;0h19min46sec
2;100039;2276780;1.0;0h37min56sec
4;207402;4665689;1.0;1h17...
Impact du nombre de données
!
1;49724;1186657;1.0;0h19min46sec
2;100039;2276780;1.0;0h37min56sec
4;207402;4665689;1.0;1h17...
Impact du nombre de données
!
1;49724;1186657;1.0;0h19min46sec
2;100039;2276780;1.0;0h37min56sec
4;207402;4665689;1.0;1h17...
Impact du nombre de données
!
1;49724;1186657;1.0;0h19min46sec
2;100039;2276780;1.0;0h37min56sec
4;207402;4665689;1.0;1h17...
IMPACT SUR LE NOMBRE DE
NODES
132
Impact du nombre de nodes
!
1;49724;1186657;1.0;0h19min46sec
2;100039;2276780;1.0;0h37min56sec
4;207402;4665689;1.0;1h17mi...
IMPACT SUR 'K'
K = LE NOMBRE DE VOISINS
SOUHAITES
134
100x100 images : 49724 descriptors
time(sec)
0
2000
4000
6000
8000
K
2 20 200 2000
HVKNNJ: Voronoi HBNLJ: Bloc nested loop...
100x100 images : 49724 descriptors
accuracy
0
0,25
0,5
0,75
1
K
2 20 200 2000
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH...
100x100 images : 49724 descriptors
accuracy
0
0,25
0,5
0,75
1
K
2 20 200 2000
HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH...
100x100 images : 49724 descriptors
time(sec)
0
2000
4000
6000
8000
K
2 20 200 2000
HVKNNJ: Voronoi HBNLJ: Bloc nested loop...
100x100 images : 49724 descriptors
time(sec)
0
2000
4000
6000
8000
K
2 20 200 2000
HVKNNJ: Voronoi HBNLJ: Bloc nested loop...
DIFFICULTES DE TROUVER LES
PARAMETRES POUR CHAQUE
ALGORITHME …
140
HBKNNJ : BASIC
• NOMBRE DE SLOTS
141
4x10ˆ3 data
time(sec)
110
115
120
125
130
#nodes
3 10 15 18
HBKNNJ
HBKNNJ - BASIC : I.NombreContexte : K=20, 20 nodes, 1 s...
HBNNLJ : BLOC NESTED LOOP
• CHOIX DU NOMBRE DE
REDUCER
• BALANCING
143
HBNNLJ : BLOC NESTEDtime(sec)
0
400
800
1200
1600
2000
2400
2800
3200
3600
4000
nombre de reducers
5x5 6x6 7x7 8x8 9x9
5m ...
on découpe en n*n reducers le travail

optimiser le parallélisme le plus possible , en découpant
le travail suivant le nom...
time(sec)
0
400
800
1200
1600
2000
2400
2800
3200
3600
4000
nombre de reducers
5x5 6x6 7x7 8x8 9x9
5m 50m 100m
Contexte : ...
Contexte : K=20, 15 nodes, 1 slot/nodes, 100000 données
HBNNLJ : BLOC NESTED
147
HVKNNJ : VORONOI
• STRATEGIE DE PIVOT
• NOMBRE DE PIVOT
• STRATEGIE DE GROUPING
148
1.CHOIX DE LA STRATEGIE DE PIVOTS
149
Contexte : K=20, 15 nodes, 1 slot/nodes, dimension=2
farthest kmeans
HVKNNJ : VORONOI:
150
2.IMPACT DU NOMBRE DE PIVOTS
151
time(sec)
200
360
520
680
840
1000
#pivots
6 30 300 500 1500 3000 4000
5M 50M 100M
+depivots=javaheapspace
min
min
min
Con...
3.CHOIX DE LA STRATEGIE DE GROUPING
GEO VS GREEDY
153
HVKNNJ : VORONOI:
154
geo avec 20
reducers
HVKNNJ : VORONOI:
155
greedy avec 20
reducers
HVKNNJ : VORONOI:
156
greedy avec 50
reducers
HVKNNJ : VORONOI:
157
HZKNNJ : ZVALUE
• #DONNÉES VS PRECISION
• DIMENSION VS PRECISION
158
1.#Données vs PRECISION
159
accuracy
0,72
0,79
0,86
0,93
1
time(sec)
0
65
130
195
260
#data*1000
50 100 400 800 1600
time (sec) accurancy
Contexte : K...
accuracy
0,6
0,7
0,8
0,9
1
time(sec)
0
150
300
450
600
#copy
1 2 3 4
time (sec) accurancy
161
Contexte : K=20, 15 nodes, 1...
2.Dimension vs PRECISION
162
accuracy(%)
4,68
4,693
4,705
4,718
4,73
time(s)
0
80
160
240
#copy
1 4 Sans titre 1 8 10
time (s) accurancy(%)
Contexte : ...
HLSH : LOCALITY SENSITIVE
HASHING
• FONCTION DE HASHING
164
1.Partition
165
Contexte : K=20, 20 nodes, 1 slot/nodes, file osm , dimension=2,#donnés=100000
166
HLSH : Locality Sensitive
2.La fonction de hashing
167
La fonction
de Hashing
Difficulté:

trouver
une
bonne
precision

un bon
temps
Contexte : K=20, 20 nodes, 1 slot/nodes, file o...
La fonction de
Hashing
change W
impact sur la
nombre des
bucket

- buckets => +
elements/buckets
Contexte : K=20, 20 nodes...
L=1,M=2
accuracy(%)
0
12,5
25
37,5
50
time(s)
0
3000
6000
9000
12000
W
5000000 15000000
M=7,W=
5000000
accuracy(%)0
15
30
...
RESUMONS
171
A chacun ses problèmes
HBKNNJ :

Basic
pas assez de parallèles,

trop de calcul
HBNLJ :

Bloc Nested
Loop
trop de replicat...
CONCLUSION
Expérimentations très difficiles, 

beaucoup de paramètres.

Aucun algorithme est meilleur que tous les
autres

d...
USE CASE
SIMILARITE ENTRE DES IMAGES
ALGORITHME : NEAREST NEIGHBORS RATIO
174
Les descripteurs ?
175
Calculer la similarité
176
Exemple :
177
Similarité entre les images
ETAPE 1:
calcul des des

matching

grace a nos
différents
algorithmes
ETAPE 2:
calcul des K
plu...
Impact du nombre de données
time(sec)
0
3500
7000
10500
14000
#image/category
1 2 4 6 8 16
HBNLJ HVKNNJ HLSH
179
input
map reduce output
HVKNNJ : Hadoop Voronoi K Nearest Neighbors
JOB 3: KNN

assignation a
son groupe
KNN(r2,S)
p_r,r
g...
hash,r1
hash,r2
S
R
hash,s3
hash,s2
hash,s1
statistique des 

buckets,

et suppression
des buckets
input map reduce output...
hash,r1
hash,r2
hash,s3
hash,s2
hash,s1
calcul du
partitionnement

des buckets
input map reduce output
knn
definit a quel
r...
Prochain SlideShare
Chargement dans…5
×

Survey of different approaches for computing KNN on top of Map Reduce

219 vues

Publié le

Survey of different approaches for computing KNN on top of Map Reduce :
There are two kinds algorithms :
KNN : the real k nearest neighbors
-> basic
-> hbnlj : hadoop bloc nest loop
-> voronoi : with indexation of cell of voronoi
AKNN : the approximate nearest neighbors
-> z-value : with space filling curve
-> hlsh : hadoop locality sensitive hashing

Publié dans : Données & analyses
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
219
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Survey of different approaches for computing KNN on top of Map Reduce

  1. 1. J.ROCHAS,GE SONG, F.HUET PROJET SOUS LA DIRECTION : SURVEY OF DIFFERENT APPROACHES FOR COMPUTING KNN ON TOP OF MAP REDUCE LEA EL BEZE 1
  2. 2. DEFINITIONS : KNN = K nearest neighbors KNN(r,S) = set KNN of r from S KNNJ(R,S) = {r,KNN(r,S) | for all r in R} 2
  3. 3. Exemple exemple pour k =3 R s 3
  4. 4. Exemple exemple pour k =3 R s 4
  5. 5. R s Exemple exemple pour k =3 5
  6. 6. Problèmes :Data deluge Parallelisme! 6
  7. 7. MAP REDUCE 7
  8. 8. Map Reduce MapReduce est un patron d'architecture de développement informatique, popularisé par Google, dans lequel sont effectués des calculs parallèles, et souvent distribués, de données potentiellement très volumineuses (Wikipedia) 8
  9. 9. Map Reduce Idee : Map<K1,V1> —> list <K2, V2> Reduce<K2,list<V2>> —> list <K3, V3> 9
  10. 10. KNN : DIFFERENTS ALGORITHMES 10
  11. 11. 2 types d’Algorithmes KNN reel K plus proche voisins ANN approximatif plus proche voisins 11
  12. 12. KNN : REEL 1. HBKNNJ : BASIC 2. HBNLJ : BLOC NESTED 12
  13. 13. HBKNNJ Hadoop Basic K Nearest Neighbors Join 13
  14. 14. HBKNNJ : Hadoop Basic K Nearest Neighbors Join PRINCIPE : 2 Dataset R et S Joindre R a S calculer les K plus proches voisins de R dans S 14
  15. 15. Tours Nice Paris Toulouse Reims Quels sont les 2 plus proches voisins de R dans S ? R S 15
  16. 16. HBKNNJ : Hadoop Basic K 1 JOB nice, <43, 7> toulouse,<43, 1> reims<49,4> paris,<48,2> tours,<47,1>,R input R S 16
  17. 17. HBKNNJ : Hadoop Basic K 1 JOB nice, <43, 7> toulouse,<43, 1> reims<49,4> paris,<48,2> tours,<47,1>,R tours,<47,1>,S nice, <43, 7>,R reims,<49,4>,S paris, <48,2>,S toulouse<43,1> R input map R S 17
  18. 18. HBKNNJ : Hadoop Basic K 1 JOB nice, <43, 7> toulouse,<43, 1> reims<49,4> paris,<48,2> tours,<47,1> tours,<47,1>,S nice, <43, 7>,R nice |nice,reims| = 6.7 |nice,paris| = 7 |nice,tours| = 6 ! ! toulouse | toulouse,reims| = 6.7 |toulouse,paris| = 5 | toulouse,tours| = 2 reims,<49,4>,S paris, <48,2>,S toulouse<43,1> R input map reduce R S 18
  19. 19. HBKNNJ : Hadoop Basic K 1 JOB nice, <43, 7> toulouse,<43, 1> reims<49,4> paris,<48,2> tours,<47,1> tours,<47,1>,S nice, <43, 7>,R nice |nice,reims| = 6.7 |nice,paris| = 7 |nice,tours| = 6 ! ! toulouse | toulouse,reims| = 6.7 |toulouse,paris| = 5 | toulouse,tours| = 2 reims,<49,4>,S paris, <48,2>,S toulouse<43,1> R nice,tours 6 nice,reims 6.7 toulouse,paris 5 toulouse,tours 2 input map reduce output R S 19
  20. 20. Tours Nice Paris Toulouse Reims 20
  21. 21. HBKNNJ : Hadoop Basic K Nearest Neighbors Join INCONVENIENTS : seul la phase map est mise en parallèle AVANTAGES : 1 seul job map reduce EN PRATIQUE : utile pour des petits dataset mais devient très vite cher en temps pour des plus grand dataset 21
  22. 22. HBNLJ Hadoop Block Nested Loop Join 22 "Efficient Parallel kNN Joins for Large
  23. 23. HBNLJ : Hadoop Block Nested Loop Join But : On veut mettre le phase reduce en parallèle en découpant le travail Methode : Découper R et S en n*n reducer 23
  24. 24. HBNLJ : Hadoop Block Nested Loop Join Decoupage : R1 R1 R1 R2 R2 R2 R3 R3 R3 s1 s1 s1 s2 s2 s2 s3 s3 s3 distribue R en ligne distribue S en colonne 24
  25. 25. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB 25
  26. 26. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB Phase map toulouse toulouse 26
  27. 27. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB toulouse toulouse nice nice 27
  28. 28. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB Phase map toulouse toulouse nice nice paris paris 28
  29. 29. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB Phase map toulouse toulouse nice nice paris paris nancy nancy 29
  30. 30. nice paris tours lyon reims nancy lille toulouse R S HBNLJ : Hadoop Block Nested Loop Join 1er JOB Phase map toulouse toulouse nice nice paris paris tours tours nancy nancy reims reims lyon lyon lille lille 30
  31. 31. HBNLJ : Hadoop Block Nested Loop Join 1er JOB Phase reduce toulouse toulouse nice nice paris paris tours tours nancy nancy reims reims lyon lyon lille lille 31
  32. 32. HBNLJ : Hadoop Block Nested Loop Join 1er JOB toulouse toulouse nice nice paris paris tours nancy reims reims lyon lyon 32
  33. 33. HBNLJ : Hadoop Block Nested Loop Join 1er JOB output toulouse toulouse nice nice paris paris tours nancy reims reims lyon lyon toulouse,paris toulouse,lyon 33
  34. 34. HBNLJ : Hadoop Block Nested Loop Join 1er JOB output toulouse toulouse nice nice paris paris tours nancy reims reims lyon lyon toulouse,reims toulouse,tours toulouse,paris toulouse,lyon 34
  35. 35. HBNLJ : Hadoop Block Nested Loop Join 1er JOB output toulouse toulouse nice nice paris paris tours nancy reims reims lyon lyon toulouse,reims toulouse,tours toulouse,paris toulouse,lyon nice,reims nice,nancy nice,paris nice,lyon candidats 35
  36. 36. HBNLJ : Hadoop Block Nested Loop Join 2eme JOB toulouse,reims toulouse,tours toulouse,paris toulouse,lyon nice,reims nice,nancy nice,paris nice,lyon 36
  37. 37. HBNLJ : Hadoop Block Nested Loop Join 2eme JOB toulouse,reims toulouse,tours toulouse,paris toulouse,lyon nice,reims nice,nancy nice,paris nice,lyon <toulouse> reims,tours,paris,lyon <nice> reims,nancy,paris,lyon 37
  38. 38. HBNLJ : Hadoop Block Nested Loop Join 2eme JOB toulouse,reims toulouse,tours toulouse,paris toulouse,lyon nice,reims nice,nancy nice,paris nice,lyon <toulouse> reims,tours,paris,lyon <nice> reims,nancy,paris,lyon nice,lyon nice,paris toulouse,lyon toulouse,tours 38
  39. 39. HBNLJ : Hadoop Block Nested Loop Join JOB 1: calcul des candidats KNN( R ,S) JOB 2: calcul des KNN( R ,S) INPUT R INPUT S 39
  40. 40. HBNLJ : Hadoop Block Nested Loop Join Avantage : On découpe le travail en n*n reducer donc la phase reduce peut être mis en parallèle. Inconvenient : replication de R et S n fois on a en sortit que les cKNN(R, S) , c’est a dire les candidats pour les KNN(R,S) implique un 2nd job pour les KNN(R,S) 40
  41. 41. HVKNNJ Hadoop Voronoi K Nearest Neighbors Join 41 "Efficient processing of k
  42. 42. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join Voronoi ? c est une structure qui permet de diviser notre espace en cellule… 42
  43. 43. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s 43
  44. 44. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s selection pivots 44
  45. 45. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s diagrame voronoi 45
  46. 46. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s diagrame voronoi 46
  47. 47. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s Pb : la replication de S pour k = 3 47
  48. 48. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join R s Pb : la replication de S pour k = 3 48
  49. 49. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Join JOB 2: selection du pivot le plus proche +statistique ETAPE: grouping INPUT R INPUT S JOB 1: generer les pivots INPUT R JOB 3: calcul des KNN 49
  50. 50. HVKNNJ : Hadoop Voronoi K Nearest Neighbors strategie de pivots Farthest : sur un échantillon on prend le plus loin KMeans : sur un échantillon on prend un nombre de centroides qui seront les pivots 50
  51. 51. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Probleme ? on a n reducer et p cellule pivots comment distribuer p dans n ? But ? regrouper les pivots pour minimiser la replication de S avoir un bon balancing (temps equivalent pour les slots) 51
  52. 52. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Probleme ? on a n reducer et p cellules de pivots comment distribuer p dans n ? 4 reducers 52
  53. 53. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? But éviter la replication de S avoir des cellule qui prennent le meme temps:good balancing 53
  54. 54. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? 2 strategies Geo Greedy 54
  55. 55. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Geo Geo : Regrouper les pivots les plus proches 1 2 3 4 5 55
  56. 56. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Geo Geo : Mais les cellules non pas la meme repartion Prendra plus longtemps que les autres 56
  57. 57. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy Greedy :repartir suivant les scores et les cellules qui ont le plus de replication commun grace au stat : on peut borner les réplications des cellules et donc la complexité en temps c(v) = complexité d une cellule c(v)=#r*(#s+#rep) 57
  58. 58. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy 2 2 2 2 1 6 1 8 10 3 pivots rep score A E,B 28 B A,E,D,C 40 C B,D 15 D E,B,C 25 E A,B,D 44 1 A B C D E 2 reducers groupe score 58
  59. 59. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy 2 2 2 2 1 6 1 8 10 3 pivots rep score A E,B 28 B A,E,D,C 40 C B,D 15 D E,B,C 25 E A,B,D 44 1 A B C D E 2 reducers groupe score 28 15 A C 59
  60. 60. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy 2 2 2 2 1 6 1 8 10 3 pivots rep score A E,B 28 B A,E,D,C 40 C B,D 15 D E,B,C 25 E A,B,D 44 1 A B C D E 2 reducers groupe score 28 55 A C B 60
  61. 61. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy 2 2 2 2 1 6 1 8 10 3 pivots rep score A E,B 28 B A,E,D,C 40 C B,D 15 D E,B,C 25 E A,B,D 44 1 A B C D E 2 reducers groupe score 72 55 A C B E 61
  62. 62. HVKNNJ : Hadoop Voronoi K Nearest Neighbors Grouping ??? Greedy 2 2 2 2 1 6 1 8 10 3 pivots rep score A E,B 28 B A,E,D,C 40 C B,D 15 D E,B,C 25 E A,B,D 44 1 A B C D E 2 reducers groupe score 72 80 A C B E D 62
  63. 63. HVKNNJ : Hadoop Voronoi K Nearest Neighbors etape 3: grouping Resultat : Greedy meilleur avec plus de reducer 63
  64. 64. ANN : APPROXIMATIVE 1. HZKNNJ : Z-VALUE 2. LSH : LOCALITY 64
  65. 65. HZKNNJ Hadoop Z-Value K Nearest Neighbors Join 65 "Efficient Parallel kNN Joins for Large
  66. 66. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Idee : Transformer d-dimension en 1 dimension grace au Z value On mappe les 1 dimension pour trouver les KNNJ 66
  67. 67. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join depart creation des copies transformation basé sur le space filling = mappe sur 1-D 67
  68. 68. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-value z_q z+(z_q)z-(z_q) candidats de q 68
  69. 69. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R Comment faire la partition ? 69
  70. 70. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R 70
  71. 71. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R 71
  72. 72. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R 2-NNcopy 72
  73. 73. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R 2-NNcopy 73
  74. 74. HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join Z-S Z-R 2-NN BTree BTree BTree cKNN cKNNcKNN 74
  75. 75. JOB 1: copies +z_value ————- statistiques INPUT S etape 0: creation des vectors INPUT R JOB 2: calcul des candidats JOB 3: calcul des KNN HZKNNJ : Hadoop Z-Value K Nearest Neighbors Join 75
  76. 76. HLSH Hadoop Locality Sensitive Hashing 76 "Parallel Similarity Join »
  77. 77. HLSH : Hadoop Locality Sensitive Hashing 1,0,-4 6,-8,7 9,0,-8 Idee : • hash nos objets • les objets qui ont le meme hashing sont dans le meme bucket • =cherche de collision 77
  78. 78. HLSH : Hadoop Locality Sensitive Hashing 1,0,-4 6,-8,7 9,0,-8 calcul des KNN des objets R avec les objets S, du meme bucket bucket vide (pas de R) = eliminé 78
  79. 79. La fonction de hashing g est une famille de hash de longueur M L famille de g HLSH : Hadoop Locality Sensitive Hashing longueur M objet h1,h2…,hm h1,h2…,hm hash L fois 79
  80. 80. La fonction de hashing ! ! ! a = random gaussian vector b in [0,W] W = définit la taille du bucket HLSH : Hadoop Locality Sensitive Hashing h(v) = a• v + b W ⎢ ⎣⎢ ⎥ ⎦⎥ 80
  81. 81. La fonction de hashing 3 parametres L = augmente la precision, mais augmente le temps M = augmente probabilité que les elements proches sont dans le meme bucket W = la taille de la fenêtre HLSH : Hadoop Locality Sensitive Hashing 81
  82. 82. JOB 1: générer les hash et calcul statistique ETAPE 2: définir la partition grace aux statistiques INPUT S etape 0: definir les hash value INPUT R JOB 2: calcul des KNN des buckets =candidats JOB 3: calcul des KNN HLSH : Hadoop Locality Sensitive Hashing 82
  83. 83. Partition on a plus de buckets que de reducers Hadoop fait mal sa partition Définir une partition pour que chaque reducer ait la meme complexité en temps soit P reducer tmps(P) = Sum(#ri*#si) i=bucket HLSH : Hadoop Locality Sensitive Hashing 83
  84. 84. HLSH : Hadoop Locality Sensitive Hashing Pros rapide et moins de calcul Cons la fonction de hash est dataset dépendant mais il a été prouvée que ce type de fonctions étaient plus efficace on n a pas l’idée de replication des buckets si pas assez d'éléments. peut être améliorer (Multi probe, LSH forest, ….) 84
  85. 85. RESUME 1. KNN 1. HBKNNJ : BASIC 2. HBNLJ : BLOC NESTED LOOP 3. HVKNNJ : VORONOI 85
  86. 86. RESUME HBKNNJ:Basic HBNLJ: bloc nested loop HVKNNJ: Voronoi HZKNNJ:zvalue HLSH:locality sensitve hashing pivots fct hash shifts,reduction dimension Preprocessing calcul du partitionement/grouping calcul KNN calcul des candidats partition candidats 86
  87. 87. EXPERIMENTATIONS 87
  88. 88. Contexte Réalisé Hadoop 1.3 Sur Grid5000 88
  89. 89. Datasets 2 datasets Open street map : OSM SURF 89
  90. 90. Mesures 90 Temps Precision #data #nodes #plus proches voisins
  91. 91. Precision recall = | A(q)∩ I(q)| | I(q)| A = Actual dataset I = Ideal dataset 91
  92. 92. GEOGRAPHIC DATA… 92
  93. 93. OSM DATA Donnée géographiques XML latitude,longitude 2 dimensions 93
  94. 94. IMPACT SUR NOMBRE DE NODES 94
  95. 95. 4x10ˆ3m data time(sec) 110 115 120 125 130 #nodes 3 10 15 18 HBKNNJ Impact du nombre de nodes … 95
  96. 96. 4x10ˆ3m data time(sec) 0 37,5 75 112,5 150 #nodes 3 10 15 18 HBKNNJ : Basic HBNLJ: Bloc nested loop Impact du nombre de nodes … 96
  97. 97. 4x10ˆ3m data time(sec) 0 125 250 375 500 #nodes 3 10 15 18 HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi 4x10ˆ3m data 0 2000 4000 6000 8000 #nodes 3 10 15 18 Impact du nombre de nodes … 97
  98. 98. 4x10ˆ3 data time(sec) 0 275 550 825 1100 #nodes 3 10 15 18 HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue 200x10ˆ3 data 0 2000 4000 6000 8000 #nodes 3 10 15 18 4000x10ˆ3 data 0 2000 4000 6000 8000 #nodes 3 10 15 18 Impact du nombre de nodes … 98
  99. 99. 4x10ˆ3 data time(sec) 0 275 550 825 1100 #nodes 3 10 15 18 HBKNNJ : Basic HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH 200x10ˆ3 data 0 2000 4000 6000 8000 #nodes 3 10 15 18 4000x10ˆ3 data 0 2000 4000 6000 8000 #nodes 3 10 15 18 Impact du nombre de nodes … 99
  100. 100. IMPACT SUR NOMBRE DE DONNEES 100
  101. 101. CONFIGURATION 20 nodes 1 slots/node K = 20 trouver K voisins le plus proches change taille des données mesure le temps Impact du nombre de données … : temps 101
  102. 102. Impact du nombre de données 4x10ˆ3 data time(sec) 0 3500 7000 10500 14000 #data 50 100 200 400 800 1600 HBNLJ: bloc nested loop 102
  103. 103. Impact du nombre de données 4x10ˆ3 data time(sec) 0 10000 20000 30000 40000 #data 50 100 200 400 800 1600 HBNLJ: Bloc nested loop HVKNNJ: Voronoi 103
  104. 104. Impact du nombre de données 4x10ˆ3 data time(sec) 0 10000 20000 30000 40000 #data 50 100 200 400 800 1600 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH 104
  105. 105. Impact du nombre de données 4x10ˆ3 data time(sec) 0 10000 20000 30000 40000 #data 50 100 200 400 800 1600 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH HZKNNJ : Zvalue 105
  106. 106. Impact du nombre de données 4x10ˆ3 data time(sec) 0 1250 2500 3750 5000 #data 50 100 200 400 800 1600 HLSH : LSH HZKNNJ : Zvalue 106
  107. 107. Impact du nombre de données accuracy(%) 0,8 0,85 0,9 0,95 1 #data 50 200 400 800 1600 HLSH : LSH HZKNNJ : Zvalue 107
  108. 108. IMPACT SUR 'K' K = LE NOMBRE DE VOISINS SOUHAITES 108
  109. 109. 4x10ˆ3 data time(sec) 0 52,5 105 157,5 210 K 2 20 200 400 HBNLJ: Bloc nested loop Impact du nombre de K … - temps 109
  110. 110. 4x10ˆ3 data time(sec) 0 275 550 825 1100 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi Impact du nombre de K … - temps 110
  111. 111. 4x10ˆ3 data time(sec) 0 275 550 825 1100 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue Impact du nombre de K … - temps 111
  112. 112. 4x10ˆ3 data time(sec) 0 275 550 825 1100 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH Impact du nombre de K … - temps 112
  113. 113. Mais, la précision … 113
  114. 114. 4x10ˆ3 data accuracy 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH Impact du nombre de K … - précision 114
  115. 115. 4x10ˆ3 data time(sec) 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH Impact du nombre de K … - précision 115
  116. 116. 4x10ˆ3 data time(sec) 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 K 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH Impact du nombre de K … - précision 116
  117. 117. Mais si on modifie les paramètres de la fonction de hash … 117
  118. 118. 4x10ˆ3 data accuracy 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 #nodes 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH HLSH Impact du nombre de K … - précision 118
  119. 119. 4x10ˆ3 data accuracy 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1 #nodes 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH HLSH HLSH : avec params changes Impact du nombre de nodes … 119
  120. 120. et par rapport au temps… 120
  121. 121. 4x10ˆ3 data time(sec) 0 275 550 825 1100 #nodes 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH HLSH Impact du nombre de K … - temps 121
  122. 122. 4x10ˆ3 data time(sec) 0 275 550 825 1100 #nodes 2 20 200 400 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HZKNNJ : Zvalue HLSH : LSH HLSH HLSH : avec params changes Impact du nombre de K … - temps 122
  123. 123. 4x10ˆ3 data time(sec) 0 62,5 125 187,5 250 #nodes 2 20 200 400 HLSH : LSH HLSH : avec params changes Impact du nombre de K … - temps 123
  124. 124. DATA SURF… 124
  125. 125. DONÉE SURF descriptor générés par l'algorithme de Speeded Up Robust Features (SURF) dimension 128 125
  126. 126. 2 algorithmes partent HBKNNJ - Basic : trop lent HZKNNJ - Z-Value : une precision < 5% pour un dataset de haute dimension(>30) 126
  127. 127. IMPACT SUR NOMBRE DE DONNEES 127
  128. 128. Impact du nombre de données ! 1;49724;1186657;1.0;0h19min46sec 2;100039;2276780;1.0;0h37min56sec 4;207402;4665689;1.0;1h17min45sec 8;409052;9273714;1.0;2h34min33sec time(sec) 0 4500 9000 13500 18000 images 100 200 400 800 1600 HVKNNJ: Voronoi 128
  129. 129. Impact du nombre de données ! 1;49724;1186657;1.0;0h19min46sec 2;100039;2276780;1.0;0h37min56sec 4;207402;4665689;1.0;1h17min45sec 8;409052;9273714;1.0;2h34min33sec time(sec) 0 7500 15000 22500 30000 images 100 200 400 800 1600 HVKNNJ: Voronoi HBNLJ: Bloc nested loop 129
  130. 130. Impact du nombre de données ! 1;49724;1186657;1.0;0h19min46sec 2;100039;2276780;1.0;0h37min56sec 4;207402;4665689;1.0;1h17min45sec 8;409052;9273714;1.0;2h34min33sec time(sec) 0 7500 15000 22500 30000 images 100 200 400 800 1600 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH 130
  131. 131. Impact du nombre de données ! 1;49724;1186657;1.0;0h19min46sec 2;100039;2276780;1.0;0h37min56sec 4;207402;4665689;1.0;1h17min45sec 8;409052;9273714;1.0;2h34min33sec 4x10ˆ3 data accuracy 0 0,25 0,5 0,75 1 images 100 200 400 800 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH 131
  132. 132. IMPACT SUR LE NOMBRE DE NODES 132
  133. 133. Impact du nombre de nodes ! 1;49724;1186657;1.0;0h19min46sec 2;100039;2276780;1.0;0h37min56sec 4;207402;4665689;1.0;1h17min45sec 8;409052;9273714;1.0;2h34min33sec time(sec) 0 1500 3000 4500 6000 #nodes 10 20 30 40 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH 133
  134. 134. IMPACT SUR 'K' K = LE NOMBRE DE VOISINS SOUHAITES 134
  135. 135. 100x100 images : 49724 descriptors time(sec) 0 2000 4000 6000 8000 K 2 20 200 2000 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH Impact du nombre de K … - temps Contexte : 20 nodes, 1 slot/nodes 135
  136. 136. 100x100 images : 49724 descriptors accuracy 0 0,25 0,5 0,75 1 K 2 20 200 2000 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH Impact du nombre de K … - temps Contexte : 20 nodes, 1 slot/nodes 136
  137. 137. 100x100 images : 49724 descriptors accuracy 0 0,25 0,5 0,75 1 K 2 20 200 2000 HBNLJ: Bloc nested loop HVKNNJ: Voronoi HLSH : LSH HLSH with best acc Impact du nombre de K … - temps Contexte : 20 nodes, 1 slot/nodes 137
  138. 138. 100x100 images : 49724 descriptors time(sec) 0 2000 4000 6000 8000 K 2 20 200 2000 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH Impact du nombre de K … - temps Contexte : 20 nodes, 1 slot/nodes 138
  139. 139. 100x100 images : 49724 descriptors time(sec) 0 2000 4000 6000 8000 K 2 20 200 2000 HVKNNJ: Voronoi HBNLJ: Bloc nested loop HLSH : LSH HLSH with best acc Impact du nombre de K … - temps Contexte : 20 nodes, 1 slot/nodes 139
  140. 140. DIFFICULTES DE TROUVER LES PARAMETRES POUR CHAQUE ALGORITHME … 140
  141. 141. HBKNNJ : BASIC • NOMBRE DE SLOTS 141
  142. 142. 4x10ˆ3 data time(sec) 110 115 120 125 130 #nodes 3 10 15 18 HBKNNJ HBKNNJ - BASIC : I.NombreContexte : K=20, 20 nodes, 1 slot/nodes,dimension=2 142
  143. 143. HBNNLJ : BLOC NESTED LOOP • CHOIX DU NOMBRE DE REDUCER • BALANCING 143
  144. 144. HBNNLJ : BLOC NESTEDtime(sec) 0 400 800 1200 1600 2000 2400 2800 3200 3600 4000 nombre de reducers 5x5 6x6 7x7 8x8 9x9 5m 50m 100m Contexte : K=20, 15 nodes, 1 slot/nodes min min min 144
  145. 145. on découpe en n*n reducers le travail optimiser le parallélisme le plus possible , en découpant le travail suivant le nombre de slots disponibles : on a 15 nodes : choisir 5x5 est pas optimal car on fait travailler 15 nodes puis 10 nodes , 5 resteront inactif choisir 7x7 est mieux 49 : 15+15+15 juste 4 reste inactif 8x8 = 64 = 15 *4 +4 mieux pr good balancing mais plus de reducer = moins de travail par case HBNNLJ : BLOC NESTED 145
  146. 146. time(sec) 0 400 800 1200 1600 2000 2400 2800 3200 3600 4000 nombre de reducers 5x5 6x6 7x7 8x8 9x9 5m 50m 100m Contexte : K=20, 15 nodes, 1 slot/nodes min min min HBNNLJ : BLOC NESTED 146
  147. 147. Contexte : K=20, 15 nodes, 1 slot/nodes, 100000 données HBNNLJ : BLOC NESTED 147
  148. 148. HVKNNJ : VORONOI • STRATEGIE DE PIVOT • NOMBRE DE PIVOT • STRATEGIE DE GROUPING 148
  149. 149. 1.CHOIX DE LA STRATEGIE DE PIVOTS 149
  150. 150. Contexte : K=20, 15 nodes, 1 slot/nodes, dimension=2 farthest kmeans HVKNNJ : VORONOI: 150
  151. 151. 2.IMPACT DU NOMBRE DE PIVOTS 151
  152. 152. time(sec) 200 360 520 680 840 1000 #pivots 6 30 300 500 1500 3000 4000 5M 50M 100M +depivots=javaheapspace min min min Contexte : K=5, 3 nodes, 1 slot/nodes HVKNNJ : VORONOI: 152
  153. 153. 3.CHOIX DE LA STRATEGIE DE GROUPING GEO VS GREEDY 153
  154. 154. HVKNNJ : VORONOI: 154
  155. 155. geo avec 20 reducers HVKNNJ : VORONOI: 155
  156. 156. greedy avec 20 reducers HVKNNJ : VORONOI: 156
  157. 157. greedy avec 50 reducers HVKNNJ : VORONOI: 157
  158. 158. HZKNNJ : ZVALUE • #DONNÉES VS PRECISION • DIMENSION VS PRECISION 158
  159. 159. 1.#Données vs PRECISION 159
  160. 160. accuracy 0,72 0,79 0,86 0,93 1 time(sec) 0 65 130 195 260 #data*1000 50 100 400 800 1600 time (sec) accurancy Contexte : K=20, 15 nodes, 1 slot/nodes, dimension=2, 1 copie 160 HZKNNJ : ZVALUE
  161. 161. accuracy 0,6 0,7 0,8 0,9 1 time(sec) 0 150 300 450 600 #copy 1 2 3 4 time (sec) accurancy 161 Contexte : K=20, 15 nodes, 1 slot/nodes, dimension=2, 1 copie HZKNNJ : ZVALUE
  162. 162. 2.Dimension vs PRECISION 162
  163. 163. accuracy(%) 4,68 4,693 4,705 4,718 4,73 time(s) 0 80 160 240 #copy 1 4 Sans titre 1 8 10 time (s) accurancy(%) Contexte : K=20, 15 nodes, 1 slot/nodes, file surf , dimension=128,#donnés=50000 nombre limité de copie <5% 163 HZKNNJ : ZVALUE
  164. 164. HLSH : LOCALITY SENSITIVE HASHING • FONCTION DE HASHING 164
  165. 165. 1.Partition 165
  166. 166. Contexte : K=20, 20 nodes, 1 slot/nodes, file osm , dimension=2,#donnés=100000 166 HLSH : Locality Sensitive
  167. 167. 2.La fonction de hashing 167
  168. 168. La fonction de Hashing Difficulté: trouver une bonne precision un bon temps Contexte : K=20, 20 nodes, 1 slot/nodes, file osm , dimension=2,#donnés=400000 168 HLSH : Locality Sensitive
  169. 169. La fonction de Hashing change W impact sur la nombre des bucket - buckets => + elements/buckets Contexte : K=20, 20 nodes, 1 slot/nodes, file osm , dimension=2,#donnés=400000 169 HLSH : Locality Sensitive
  170. 170. L=1,M=2 accuracy(%) 0 12,5 25 37,5 50 time(s) 0 3000 6000 9000 12000 W 5000000 15000000 M=7,W= 5000000 accuracy(%)0 15 30 45 60 time(s) 0 1000 2000 3000 4000 L 1 2 4 6 L=1,W= 5000000 accuracy(%) 0 12,5 25 37,5 50 time(s) 0 2250 4500 6750 9000 M 2 6 14 Contexte : K=20, 8 nodes, 1 slot/nodes, file surf , dimension=128,#donnés=400000 170 HLSH : Locality Sensitive
  171. 171. RESUMONS 171
  172. 172. A chacun ses problèmes HBKNNJ : Basic pas assez de parallèles, trop de calcul HBNLJ : Bloc Nested Loop trop de replications, trop de calcul inutiles HVKNNJ: Voronoi beaucoup de calcul, et long pour HD peut etre risqué si mauvais choix de pivots Mieux pr data disperse HZKNNJ Z-Value precision pas stable pour #data très bon pour petite dimension < 30 très mauvais pour HD HLSH Locality Sensitive Hashing precision pas stable pour K grand • difficultés des choix des paramètres: • depend de K • depend du dataset tres utile pour l'use case des matching, car debase de beaucoup de candidats 172
  173. 173. CONCLUSION Expérimentations très difficiles, beaucoup de paramètres. Aucun algorithme est meilleur que tous les autres dépendent du dataset 173
  174. 174. USE CASE SIMILARITE ENTRE DES IMAGES ALGORITHME : NEAREST NEIGHBORS RATIO 174
  175. 175. Les descripteurs ? 175
  176. 176. Calculer la similarité 176
  177. 177. Exemple : 177
  178. 178. Similarité entre les images ETAPE 1: calcul des des matching grace a nos différents algorithmes ETAPE 2: calcul des K plus hauts scores images S Images R OUTPUT les K images similaires pour chaque images 178
  179. 179. Impact du nombre de données time(sec) 0 3500 7000 10500 14000 #image/category 1 2 4 6 8 16 HBNLJ HVKNNJ HLSH 179
  180. 180. input map reduce output HVKNNJ : Hadoop Voronoi K Nearest Neighbors JOB 3: KNN assignation a son groupe KNN(r2,S) p_r,r g_r2,[r2, s1,s2…] KNN(r5,S) p_s,s decide a quel groupe de r s doit etre répliqu'e ETAPE: grouping g_r1,[r5, s1,s2…] 180
  181. 181. hash,r1 hash,r2 S R hash,s3 hash,s2 hash,s1 statistique des buckets, et suppression des buckets input map reduce output hash,s1 hash,r1 hash,r2 hash,s2 hash,s3 HLSH : Hadoop Locality sensitive JOB 1: hash et statistique 181
  182. 182. hash,r1 hash,r2 hash,s3 hash,s2 hash,s1 calcul du partitionnement des buckets input map reduce output knn definit a quel reducer le hash va calcul des cKNN HLSH : Hadoop Locality sensitive JOB 1: calul des candidats JOB 2 : calcul des KNN calcul knn map reduce cknn output 182

×