How does this take into account a movie’s popularity changing over time, without the movie or the user’s tastes changing? For example, ‘The Room’ is a notoriously the worst movie ever made, but many years after its release it’s becomes ‘so bad it’s good’ and is incredibly popular.
As a lover of bad horror, I am highly conflicted about this bias of Children of the Corn
How can you identify “latent factors” that aren’t pre-labeled or known? Like, for example, maybe certain movies all show a cute elderly couple at some point, and people rate those movies highly. How would you ever find out that it was the presence of the cute elderly couple in the movie that was a latent factor?
Which is what the bias isn’t 
Your latent factor ‘I love horror movies’ is going to match the latent factor of Children of the Corn ‘is a horror move’ to automatically predict you’ll give it a higher rating.
The bias is more about its value once you remove… all bias 
In general, the “latent factors” are not pre-labeled. They are discovered through the factorization. And you are correct that it may not always be clear what a particular latent factor represents.
Note that pca method is an extension implemented in the fastai lib, not a “native” PyTorch function:
def _pca(x, k=2):
x = x-torch.mean(x,0)
U,S,V = torch.svd(x.t())
return torch.mm(x,U[:,:k])
torch.Tensor.pca = _pca
Here is a link to the code.
Got it. Are there tools or techniques for exploring what they might represent?
resnet is a convolutional NN that works for images. Tabular needs a normal FUlly connected NN.
Where is non-linearity introduced in the collaborative filtering model?
FYI: One of the best explanations on how PCA works …
The factorization is just done with one set of user-movie ratings. If you were interested in how it changes over time, you would need to re-do the factorization on a new set of user-movie ratings.
Makes sense. I would be curious to see my rating bias in movies and google reviews. I rarely vote below a 4. A 3 is real bad news.
is a function like random() used for creating the initial random numbers for the embeddings?
Can we apply pca to image data ,if yes how can we apply pca to image data… say we may interested in only few parts of image rather in a big image with so many pixels
There is none in this basic model, but there is only one layer too.
One approach is just to look at which movies rate very high/low for a particular latent factor, and see if you recognize what makes those movies similar/different.
So the model would learn to take your 5s with a grain of salt versus another person that rarely gives a 5. All 5s are not created equally.
How to compute rank-5 accuracy using fastai library?
would be nice to graph the movies on 3D graph similar to this one: https://bwlewis.github.io/correlation-regularization/
is there a python library to do that?
Any words on timeseries characteristics of colab filtering? Application on ts domains, non-stationarity etc.