So in summary we've covered a lot of ground in this module.
So we've returned to this task of retrieving a document of interest.
And have formulated this in terms of performing nearest neighbor search.
We reviewed our nearest neighbor search algorithms for
performing one nearest neighbors search as well as K nearest neighbor search.
But we got into some of the nitty-gritty of these algorithms.
In particular, thinking about how we represent our data.
So we focused here on different representations of documents.
But we also talked about the really, really critical idea of,
how do we compute distances between two different data points?
And we went through a set of different ways to compute these types of
distances and discussed the trade-offs that we're faced with.
And the fact that there's really no one answer for
what's the right data representation and what's the right distance to use.
And that's where a lot of domain knowledge comes in.
It can have a lot of impact on the performance of the algorithms.
And you really have to think very critically there.
But then, for the rest of the module we talked about ways to think about
performing really efficient in nearest neighbour search to help handle the fact
that the brute force search.
When you have lots and lots of observations, can be really, really,
really computationally intensive.
So we talked about KD-trees.
That's a very efficient data structure that we can use for
performing our nearest neighbor search.
And we showed when it can be useful, but
we also said that it's struggled in high dimensions.
So then we turned to this idea of locality sensitive hashing,
which only provides approximate nearest neighbors.
But we motivated that that can actually be reasonable in a really large set of
different applications.
But, this locality sense of hashing is really, really,
really simple to implement.
And can be very efficient.
And provide good approximations that have probabilistic guarantees on
their approximations made.
So, coming out of this module,
you really have some real powerful tools that are useful in just a huge number of
retrieval tasks going beyond document retrieval.
Lots and lots of applications where you have some query and
you want to find some similar object.
And all the tools we've discussed in this module generalize to these other
applications as well.
And so, I'll just leave you with a summary of a set of things that you should be able
to do now that you've seen this module.
[MUSIC]