{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Collaborative filtering\n", "\n", "* __Collaborative filtering__: Generally, the process of filtering out some data by collaborating data from different data sources/agents. Specifically, this process with regards to building recommendation systems. Making predictions (filtering) by collecting data from lots of different users about their preferences/habits (collaboration).\n", "\n", "\n", "* __Matrix decomposition/factoring__: The process of taking a single matrix, and then expressing it as the product of different matrices. You can think of gradient descent as a way of doing this. For example, if we have a table of data (matrix) that shows {users}x{movies}, and the matrix is filled with the users' scores for those movies, we could have two matrices -- one for movie factors, and one for user factors. We could then set the properties for those two matrices via gradient descent so that their product results (as closely as possible) as the actual scores users gave the movies. So we have taken the score matrix, and expressed it as the product of the movie factor and user factor matrices. (Actually, our operations are not technically matrix decomposition because we will in 0 values.)\n", "\n", "\n", "* __Observed features/Latent features__: (aka \"factors\" or \"variables\") Observed features are the features that are explicitly read into the model. For example, words in a text. Latent features are the \"hidden\" features -- usually \"discovered\" by some aggregate of the observed features. For example, the topic of a text. Thinking of the matrix decomposition above, each column for a movie could represent some value -- special effects, year of release, etc. An each row of the user matrix could represent how much they value that feature. Those features, like special effects, etc., would be the latent features. The features that can't be directly observed vs. those that can." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at collab_filter.xlsx as an example:\n", "\n", "\n", "\n", "This whole process could be thought of as _collaborative filtering using matrix decomposition_. (We're breaking our matrix into 2 different matrices and using it to make some predictions).\n", "\n", "The matrix above the movies and the matrix to the left of the users are embedding matrices for those things.\n", "\n", "So, in summary, the process for this shallow learning is:\n", "\n", "1. Init your user/movie/movie scores matrix using randomly initialized embedding matrices for the movies and users\n", "2. Set up your cost function\n", "3. Minimize your cost function using gradient descent, thus setting more accurate embedding matrix values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Collaborative filtering using fast.ai" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# First do our usual imports\n", "%reload_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "\n", "from fastai.learner import *\n", "from fastai.column_data import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Then set up the path\n", "path = \"data/ml-latest-small/\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
userIdmovieIdratingtimestamp
01312.51260759144
1110293.01260759179
2110613.01260759182
3111292.01260759185
4111724.01260759205
\n", "
" ], "text/plain": [ " userId movieId rating timestamp\n", "0 1 31 2.5 1260759144\n", "1 1 1029 3.0 1260759179\n", "2 1 1061 3.0 1260759182\n", "3 1 1129 2.0 1260759185\n", "4 1 1172 4.0 1260759205" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Take a look at the data\n", "# We can see it contains a userId, movieId, and rating. We want to predict the rating.\n", "ratings = pd.read_csv(path+'ratings.csv')\n", "ratings.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
movieIdtitlegenres
01Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
12Jumanji (1995)Adventure|Children|Fantasy
23Grumpier Old Men (1995)Comedy|Romance
34Waiting to Exhale (1995)Comedy|Drama|Romance
45Father of the Bride Part II (1995)Comedy
\n", "
" ], "text/plain": [ " movieId title \\\n", "0 1 Toy Story (1995) \n", "1 2 Jumanji (1995) \n", "2 3 Grumpier Old Men (1995) \n", "3 4 Waiting to Exhale (1995) \n", "4 5 Father of the Bride Part II (1995) \n", "\n", " genres \n", "0 Adventure|Animation|Children|Comedy|Fantasy \n", "1 Adventure|Children|Fantasy \n", "2 Comedy|Romance \n", "3 Comedy|Drama|Romance \n", "4 Comedy " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We can also get the movie names too\n", "movie_details = pd.read_csv(path+'movies.csv')\n", "movie_details.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "userId\n", "547 2391\n", "564 1868\n", "624 1735\n", "15 1700\n", "73 1610\n", "452 1340\n", "468 1291\n", "380 1063\n", "311 1019\n", "30 1011\n", "294 947\n", "509 923\n", "580 922\n", "213 910\n", "212 876\n", "Name: rating, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Though not required for modelling, we create a cross tab of the top users and top movies, like we had in our Excel file\n", "# First get the users who have given the most ratings\n", "group = ratings.groupby('userId')['rating'].count()\n", "topUsers = group.sort_values(ascending=False)[:15]\n", "topUsers" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "movieId\n", "356 341\n", "296 324\n", "318 311\n", "593 304\n", "260 291\n", "480 274\n", "2571 259\n", "1 247\n", "527 244\n", "589 237\n", "1196 234\n", "110 228\n", "1270 226\n", "608 224\n", "1198 220\n", "Name: rating, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now get the movies which are the highest rated\n", "group = ratings.groupby('movieId')['rating'].count()\n", "topMovies = group.sort_values(ascending=False)[:15]\n", "topMovies" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Now join them together\n", "top_ranked = ratings.join(topUsers, rsuffix='_r', how='inner', on='userId')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
movieId11102602963183564805275895936081196119812702571
userId
152.03.05.05.02.01.03.04.04.05.05.05.04.05.05.0
304.05.04.05.05.05.04.05.04.04.05.04.05.05.03.0
735.04.04.55.05.05.04.05.03.04.54.05.05.05.04.5
2123.05.04.04.04.54.03.05.03.04.0NaNNaN3.03.05.0
2133.02.55.0NaNNaN2.05.0NaN4.02.52.05.03.03.04.0
2944.03.04.0NaN3.04.04.04.03.0NaNNaN4.04.54.04.5
3113.03.04.03.04.55.04.55.04.52.04.03.04.54.54.0
3804.05.04.05.04.05.04.0NaN4.05.04.04.0NaN3.05.0
4523.54.04.05.05.04.05.04.04.05.05.04.04.04.02.0
4684.03.03.53.53.53.02.5NaNNaN3.04.03.03.53.03.0
5093.05.05.05.04.04.03.05.02.04.04.55.05.03.04.5
5473.5NaNNaN5.05.02.03.05.0NaN5.05.02.52.03.53.5
5644.01.02.05.0NaN3.05.04.05.05.05.05.05.03.03.0
5804.04.54.04.54.03.53.04.04.54.04.54.03.53.04.5
6245.0NaN5.05.0NaN3.03.0NaN3.05.04.05.05.05.02.0
\n", "
" ], "text/plain": [ "movieId 1 110 260 296 318 356 480 527 589 593 608 \\\n", "userId \n", "15 2.0 3.0 5.0 5.0 2.0 1.0 3.0 4.0 4.0 5.0 5.0 \n", "30 4.0 5.0 4.0 5.0 5.0 5.0 4.0 5.0 4.0 4.0 5.0 \n", "73 5.0 4.0 4.5 5.0 5.0 5.0 4.0 5.0 3.0 4.5 4.0 \n", "212 3.0 5.0 4.0 4.0 4.5 4.0 3.0 5.0 3.0 4.0 NaN \n", "213 3.0 2.5 5.0 NaN NaN 2.0 5.0 NaN 4.0 2.5 2.0 \n", "294 4.0 3.0 4.0 NaN 3.0 4.0 4.0 4.0 3.0 NaN NaN \n", "311 3.0 3.0 4.0 3.0 4.5 5.0 4.5 5.0 4.5 2.0 4.0 \n", "380 4.0 5.0 4.0 5.0 4.0 5.0 4.0 NaN 4.0 5.0 4.0 \n", "452 3.5 4.0 4.0 5.0 5.0 4.0 5.0 4.0 4.0 5.0 5.0 \n", "468 4.0 3.0 3.5 3.5 3.5 3.0 2.5 NaN NaN 3.0 4.0 \n", "509 3.0 5.0 5.0 5.0 4.0 4.0 3.0 5.0 2.0 4.0 4.5 \n", "547 3.5 NaN NaN 5.0 5.0 2.0 3.0 5.0 NaN 5.0 5.0 \n", "564 4.0 1.0 2.0 5.0 NaN 3.0 5.0 4.0 5.0 5.0 5.0 \n", "580 4.0 4.5 4.0 4.5 4.0 3.5 3.0 4.0 4.5 4.0 4.5 \n", "624 5.0 NaN 5.0 5.0 NaN 3.0 3.0 NaN 3.0 5.0 4.0 \n", "\n", "movieId 1196 1198 1270 2571 \n", "userId \n", "15 5.0 4.0 5.0 5.0 \n", "30 4.0 5.0 5.0 3.0 \n", "73 5.0 5.0 5.0 4.5 \n", "212 NaN 3.0 3.0 5.0 \n", "213 5.0 3.0 3.0 4.0 \n", "294 4.0 4.5 4.0 4.5 \n", "311 3.0 4.5 4.5 4.0 \n", "380 4.0 NaN 3.0 5.0 \n", "452 4.0 4.0 4.0 2.0 \n", "468 3.0 3.5 3.0 3.0 \n", "509 5.0 5.0 3.0 4.5 \n", "547 2.5 2.0 3.5 3.5 \n", "564 5.0 5.0 3.0 3.0 \n", "580 4.0 3.5 3.0 4.5 \n", "624 5.0 5.0 5.0 2.0 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top_ranked = top_ranked.join(topMovies, rsuffix='_r', how='inner', on='movieId')\n", "\n", "pd.crosstab(top_ranked.userId, top_ranked.movieId, top_ranked.rating, aggfunc=np.sum)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Collaborative filtering\n", "\n", "Now we will do the actual collaborative filtering. This is pretty similar to our previous processes." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# First, get the cross validation indexes -- a random 20% of rows we can use for validaton\n", "val_idxs = get_cv_idxs(len(ratings))\n", "\n", "# Weight decay. This will be covered later. This means 2^-4 (0.0625)\n", "wd = 2e-4 \n", "\n", "# This is the depth of the embedding matrix. Can be thought of as the number of latent features. (see note above)\n", "n_factors = 50 " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Now declare our data and learner\n", "# We pass in the two columns and the thing we want to predict -- like we had in our Excel example earlier\n", "collaborative_filter_data = CollabFilterDataset.from_csv(path, 'ratings.csv', 'userId', 'movieId', 'rating')\n", "learn = collaborative_filter_data.get_learner(n_factors, val_idxs, 64, opt_fn=optim.Adam)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9e86229ec34141b59fd7fd885fa04a6a", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.831135 0.810703 \n", " 1 0.791689 0.780824 \n", " 2 0.617506 0.765011 \n", "\n" ] }, { "data": { "text/plain": [ "[0.76501125]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Do the learning\n", "# These params were figured out using trials, like usual\n", "learn.fit(1e-2, 2, wds=wd, cycle_len=1, cycle_mult=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The evaluation method here is MSE -- mean squared error (sum of actual value-predicted value)^2/num of samples).\n", "So we'll take the square root to get our RMSE." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8746427842267951" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "math.sqrt(0.765)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Movie bias" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our bias affects the movie rating, so we can also think of it as a measure of how good/bad movies are." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# First, convert the IDs to contiguous values, like we did for our model.\n", "movie_names = movie_details.set_index('movieId')['title'].to_dict()\n", "group = ratings.groupby('movieId')['rating'].count()\n", "top_movies = group.sort_values(ascending=False).index.values[:3000]\n", "top_movie_idx = np.array([collaborative_filter_data.item2idx[o] for o in top_movies])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to view the layers in our PyTorch model, we can just call it.\n", "\n", "So below we have a model wth two embedding layers, and then two bias layers -- one of user biases, and one for item biases (in this case, items = movies).\n", "\n", "You can see the 0th element is the number of items, and the 1st element is the number of features. For example, in our user embedding layer, we have 671 users and 50 features, in our item bias layer we have 9066 movies and 1 bias for each movie, etc." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "EmbeddingDotBias(\n", " (u): Embedding(671, 50)\n", " (i): Embedding(9066, 50)\n", " (ub): Embedding(671, 1)\n", " (ib): Embedding(9066, 1)\n", ")" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = learn.model\n", "model.cuda()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we take our top movie IDs and pass them into the item bias layer to get the biases for the movie.\n", "\n", "Note: PyTorch lets you do this -- pass in indices to a layer to get the corresponding values.\n", "The indicies must be converted to PyTorch `Variables` first. Recall that a variable is basically like a tensor that supports automatic differentiation.\n", "\n", "We then convert the resulting data to a NumPy array so that work can be done on the CPU." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Take a look at the movie bias\n", "# Input is a movie id, and output is the movie bias (a float)\n", "movie_bias = to_np(model.ib(V(top_movie_idx)))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.85251],\n", " [ 0.89408],\n", " [ 1.31877],\n", " ...,\n", " [ 0.22685],\n", " [-0.03515],\n", " [ 0.24388]], dtype=float32)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movie_bias" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3000, 1)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movie_bias.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Zip up the movie names with their respective biases\n", "movie_ratings = [(b[0], movie_names[i]) for i,b in zip(top_movies, movie_bias)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can look at top and bottom rated movies, corrected for reviewer sentiment, and the different types of movies viewers watch." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-0.9562768, 'Battlefield Earth (2000)'),\n", " (-0.7368616, 'Inspector Gadget (1999)'),\n", " (-0.73659664, 'Anaconda (1997)'),\n", " (-0.7353736, 'Speed 2: Cruise Control (1997)'),\n", " (-0.7109455, 'Wild Wild West (1999)'),\n", " (-0.6921251, 'Mighty Morphin Power Rangers: The Movie (1995)'),\n", " (-0.6649571, 'Super Mario Bros. (1993)'),\n", " (-0.655268, 'Batman & Robin (1997)'),\n", " (-0.63718784, 'Haunting, The (1999)'),\n", " (-0.59907967, 'Flintstones, The (1994)'),\n", " (-0.59654623, 'Superman III (1983)'),\n", " (-0.58483046, 'Congo (1995)'),\n", " (-0.5782997, 'Showgirls (1995)'),\n", " (-0.57199323, 'Little Nicky (2000)'),\n", " (-0.5705105, 'Message in a Bottle (1999)')]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Sort by the 0th element in the tuple (the bias)\n", "sorted(movie_ratings, key=lambda o: o[0])[:15]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-0.9562768, 'Battlefield Earth (2000)'),\n", " (-0.7368616, 'Inspector Gadget (1999)'),\n", " (-0.73659664, 'Anaconda (1997)'),\n", " (-0.7353736, 'Speed 2: Cruise Control (1997)'),\n", " (-0.7109455, 'Wild Wild West (1999)'),\n", " (-0.6921251, 'Mighty Morphin Power Rangers: The Movie (1995)'),\n", " (-0.6649571, 'Super Mario Bros. (1993)'),\n", " (-0.655268, 'Batman & Robin (1997)'),\n", " (-0.63718784, 'Haunting, The (1999)'),\n", " (-0.59907967, 'Flintstones, The (1994)'),\n", " (-0.59654623, 'Superman III (1983)'),\n", " (-0.58483046, 'Congo (1995)'),\n", " (-0.5782997, 'Showgirls (1995)'),\n", " (-0.57199323, 'Little Nicky (2000)'),\n", " (-0.5705105, 'Message in a Bottle (1999)')]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (Same as above)\n", "sorted(movie_ratings, key=itemgetter(0))[:15]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(1.3187655, 'Shawshank Redemption, The (1994)'),\n", " (1.0735388, 'Godfather, The (1972)'),\n", " (1.0717344, 'Usual Suspects, The (1995)'),\n", " (0.9121452, \"Schindler's List (1993)\"),\n", " (0.903625, 'To Kill a Mockingbird (1962)'),\n", " (0.8940818, 'Pulp Fiction (1994)'),\n", " (0.89336175, 'Fargo (1996)'),\n", " (0.887614, 'Matrix, The (1999)'),\n", " (0.8801452, 'Silence of the Lambs, The (1991)'),\n", " (0.8669827, 'Godfather: Part II, The (1974)'),\n", " (0.8619761, 'Star Wars: Episode IV - A New Hope (1977)'),\n", " (0.852508, 'Forrest Gump (1994)'),\n", " (0.84972376, 'Dark Knight, The (2008)'),\n", " (0.84826905, '12 Angry Men (1957)'),\n", " (0.8375876, 'Rear Window (1954)')]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(movie_ratings, key=lambda o: o[0], reverse=True)[:15]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interpreting embedding matrices" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3000, 50)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movie_embeddings = to_np(model.i(V(top_movie_idx)))\n", "movie_embeddings.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's hard to interpret 50 different factors. We use [Principle Component Analysis (PCA)](https://plot.ly/ipython-notebooks/principal-component-analysis/) to simplify them down to 3 vectors.\n", "\n", "PCA essentially says, reduce our dimensionality down to $n$. It finds 3 linear combinations of our 50 embedding dimensions whic capture as much variation as possible, while also making those 3 linear combinations as different to each other as possible." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.decomposition import PCA\n", "pca = PCA(n_components=3)\n", "movie_pca = pca.fit(movie_embeddings.T).components_" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3, 3000)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movie_pca.shape" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "factor0 = movie_pca[0]\n", "movie_component = [(factor, movie_names[i]) for factor,i in zip(factor0, top_movies)]" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0.08261366, 'Independence Day (a.k.a. ID4) (1996)'),\n", " (0.060704462, 'Armageddon (1998)'),\n", " (0.057128586, 'Lost World: Jurassic Park, The (1997)'),\n", " (0.05646295, \"Charlie's Angels (2000)\"),\n", " (0.05587433, 'X-Men (2000)'),\n", " (0.054502834, 'Grumpier Old Men (1995)'),\n", " (0.053873993, 'Pearl Harbor (2001)'),\n", " (0.05382658, 'Police Academy 4: Citizens on Patrol (1987)'),\n", " (0.052748825, 'Miss Congeniality (2000)'),\n", " (0.049758486, 'Waterworld (1995)')]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Looking at the first component, it looks like it's something like classier movies vs. more lighthearted\n", "sorted(movie_component, key=itemgetter(0), reverse=True)[:10]" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-0.072085, 'Taxi Driver (1976)'),\n", " (-0.070109025, 'Fargo (1996)'),\n", " (-0.06869264, 'Chinatown (1974)'),\n", " (-0.06718892, 'Godfather, The (1972)'),\n", " (-0.06630573, 'Apocalypse Now (1979)'),\n", " (-0.06497336, 'Pulp Fiction (1994)'),\n", " (-0.0637139, 'Casablanca (1942)'),\n", " (-0.061072655, 'Goodfellas (1990)'),\n", " (-0.059540763, 'Shining, The (1980)'),\n", " (-0.058864854, 'Maltese Falcon, The (1941)')]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(movie_component, key=itemgetter(0))[:10]" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "factor1 = movie_pca[1]\n", "movie_component = [(factor, movie_names[i]) for factor,i in zip(factor1, top_movies)]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0.065984644, 'Mission to Mars (2000)'),\n", " (0.060737364, 'Island of Dr. Moreau, The (1996)'),\n", " (0.0543456, 'Tank Girl (1995)'),\n", " (0.05323038, 'Batman & Robin (1997)'),\n", " (0.050556783, \"Joe's Apartment (1996)\"),\n", " (0.04883899, 'Showgirls (1995)'),\n", " (0.048659008, 'Coneheads (1993)'),\n", " (0.04720561, 'Catwoman (2004)'),\n", " (0.046349775, 'Piano, The (1993)'),\n", " (0.04605449, 'Bringing Up Baby (1938)')]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Looking at the second component, it looks more like CGI vs dialogue-driven\n", "sorted(movie_component, key=itemgetter(0), reverse=True)[:10]" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(-0.13760568, 'Lord of the Rings: The Return of the King, The (2003)'),\n", " (-0.13532887, 'Lord of the Rings: The Fellowship of the Ring, The (2001)'),\n", " (-0.12333063, 'Lord of the Rings: The Two Towers, The (2002)'),\n", " (-0.103825174, 'Star Wars: Episode VI - Return of the Jedi (1983)'),\n", " (-0.09216414, 'Lethal Weapon (1987)'),\n", " (-0.09151409, 'Jurassic Park (1993)'),\n", " (-0.090675056, 'Spider-Man (2002)'),\n", " (-0.08928624,\n", " 'Raiders of the Lost Ark (Indiana Jones and the Raiders of the Lost Ark) (1981)'),\n", " (-0.08467902, 'Die Hard (1988)'),\n", " (-0.083290756, 'X2: X-Men United (2003)')]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(movie_component, key=itemgetter(0))[:10]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9IAAANSCAYAAACJI/YGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3XdY1XX/x/HnOYc9FEQEUXHvLZojTXKnpkaa5a9Ms2xZ3Vlmpu1hZtmyLNP2urWUzJEbyy24Fw4EFRwogmw44/fHwRPIPOadjdfjurwuzvczv99zKN7nsww2mw0RERERERERqRjjte6AiIiIiIiIyN+JAmkRERERERERJyiQFhEREREREXGCAmkRERERERERJyiQFhEREREREXGCAmkRERERERERJyiQFhEREREREXGCAmkRERERERERJyiQFhEREREREXGCy7XuwJWoWrWqrU6dOte6GyIiIiIiItdETEzMOZvNFnit+/Fv9bcMpOvUqUN0dPS17oaIiIiIiMg1YTAYEq51H/7NNLVbRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBaRERERERExAkKpEVEREREREScoEBa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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# We can map these two components against each other\n", "idxs = np.random.choice(len(top_movies), 50, replace=False)\n", "X = factor0[idxs]\n", "Y = factor1[idxs]\n", "plt.figure(figsize=(15,15))\n", "plt.scatter(X, Y)\n", "for i, x, y in zip(top_movies[idxs], X, Y):\n", " plt.text(x,y,movie_names[i], color=np.random.rand(3)*0.7, fontsize=11)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Collbarative Filtering from scratch\n", "\n", "In this section, we'll look at implementing collaborative filtering from scratch." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Do our imports again in case we want to run from here\n", "%reload_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "\n", "from fastai.learner import *\n", "from fastai.column_data import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Then set up the path\n", "path = \"data/ml-latest-small/\"" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
userIdmovieIdratingtimestamp
01312.51260759144
1110293.01260759179
2110613.01260759182
3111292.01260759185
4111724.01260759205
\n", "
" ], "text/plain": [ " userId movieId rating timestamp\n", "0 1 31 2.5 1260759144\n", "1 1 1029 3.0 1260759179\n", "2 1 1061 3.0 1260759182\n", "3 1 1129 2.0 1260759185\n", "4 1 1172 4.0 1260759205" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratings = pd.read_csv(path+'ratings.csv')\n", "ratings.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PyTorch Arithmetic" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(\n", " 1 2\n", " 3 4\n", " [torch.cuda.FloatTensor of size 2x2 (GPU 0)], \n", " 2 2\n", " 10 10\n", " [torch.cuda.FloatTensor of size 2x2 (GPU 0)])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Declare tensors (n-dimensonal matrices)\n", "a = T([[1.,2],\n", " [3,4]])\n", "\n", "b = T([[2.,2],\n", " [10,10]])\n", "\n", "a,b" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", " 2 4\n", " 30 40\n", "[torch.cuda.FloatTensor of size 2x2 (GPU 0)]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Element-wise multiplication\n", "a*b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CUDA\n", "To run on the graphics card, add `.cuda()` to the end of PyTorch calls. Otherwise they will run on the CPU." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", " 2 4\n", " 30 40\n", "[torch.cuda.FloatTensor of size 2x2 (GPU 0)]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This is running on the GPU\n", "a*b.cuda()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", " 6\n", " 70\n", "[torch.cuda.FloatTensor of size 2 (GPU 0)]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Element-wise multiplication and sum across the columns\n", "# This is the tensor dot product.\n", "# I.e., the dot product of [1,2] and [2,2] = 6, and [3,4]*[10,10] = 70\n", "(a*b).sum(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PyTorch Modules\n", "We can build our own neural network layer to process inputs and compute activations.\n", "\n", "In PyTorch, we call this a __module__. I.e., we are going to build a PyTorch _module_. Modules can be passed in to neural nets.\n", "\n", "PyTorch modules are derived from `nn.Module` (neural network module).\n", "\n", "Modules must contain a function called `forward` that will compute the forward activations -- do the forward pass.\n", "\n", "This `forward` function is called automatically when the module is called with its constructor, i.e., `module(a,b)` will call `forward(a,b)`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# We can create a module that does dot products between tensors\n", "class DotProduct(nn.Module):\n", " def forward(self, users, movies):\n", " return (users*movies).sum(1)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model = DotProduct()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", " 6\n", " 70\n", "[torch.cuda.FloatTensor of size 2 (GPU 0)]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This will call the forward function.\n", "model(a, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A more complex module/fixing up index values\n", "\n", "Now, let's create a more complex module to do the work we were doing in our spreadsheet.\n", "\n", "But first, we have a slightly problem: user and movie IDs are not contiguous. For example, our user ID might jump from 1000 to 1400. This means that if we want to do direct indexing via the ID, we would need to have those extra 400 rows in our tensor. So we'll do some data fixing to map a series of sequential, contiguous IDs." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Get the unique user IDs\n", "unique_users = ratings.userId.unique()\n", "\n", "# Get a list of sequential IDs using enumerate\n", "user_to_index = {o:i for i,o in enumerate(unique_users)}\n", "\n", "# Map the userIds in ratings using user_to_index\n", "ratings.userId = ratings.userId.apply(lambda x: user_to_index[x])" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Do the same for movie IDs\n", "unique_movies = ratings.movieId.unique()\n", "movie_to_index = {o:i for i,o in enumerate(unique_movies)}\n", "ratings.movieId = ratings.movieId.apply(lambda x: movie_to_index[x])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(671, 9066)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "number_of_users = int(ratings.userId.nunique())\n", "number_of_movies = int(ratings.movieId.nunique())\n", "\n", "number_of_users, number_of_movies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating the module\n", "\n", "Now let's create our module. This will be a module that holds an embedding matrix for our users and movies.\n", "The `forward` pass will do a dot product on them.\n", "\n", "The module will use `nn.Embedding` to create the embedding matrices. These are PyTorch __`variables`__. Variables support all the operations that tensors do, except they also support automatic differentiation.\n", "\n", "When we want to access the tensor part of the variable, we call `.weight.data` on the variable.\n", "\n", "If we put `_` at the end of a PyTorch tensor function, it performs the operation in place.\n", "\n", "To initialize our embedding matrices to random numbers using values calculated using [He initialization](https://machinelearning.wtf/terms/he-initialization/). (See PyTorch's `kaiming_uniform` which can do He initialization too [link](http://pytorch.org/docs/master/_modules/torch/nn/init.html).)\n", "\n", "The flow of the module will be like this:\n", "\n", "1. Look up the factors for the users from the embedding matrix\n", "2. Look up the factors for the movies from the embedding matrix\n", "3. Take the dot product" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true }, "outputs": [], "source": [ "number_of_factors = 50" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class EmbeddingNet(nn.Module):\n", " def __init__(self, number_of_users, number_of_movies):\n", " super().__init__()\n", " \n", " # Create embedding matrices for users and movies\n", " self.user_embedding_matrix = nn.Embedding(number_of_users, number_of_factors)\n", " self.movie_embedding_matrix = nn.Embedding(number_of_movies, number_of_factors)\n", " \n", " # Initialize the embedding matrices\n", " # .weight.data gets the tensor part of the variable\n", " # Using _ performs the operation in place\n", " self.user_embedding_matrix.weight.data.uniform_(0,0.05)\n", " self.movie_embedding_matrix.weight.data.uniform_(0,0.05)\n", " \n", " \n", " # Foward pass\n", " # As with our structured data example, we can take in categorical and continuous variables\n", " # (But both our users and movies are categorical)\n", " def forward(self, categorical, continuous):\n", " # Get the users and movies params\n", " users,movies = categorical[:,0],categorical[:,1]\n", " \n", " # Get the factors from our embedding matrices\n", " user_factors,movie_factors = self.user_embedding_matrix(users), self.movie_embedding_matrix(movies)\n", " \n", " # Take the dot product\n", " return (user_factors*movie_factors).sum(1)\n", " " ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Now we want to set up our x and y for our crosstab\n", "# X = everything except rating and timestamp (row/column for our cross tab)\n", "# Y = ratings (result in our cross tab)\n", "x = ratings.drop(['rating', 'timestamp'],axis=1)\n", "y = ratings['rating'].astype('float32')" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
userIdmovieId
000
101
202
303
404
\n", "
" ], "text/plain": [ " userId movieId\n", "0 0 0\n", "1 0 1\n", "2 0 2\n", "3 0 3\n", "4 0 4" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x.head()" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 2.5\n", "1 3.0\n", "2 3.0\n", "3 2.0\n", "4 4.0\n", "Name: rating, dtype: float32" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.head()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": true }, "outputs": [], "source": [ "val_idxs = get_cv_idxs(len(ratings))" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Just use fast.ai to set up the dataloader\n", "data = ColumnarModelData.from_data_frame(path, val_idxs, x, y, ['userId', 'movieId'], 64)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": true }, "outputs": [], "source": [ "weight_decay=1e-5\n", "model = EmbeddingNet(number_of_users, number_of_movies).cuda()\n", "\n", "# optim creates the optimization function\n", "# model.parameters() fetches the weights from the nn.Module superclass (anything of type nn.[weight type] e.g. Embedding)\n", "opt = optim.SGD(model.parameters(), 1e-1, weight_decay=weight_decay, momentum=0.9)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5cac37d423254c7ab4ede4cdcd7ded46", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 1.649158 1.637204 \n", " 1 1.117915 1.309114 \n", " 2 0.903568 1.219225 \n", "\n" ] }, { "data": { "text/plain": [ "[1.2192254]" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Call the PyTorch training loop (we'll write our own later on)\n", "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that our loss is still quite high.\n", "\n", "We can manually do some learning rate annealing and call `fit` again." ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": true }, "outputs": [], "source": [ "set_lrs(opt, 0.01)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "00e265a4ae2243668da0e2af2dfb0c7e", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.685637 1.1429 \n", " 1 0.694845 1.133847 \n", " 2 0.700296 1.129204 \n", "\n" ] }, { "data": { "text/plain": [ "[1.1292036]" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bias\n", "Our loss still doesn't compete with the fast.ai library. One reason for this is lack of __bias__.\n", "\n", "Consider, one movie tends to have particularly high ratings, or a certain user tends to give low scores to movies. We want to account for these case-by-case variances. So we give each movie and user a bias and add them on to our dot product. In practice, this will be like a an extra row stuck on to our movie and user tensors.\n", "\n", "\n", "\n", "So now we will create a new model that takes bias into account.\n", "\n", "This will have a few other differences:\n", "\n", "1. It uses a convenience method to create embeddings\n", "2. It normalizes scores returns from the forward pass to 1-5\n", "\n", "This second step is not strictly necessary, but it will make it easier to fit parameters.\n", "\n", "The sigmoid function is called from `F`, which is PyTorch's functional library." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.5, 5.0)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# For step 2, score normalizing\n", "min_rating, max_rating = ratings.rating.min(), ratings.rating.max()\n", "min_rating, max_rating" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# number_of_inputs = rows in the embedding matrix\n", "# number_of_factors = columns in the embedding matrix\n", "def get_embedding(number_of_inputs, number_of_factors):\n", " embedding = nn.Embedding(number_of_inputs, number_of_factors)\n", " embedding.weight.data.uniform_(-0.01, 0.01)\n", " return embedding\n", "\n", "class EmbeddingDotBias(nn.Module):\n", " def __init__(self, number_of_users, number_of_movies):\n", " super().__init__()\n", " \n", " # Initialize embedding matrices and bias vectors\n", " (self.user_embedding_matrix, self.movie_embedding_matrix, self.user_biases, self.movie_biases) = [get_embedding(*o) for o in [\n", " (number_of_users, number_of_factors), (number_of_movies, number_of_factors), (number_of_users, 1), (number_of_movies, 1)\n", " ]]\n", " \n", " def forward(self, categorical, continuous):\n", " users, movies = categorical[:,0], categorical[:,1]\n", " \n", " # Do our dot product\n", " user_dot_movies = (self.user_embedding_matrix(users)*self.movie_embedding_matrix(movies)).sum(1)\n", " \n", " # Add on our bias vectors\n", " results = user_dot_movies + self.user_biases(users).squeeze() + self.movie_biases(movies).squeeze()\n", " \n", " # Normalize results\n", " results = F.sigmoid(results) * (max_rating-min_rating)+min_rating\n", " \n", " return results" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cf = CollabFilterDataset.from_csv(path, 'ratings.csv', 'userId', 'movieId', 'rating')\n", "\n", "weight_decay=2e-4\n", "model = EmbeddingDotBias(cf.n_users, cf.n_items).cuda()\n", "opt = optim.SGD(model.parameters(), 1e-1, weight_decay=weight_decay, momentum=0.9)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "adb77c43b2ce4eff83f472de25022b6c", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.832861 0.836411 \n", " 1 0.805658 0.817018 \n", " 2 0.789209 0.810872 \n", "\n" ] }, { "data": { "text/plain": [ "[0.8108725]" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "collapsed": true }, "outputs": [], "source": [ "set_lrs(opt, 1e-2)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "64dc3f84d60d415abfaf2308e7fb2acf", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.733431 0.802443 \n", " 1 0.726335 0.800945 \n", " 2 0.756487 0.800443 \n", "\n" ] }, { "data": { "text/plain": [ "[0.800443]" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mini neural net\n", "\n", "Now, we could take our user and movie embedding values, stick them together, and feed them into a linear layer, effectively creating a neural network.\n", "\n", "\n", "\n", "To create linear layers, we will use the PyTorch `nn.Linear` class. Note, this class already has biases built into it, so there is no need for separate bias vectors." ] }, { "cell_type": "code", "execution_count": 106, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class EmbeddingNet(nn.Module):\n", " def __init__(self, number_of_users, number_of_movies, number_hidden_activations=10, p1=0.05, p2=0.5):\n", " super().__init__()\n", " \n", " # Set up our embedding layers\n", " (self.user_embedding_matrix, self.movie_embedding_matrix) = [get_embedding(*o) for o in [\n", " (number_of_users, number_of_factors), (number_of_movies, number_of_factors)\n", " ]]\n", " \n", " # Set up the first linear layer. Since we are sticking together our users and movies, *2\n", " self.linear_layer_1 = nn.Linear(number_of_factors*2, number_hidden_activations)\n", " \n", " # Set up second linear layer, which will give the output\n", " self.linear_layer_2 = nn.Linear(number_hidden_activations, 1)\n", " \n", " self.dropout1 = nn.Dropout(p1)\n", " self.dropout2 = nn.Dropout(p2)\n", " \n", " def forward(self, categorical, continuous):\n", " users, movies = categorical[:,0], categorical[:,1]\n", " \n", " # Now, first we get the values from our embedding matrix, and concatenate the columns (dim=1)\n", " # and then run dropout on them\n", " x = self.dropout1(torch.cat([self.user_embedding_matrix(users),self.movie_embedding_matrix(movies)], dim=1))\n", " \n", " # Next, feed this into our first linear layer, run it through ReLU, and perform dropout\n", " x = self.dropout2(F.relu(self.linear_layer_1(x)))\n", " \n", " # Lastly, we feed it into our second linear layer, run it through sigmoid and normalize\n", " # Linear output function\n", " return F.sigmoid(self.linear_layer_2(x)) * (max_rating-min_rating+1) + min_rating-0.5\n", " " ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "collapsed": true }, "outputs": [], "source": [ "weight_decay=1e-5\n", "model = EmbeddingNet(number_of_users, number_of_movies).cuda()\n", "opt = optim.Adam(model.parameters(), 1e-3, weight_decay=weight_decay)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Note on fit.\n", "When calling `fit`, we pass it a loss/cost function that it can use to measure the success of the function with.\n", "\n", "E.g., `F.mse_loss`." ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1b5d9007c4784b26bc555910aa75096c", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.88798 0.817012 \n", " 1 0.79681 0.796811 \n", " 2 0.802571 0.79135 \n", "\n" ] }, { "data": { "text/plain": [ "[0.79135036]" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "code", "execution_count": 109, "metadata": { "collapsed": true }, "outputs": [], "source": [ "set_lrs(opt, 1e-3)" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b34e934abe7645dda72a331db356b5d1", "version_major": 2, "version_minor": 0 }, "text/html": [ "

Failed to display Jupyter Widget of type HBox.

\n", "

\n", " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", " that the widgets JavaScript is still loading. If this message persists, it\n", " likely means that the widgets JavaScript library is either not installed or\n", " not enabled. See the Jupyter\n", " Widgets Documentation for setup instructions.\n", "

\n", "

\n", " If you're reading this message in another frontend (for example, a static\n", " rendering on GitHub or NBViewer),\n", " it may mean that your frontend doesn't currently support widgets.\n", "

\n" ], "text/plain": [ "HBox(children=(IntProgress(value=0, description='Epoch', max=3), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "epoch trn_loss val_loss \n", " 0 0.778022 0.789235 \n", " 1 0.761803 0.789287 \n", " 2 0.765764 0.794108 \n", "\n" ] }, { "data": { "text/plain": [ "[0.7941082]" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit(model, data, 3, opt, F.mse_loss)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }