Dimension Reduction and Nearest Neighbor Search
Advanced Algorithms Nanjing University, Fall 2018
Dimension Reduction and Nearest Neighbor Search Advanced - - PowerPoint PPT Presentation
Dimension Reduction and Nearest Neighbor Search Advanced Algorithms Nanjing University, Fall 2018 Dimension reduction: Why we care? High dimension data are common, yet working on them directly is expensive. Dimension reduction: Why we
Advanced Algorithms Nanjing University, Fall 2018
low-distortion metric embedding
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
Images extracted from https://graphics.stanford.edu/courses/cs468-06-fall/Slides/aneesh-michael.pdf
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
How to construct (sample) π΅?
(Johnson-Lindenstrauss; Dasgupta-Gupta)
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
How to construct (sample) π΅?
(Johnson-Lindenstrauss; Dasgupta-Gupta)
Choose some suitable π β π(πβ2 β log π). For each entry ππ,π of π΅ β βπΓπ: Independently sample ππ,π from Gaussian distribution πΆ(0,1/π). For each π β [π]: Let π§π = π΅π¦π.
Choose some suitable π β π(πβ2 β log π). For each entry ππ,π of π΅ β βπΓπ: Independently sample ππ,π from Gaussian distribution πΆ(0,1/π). For each π β [π]: Let π§π = π΅π¦π.
Gaussian distribution (a.k.a. normal distribution) πΆ(π, π2): π½ π = π, Var π = π2 Pr π β€ π’ = ΰΆ±
ββ π’
1 2ππ2 πβ π¦βπ 2/(2π2) dπ¦
β0 < π < 1: let π΅ be a π Γ π matrix with π β π(πβ2 β log π), if each entry of π΅ is independently drawn from πΆ(0,1/π), then with high probability: for all π¦π, π¦π β π, 1 β π π¦π β π¦π
2 2 β€
π΅π¦π β π΅π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
β0 < π < 1: let π΅ be a π Γ π matrix with π β π(πβ2 β log π), if each entry of π΅ is independently drawn from πΆ(0,1/π), then with high probability: for all π¦π, π¦π β π, 1 β π π¦π β π¦π
2 2 β€
π΅π¦π β π΅π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
1 β π β€ π΅ π¦π β π¦π π¦π β π¦π
2 2 2
β€ 1 + π
β0 < π < 1: let π΅ be a π Γ π matrix with π β π(πβ2 β log π), if each entry of π΅ is independently drawn from πΆ(0,1/π), then with high probability: for all π¦π, π¦π β π, 1 β π π¦π β π¦π
2 2 β€
π΅π¦π β π΅π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
1 β π β€ π΅ π¦π β π¦π π¦π β π¦π
2 2 2
β€ 1 + π unit vector!
β0 < π < 1: let π΅ be a π Γ π matrix with π β π(πβ2 β log π), if each entry of π΅ is independently drawn from πΆ(0,1/π), then with high probability: for all π¦π, π¦π β π, 1 β π π¦π β π¦π
2 2 β€
π΅π¦π β π΅π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
1 β π β€ π΅ π¦π β π¦π π¦π β π¦π
2 2 2
β€ 1 + π unit vector!
β0 < π < 1: let π΅ be a π Γ π matrix with π β π(πβ2 β log π), if each entry of π΅ is independently drawn from πΆ(0,1/π), then with high probability: for all π¦π, π¦π β π, 1 β π π¦π β π¦π
2 2 β€
π΅π¦π β π΅π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
1 β π β€ π΅ π¦π β π¦π π¦π β π¦π
2 2 2
β€ 1 + π unit vector!
For any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3 union bound over π(π2) pairs of π¦π, π¦π β π
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
2 , π~πΆ ππ, ππ 2 β ππ + ππ~πΆ πππ + πππ, π2ππ 2 + π2ππ 2
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
2 , π~πΆ ππ, ππ 2 β ππ + ππ~πΆ πππ + πππ, π2ππ 2 + π2ππ 2
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
2 , π~πΆ ππ, ππ 2 β ππ + ππ~πΆ πππ + πππ, π2ππ 2 + π2ππ 2
π£ is unit vector
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
2 , π~πΆ ππ, ππ 2 β ππ + ππ~πΆ πππ + πππ, π2ππ 2 + π2ππ 2
π£ is unit vector
Moreover, these π΅π£ π are mutually independent!
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
In terms of expectation we are fine, but how fast do we deviate from expectation?
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Notice ππ = π β π
π
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Let π β π(πβ2 β log π) and π΅ β βπΓπ, let each entry of π΅ is chosen i.i.d. from πΆ(0,1/π), then for any unit vector π£ β βπ: Pr π΅π£ 2
2 β 1 > π < 1/π3
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
For suitable π β π(πβ2 β log π)
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
when π β€ 1/4
Chernoff bound for ππ-distribution: For i.i.d. π1, π2, β― , ππ~πΆ(0,1) and 0 < π < 1, Pr
1 π Οπ=1 π
ππ
2 β 1 > π < 2πβππ2/8
If π~πΆ(0,1) and π‘ < 1/2, then π½ ππ‘π2 =
1 1β2π‘
when π β€ 1/4 let π = π/4
β0 < π < 1, for any set π of π points from βπ, there is a π: βπ β βπ with π β π(πβ2 β log π), such that βπ¦π, π¦π β π: 1 β π π¦π β π¦π
2 2 β€
π π¦π β π π¦π
2 2 β€ (1 + π) π¦π β π¦π 2 2
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, find the π§π which is closest to Τ¦ π¦
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, find the π§π which is closest to Τ¦ π¦
a set a distance function satisfying triangle inequality
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, find the π§π which is closest to Τ¦ π¦
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, find the π§π which is closest to Τ¦ π¦ Can find many applications in:
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, find the π§π which is closest to Τ¦ π¦ Can find many applications in:
size sound
?
Data: π points π§1, π§2, β― , π§π β π π for some finite π Query: given a point Τ¦ π¦ β π π, find the π§π which is closest to Τ¦ π¦ Goal: Efficiently answer the query
What efficiency we care?
Trivial solution:
When dimension π is small:
π-d tree Voronoi diagram
Data: π points π§1, π§2, β― , π§π β π π for some finite π Query: given a point Τ¦ π¦ β π π, find the π§π which is closest to Τ¦ π¦ Goal: Efficiently answer the query What if dimension π is large, say π β« log π?
Data: π points π§1, π§2, β― , π§π β π π for some finite π Query: given a point Τ¦ π¦ β π π, find the π§π which is closest to Τ¦ π¦ Goal: Efficiently answer the query What if dimension π is large, say π β« log π? Curse of dimensionality: It is conjectured that to solve NNS in high dimension requires either super-polynomial(π) space or super-polynomial(π) time.
Data: π points π§1, π§2, β― , π§π β π π for some finite π Query: given a point Τ¦ π¦ β π π, find the π§π which is closest to Τ¦ π¦ Goal: Efficiently answer the query What if dimension π is large, say π β« log π? Curse of dimensionality: It is conjectured that to solve NNS in high dimension requires either super-polynomial(π) space or super-polynomial(π) time. Blessing: Randomization + Approximation
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead.
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead. πΈπππ = min
1β€π<πβ€π dist(π§π, π§π)
πΈπππ¦ = max
1β€π<πβ€π dist(π§π, π§π)
π = πΈπππ 2 β π β1, πΈπππ 2 β π 0, πΈπππ 2 β π 1, β― , πΈπππ¦
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead. πΈπππ = min
1β€π<πβ€π dist(π§π, π§π)
πΈπππ¦ = max
1β€π<πβ€π dist(π§π, π§π)
π = πΈπππ 2 β π β1, πΈπππ 2 β π 0, πΈπππ 2 β π 1, β― , πΈπππ¦ Let π β be the min in π s.t. ( π, π β)-ANN returns yes with π§β
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead. πΈπππ = min
1β€π<πβ€π dist(π§π, π§π)
πΈπππ¦ = max
1β€π<πβ€π dist(π§π, π§π)
π = πΈπππ 2 β π β1, πΈπππ 2 β π 0, πΈπππ 2 β π 1, β― , πΈπππ¦ Let π β be the min in π s.t. ( π, π β)-ANN returns yes with π§β dist Τ¦ π¦, π§β β€ π β π β βπ§π β π: dist Τ¦ π¦, π§π > π β/ π
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead. βπ : ( π, π )-ANN can be solved with space π‘ and query time π’ π-ANN can be solved with space π π‘ β logπ ΰ΅
πΈπππ¦ πΈπππ
and query time π π’ β log2 logπ ΰ΅
πΈπππ¦ πΈπππ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π, π -ANN (Approximate Nearest Neighbor):
Return a π§π s.t. dist Τ¦ π¦, π§π β€ π β min
1β€πβ€π dist( Τ¦
π¦, π§π)
(π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
If we can solve (π, π )-ANN, then we can solve π-ANN with little overhead. βπ : ( π, π )-ANN can be solved with space π‘ and query time π’ π-ANN can be solved with space π π‘ β logπ ΰ΅
πΈπππ¦ πΈπππ
and query time π π’ β log2 logπ ΰ΅
πΈπππ¦ πΈπππ
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π, π and π‘ to be fixed later. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦). GF(2): two elements {0,1}, XOR as sum, AND as multiplication. Therefore, π¨π π = π΅π§π π = Οπ=1
π
π΅ππ β π§π π mod 2. Space: π(π β 2π) Query time: π(ππ) computation + π(1) memory access
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π, π and π‘ to be fixed later. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦).
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π, π and π‘ to be fixed later. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦). For suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π:
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π, π and π‘ to be fixed later. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦). For suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π:
(π, π )-ANN is solved w.h.p.
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π:
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: each row vector π΅π of π΅ has i.i.d. entries β Bernoulli(π)
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: each row vector π΅π of π΅ has i.i.d. entries β Bernoulli(π)
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: each row vector π΅π of π΅ has i.i.d. entries β Bernoulli(π)
an alternative view regarding the generation of π΅π:
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: each row vector π΅π of π΅ has i.i.d. entries β Bernoulli(π)
an alternative view regarding the generation of π΅π:
π¦ π β Τ¦ π§ π, then π΅ Τ¦ π¦ π = π΅ Τ¦ π§ π
exactly one of the two choices for π΅ππ will make π΅ Τ¦ π¦ π = π΅ Τ¦ π§ π
choose π to satisfy 1 β 2π = 2β1/π random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: each row vector π΅π of π΅ has i.i.d. entries β Bernoulli(π)
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
independent
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
independent
Chernoff bound: Let independent r.v. π1, π2, β― , ππ β {0,1}, let π = Οπ=1
π
ππ, then for π‘ > 0: Pr π β₯ π½ π + π‘ β€ exp β 2π‘2 π Pr π β€ π½ π β π‘ β€ exp β 2π‘2 π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
independent
Chernoff bound: Let independent r.v. π1, π2, β― , ππ β {0,1}, let π = Οπ=1
π
ππ, then for π‘ > 0: Pr π β₯ π½ π + π‘ β€ exp β 2π‘2 π Pr π β€ π½ π β π‘ β€ exp β 2π‘2 π
random π Γ π Boolean matrix π΅ with i.i.d. entries β Bernoulli(π) computation on GF(2): π΅ Τ¦ π¦ π = Οπ=1
π
π΅ππ β Τ¦ π¦ π mod 2 for suitable π β π(log π), p and s; β Τ¦ π¦, Τ¦ π§ β 0,1 π: choose π to satisfy 1 β 2π = 2β1/π
dist π΅ Τ¦ π¦, π΅ Τ¦ π§ = π = Οπ=1
π
ππ where ππ = α1 if π΅ Τ¦ π¦ π β π΅ Τ¦ π§ π
choose π‘ =
1 4+1 2β2β π+1
π 2
=
3 8 β 2β(π+2) π
independent
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π =
ln π Ξ€ 1 8β2β(π+2), π =
Ξ€ 1 β 2β1/π 2 and π‘ = Ξ€ 3 8 β 2β(π+2) π. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦). Space: π(π β 2π) Query time: π(ππ) computation + π(1) memory access
Setup: consider Hamming space 0,1 π Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π, (π , π)-ANN (Approximate Near Neighbor):
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Let π =
ln π Ξ€ 1 8β2β(π+2), π =
Ξ€ 1 β 2β1/π 2 and π‘ = Ξ€ 3 8 β 2β(π+2) π. Sample a π Γ π Boolean matrix π΅ with i.i.d. entries from Bernoulli(π). For π = 1,2, β― , π: let π¨π = π΅π§π β 0,1 π on finite field GF(2). Store all π‘-balls πΆπ‘ π£ = π§π dist π£, π¨π β€ π‘ for all π£ β 0,1 π. Now, upon a query Τ¦ π¦ β 0,1 π: Retrieve πΆπ‘(π΅ Τ¦ π¦). If πΆπ‘ π΅ Τ¦ π¦ = β return βnoβ, else return any π§π β πΆπ‘(π΅ Τ¦ π¦). Space: π(π β 2π) Query time: π(ππ) computation + π(1) memory access Space: ππ(1) Query time: π(π log π)
Solve (π, π )-ANN w.h.p.
Given a metric space π, dist , a random β: π β π drawn from β is an (π , ππ , π, π)-LSH if, for all Τ¦ π¦, Τ¦ π§ β π:
Given a metric space π, dist , a random β: π β π drawn from β is an (π , ππ , π, π)-LSH if, for all Τ¦ π¦, Τ¦ π§ β π: π > π
Given a metric space π, dist , a random β: π β π drawn from β is an (π , ππ , π, π)-LSH if, for all Τ¦ π¦, Τ¦ π§ β π: If there exists an (π , ππ , π, π)-LSH β: π β π, then there exists an (π , ππ , ππ, ππ)-LSH π: π β ππ
Given a metric space π, dist , a random β: π β π drawn from β is an (π , ππ , π, π)-LSH if, for all Τ¦ π¦, Τ¦ π§ β π: If there exists an (π , ππ , π, π)-LSH β: π β π, then there exists an (π , ππ , ππ, ππ)-LSH π: π β ππ
Independently draw β1, β2, β― , βπ according to the distribution of β π π¦ = β1 π¦ , β2 π¦ , β― , βπ π¦ β ππ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN
Suppose we have (π , ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π:
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN
Suppose we have (π , ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π: Store π§1, π§2, β― , π§π in nondecreasing order of π(π§π). Upon query Τ¦ π¦ β π: Find all π§π such that π Τ¦ π¦ = π(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN
Suppose we have (π , ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π: Store π§1, π§2, β― , π§π in nondecreasing order of π(π§π). Upon query Τ¦ π¦ β π: Find all π§π such that π Τ¦ π¦ = π(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
If the real answer is βnoβ: always correct If the real answer is βyesβ: correct with probability at least πβ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN
Suppose we have (π , ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π: Store π§1, π§2, β― , π§π in nondecreasing order of π(π§π). Upon query Τ¦ π¦ β π: Find all π§π such that π Τ¦ π¦ = π(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
If the real answer is βnoβ: always correct If the real answer is βyesβ: correct with probability at least πβ Space: π(π) Time: π(log π)
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN
Suppose we have (π , ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π: Store π§1, π§2, β― , π§π in nondecreasing order of π(π§π). Upon query Τ¦ π¦ β π: Find all π§π such that π Τ¦ π¦ = π(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
If the real answer is βnoβ: always correct If the real answer is βyesβ: correct with probability at least πβ Space: π(π) Time: π(log π) + π(1) in expectation
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
Suppose we have (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π β Τ¦ π¦, Τ¦ π§ β π: Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π , π)-ANN
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct.
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)]
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)]
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)] β€ 1 β πβ π β€ Ξ€ 1 π
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)] β€ 1 β πβ π β€ Ξ€ 1 π
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)] β€ 1 β πβ π β€ Ξ€ 1 π β€ π½ number of such bad π§π 10π β€ π β π β Ξ€ 1 π 10π = 0.1
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" β€ Pr[βπ, ππ Τ¦ π¦ β ππ π§π‘ ] + Pr[exist 10π bad π§π that dist Τ¦ π¦, π§π > ππ yet βπ s.t. ππ Τ¦ π¦ = ππ(π§π)] β€ 1 β πβ π β€ Ξ€ 1 π β€ π½ number of such bad π§π 10π β€ π β π β Ξ€ 1 π 10π = 0.1
+ β€ Ξ€ 1 π + 0.1 < 0.5
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π
If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" < 0.5
Let π = Ξ€ 1 πβ, independently draw π1, π2, β― , ππ. Maintain π sorted tables: For π = 1,2, β― , π: Store π§1, π§2, β― , π§π in table-π in nondecreasing order of ππ(π§π). Upon query π β π: Find first 10 β π such π§π that βπ: ππ Τ¦ π¦ = ππ(π§π) by binary search. If encounter some π§π such that dist Τ¦ π¦, π§π β€ ππ then return this π§π;
(π, π )-ANN in metric space (π, dist) (π, ππ , πβ, Ξ€ 1 π)-LSH π: π β π Data: π points π§1, π§2, β― , π§π β π Query: some point Τ¦ π¦ β π
If the real answer is βnoβ: always correct. If exists π§π‘ such that dist Τ¦ π¦, π§π‘ β€ π , then Pr answer "no" < 0.5 Space: π ππ = π( Ξ€ π πβ) Time: π π β log π = π Ξ€ (log π) πβ
Setup: metric space (π, dist) Data: π points π§1, π§2, β― , π§π β π Query: given a point Τ¦ π¦ β π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN Suppose we have (π , ππ , π, π)-LSH β: π β π We have (π , ππ , ππ, Ξ€ 1 π)-LSH π: π β ππ where π = log(1/π) π, implying ππ = πlog1/π π = πβπ π = log π log π Hence we can solve (π, π )-ANN with space π(π1+π) and query time π(ππ β log π) and one-sided error < 0.5
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π β = βπ | βπ Τ¦ π¦ = Τ¦ π¦ π for π = 1,2, β― , π β is chosen uniformly at random from β
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π β = βπ | βπ Τ¦ π¦ = Τ¦ π¦ π for π = 1,2, β― , π β is chosen uniformly at random from β
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π β = βπ | βπ Τ¦ π¦ = Τ¦ π¦ π for π = 1,2, β― , π β is chosen uniformly at random from β We have a (π , ππ , 1 β Ξ€ π π , 1 β Ξ€ ππ π)-LSH β: 0,1 π β {0,1}
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π β = βπ | βπ Τ¦ π¦ = Τ¦ π¦ π for π = 1,2, β― , π β is chosen uniformly at random from β We have a (π , ππ , 1 β Ξ€ π π , 1 β Ξ€ ππ π)-LSH β: 0,1 π β {0,1}
π = log 1 β Ξ€ π π log(1 β Ξ€ ππ π) β€ 1 π
Data: π points π§1, π§2, β― , π§π β 0,1 π Query: given a point Τ¦ π¦ β 0,1 π:
π¦, π§π β€ ππ if βπ§π: dist Τ¦ π¦, π§π β€ π
π¦, π§π > ππ
(π , π)-ANN in Hamming Space π, π π β = βπ | βπ Τ¦ π¦ = Τ¦ π¦ π for π = 1,2, β― , π β is chosen uniformly at random from β We have a (π , ππ , 1 β Ξ€ π π , 1 β Ξ€ ππ π)-LSH β: 0,1 π β {0,1}
π = log 1 β Ξ€ π π log(1 β Ξ€ ππ π) β€ 1 π
We can solve (π, π )-ANN in Hamming space with space π(π1+1/π), query time π(π1/π β log π), and one-sided error < 0.5
Dimension reduction (low-distortion metric embedding)
easy to embed a set of π points in arbitrary dimension to π(log π) dimension with constant distortion. Nearest neighbor search
then we can solve π -ANN (Approximate Nearest Neighbor) with limited overhead.
(π, π )-ANN. (Collisions could be helpful for hashing.)