Okay. As deep learning neural nets are still fresh in your mind from last week, that's where we're going to start. Now, the deep learning version of dimension reduction is called an autoencoder. And when I first heard about autoencoders, I didn't really get it, it's a bit of a crazy idea. But then, when the light came on, I really learned to love them. It was really useful. So, like I said, dimension reduction technique, kind of, and I'll come back to that at the end. And it is a bit of a crazy idea. So, here's kind of the diagram you've seen before. We got the input neurons represented by the circles on the left, then we have a hidden layer, and then the output layer. And in this case, the input layer and yet that layer of the same size but more importantly, the values are the same. So, if you input layer, if neurons are 1, 2, 3, 4, 5, 6, what we're trying to learn is to produce 1, 2, 3, 4, 5, 6 on the right, as well. And the point is that the hidden layer is normally smaller. This is the dimension reduction. So in this example, I'm just going two hidden neurons. So, it's got to take six inputs, work out how to weight them, so they feed through just two neurons. And then, those two neurons have to work out, had to weight the output values, reproduce, to reconstruct the six hyper neurons that we're after. In H2O, autoencoders are done just by adding a simple flag to the H2O Deep Learning function you've already seen. We'll be looking at that in the next video. There's also a function called H2O anomaly. And let's think of fraud detection as an example for this. Here, what you do is you train your autoencoder, you build a model, just on your good data. So if you have fraud detection, just on the good transactions, the honest transactions. And the aim is that the autoencoder, the model will learn to recognize good things, valid samples. And then, you take the model, put it into production. And when you feed in a value transaction, it should be able to reconstruct it really well because it knows what it's doing, it's seen that kind of thing before. But when you feed in a fraudulent transaction, you're likely to get a high reconstruction error, that's an indicator that this is anomalous transaction, is different to the ones that was trained. It's not a definite indicator of fraud, but it's a very good indicator of something that you perhaps should go and show to a human and ask them, is this fraud or not? I mentioned it's a kind of dimension reduction, you noticed just before we use just two hidden neurons, there's no restriction, you can have the hidden layer the same size as the input layer or you could have even more, you could have the hidden layer bigger than the input layer. This would often be used with a high dropout rate and just as we saw before, the point of using a high dropout rate, high dropout ratio, would be as a defense against noise, in the data set. So, experiment with those ideas too. So to wrap up, autoencoders is a bit of a crazy idea. I sometimes think of it it's a bit like learning the zip compression algorithm, freshly for each data sample you give it. But the reason you want to do that, is because it learns a custom algorithm, a custom compression algorithm for every dataset, individually tailored. And in fact, not so much zip, jpeg, lossy compression might be a better example because the reconstruction is normally not going to be perfect. Okay, let's look at how to use them in H20 in the next video.