From 4b6ba97e1b110a3d31e8880050e76a8684893ace Mon Sep 17 00:00:00 2001 From: Chris Hodapp Date: Sun, 8 Apr 2018 13:11:40 -0400 Subject: [PATCH] Sort of fixed table issue with CSS. Draft of Recommenders post. The post needs the conversion to be handled a little better, but that's about it. --- css/default.css | 8 + drafts/2017-01-08-retrospect-foresight.org | 2 + ...2018-04-08-recommender-systems-1-export.md | 3824 +++++++++++++++++ drafts/2018-04-08-recommender-systems-1.md | 1654 +++++++ .../2018-04-08-recommenders/output_94_0.png | Bin 0 -> 226938 bytes .../2018-04-08-recommenders/output_96_0.png | Bin 0 -> 237168 bytes posts/2018-03-09-python-asyncio.org | 45 +- 7 files changed, 5500 insertions(+), 33 deletions(-) create mode 100644 drafts/2018-04-08-recommender-systems-1-export.md create mode 100644 drafts/2018-04-08-recommender-systems-1.md create mode 100644 images/2018-04-08-recommenders/output_94_0.png create mode 100644 images/2018-04-08-recommenders/output_96_0.png diff --git a/css/default.css b/css/default.css index 89d82a2..4fd1dc1 100644 --- a/css/default.css +++ b/css/default.css @@ -59,3 +59,11 @@ div.info { font-size: 14px; font-style: italic; } + +table td, table th { + padding: 0.5em; + # border-bottom: 0.5px solid black +} +table > thead > tr:last-child > * { + border-bottom: 2px solid black +} diff --git a/drafts/2017-01-08-retrospect-foresight.org b/drafts/2017-01-08-retrospect-foresight.org index ec6ae42..a1ee47d 100644 --- a/drafts/2017-01-08-retrospect-foresight.org +++ b/drafts/2017-01-08-retrospect-foresight.org @@ -48,3 +48,5 @@ wildly impractical, or a mere facade over what is already established. foresight. - [[https://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/][As We May Think (Vannevar Bush)]] - "Do you remember a time when..." only goes so far. + +# Tools For Thought diff --git a/drafts/2018-04-08-recommender-systems-1-export.md b/drafts/2018-04-08-recommender-systems-1-export.md new file mode 100644 index 0000000..5ec46e4 --- /dev/null +++ b/drafts/2018-04-08-recommender-systems-1-export.md @@ -0,0 +1,3824 @@ + +# Recommender Systems, Part 1 (Collaborative Filtering) +- Author: Chris Hodapp +- Date: 2018-03-21 + +# Table of Contents + +- [1. Introduction](#1.-Introduction) + - [1.1. Motivation](#1.1.-Motivation) + - [1.2. Organization](#1.2.-Organization) +- [2. Dependencies & Setup](#2.-Dependencies-&-Setup) +- [3. Loading data](#3.-Loading-data) + - [3.1. Aggregation](#3.1.-Aggregation) +- [4. Utility Matrix](#4.-Utility-Matrix) +- [5. Slope One Predictors](#5.-Slope-One-Predictors) + - [5.1. Weighted Slope One](#5.1.-Weighted-Slope-One) + - [5.2. Linear Algebra Tricks](#5.2.-Linear-Algebra-Tricks) + - [5.3. Implementation](#5.3.-Implementation) +- [6. "SVD" algorithm](#6.-%22SVD%22-algorithm) + - [6.1. Model & Background](#6.1.-Model-&-Background) + - [6.2. Motivation](#6.2.-Motivation) + - [6.3. Prediction & Error Function](#6.3.-Prediction-&-Error-Function) + - [6.4. Gradients & Gradient Descent Updates](#6.4.-Gradients-&-Gradient-Descent-Updates) + - [6.5. Implementation](#6.5.-Implementation) + - [6.6. Running & Testing](#6.6.-Running-&-Testing) + - [6.7. Visualization of Latent Space](#6.7.-Visualization-of-Latent-Space) + - [6.8. Bias](#6.8.-Bias) +- [7. Implementations in scikit-surprise](#7.-Implementations-in-scikit-surprise) +- [8. Overall results](#8.-Overall-results) +- [9. Further Work](#9.-Further-Work) + +# 1. Introduction + +The aim of this notebook is to briefly explain *recommender systems*, show some specific examples of them, and to demonstrate simple implementations of them in Python/NumPy/Pandas. + +Recommender systems are quite a broad subject on their own. This notebook focuses on movie recommendations from explicit ratings. That is, it's focusing on the scenario in which: + +- There are a large number of users and a large number of movies. +- Users have supplied ratings on certain movies. +- The movies are different for each user, and the vast majority of users have rated only a tiny fraction of the overall movies. + +The goal is to make predictions based on this data, such as: + +- How a given user will most likely rate specific movies they have not seen before +- What "new" movies a system might recommended to them + +This uses the [MovieLens 20M](https://grouplens.org/datasets/movielens/20m/) dataset, which (as the name suggests) has 20,000,000 movie ratings. You can download it yourself, and probably should if you wish to run the code. Be forewarned that this code runs quite slowly as I've put little effort to optimizing it. + +This also focuses on *collaborative filtering*, one basic form of a recommender system. Broadly, this method predicts unknown ratings by using the similarities between users. (This is in contrast to *content-based filtering*, which could work with the similarities between movies based on some properties the MovieLens dataset provides for each movie, such as genre. I'll cover this in another post.) + +I refer several times in this notebook to the free textbook [Mining of Massive Datasets](http://www.mmds.org/) (hereafter, just "MMDS"), mostly to chapter 9, *Recommendation Systems*. It's worth reading if you want to know more. + +## 1.1. Motivation + +I try to clearly implement everything I talk about here, and be specific about the method. Some other work I read in this area had me rather frustrated with its tendency to completely ignore implementation details that are both critical and very difficult for an outsider (i.e. me) to articulate questions on, and this is something I try to avoid. I'd like for you to be able to execute it yourself, to build intuition on how the math works, to understand why the code implements the math as it does, and to have good starting points for further research. + +In the Slope One explanation, this means I give perhaps a needless amount of detail behind the linear algebra implementation, but maybe some will find it valuable (besides just me when I try to read this code in 3 months). + +## 1.2. Organization + +I start out by loading the movielens data, exploring it briefly, and converting it to a form I need. + +Following that, I start with a simple (but surprisingly effective) collaborative filtering model, Slope One Predictors. I explain it, implement it with some linear algebra shortcuts, and run it on the data. + +I go from here to a slightly more complicated method (the badly-named "SVD" algorithm) that is based on matrix completion using matrix decomposition. I explain this, implement it with gradient-descent, and run it on the data. I also use this as an opportunity to visualize a latent feature space that the model learns. + +Near the end, I show how to run the same basic algorithms in [scikit-surprise](http://surpriselib.com/) rather than implement them by hand. + +# 2. Dependencies & Setup + +Download [MovieLens 20M](https://grouplens.org/datasets/movielens/20m/) and uncompress it in the local directory. There should be a `ml-20m` folder. + +For Python dependencies, everything I need is imported below: pandas, numpy, matplotlib, and scikit-learn. + + +```python +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import scipy.sparse +import sklearn.model_selection +``` + +# 3. Loading data + +I don't explain this in detail. This is just standard calls in [Pandas](https://pandas.pydata.org/) and little details that are boring but essential: + + +```python +ml = pd.read_csv("ml-20m/ratings.csv", + header=0, + dtype={"user_id": np.int32, "movie_id": np.int32, "rating": np.float32, "time": np.int64}, + names=("user_id", "movie_id", "rating", "time")) +# Convert Unix seconds to a Pandas timestamp: +ml["time"] = pd.to_datetime(ml["time"], unit="s") +``` + +Below is just to inspect that data appears to be okay: + + +```python +ml.info() +``` + + + RangeIndex: 20000263 entries, 0 to 20000262 + Data columns (total 4 columns): + user_id int32 + movie_id int32 + rating float32 + time datetime64[ns] + dtypes: datetime64[ns](1), float32(1), int32(2) + memory usage: 381.5 MB + + + +```python +ml.describe() +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
user_idmovie_idrating
count2.000026e+072.000026e+072.000026e+07
mean6.904587e+049.041567e+033.494030e+00
std4.003863e+041.978948e+049.998490e-01
min1.000000e+001.000000e+005.000000e-01
25%3.439500e+049.020000e+023.000000e+00
50%6.914100e+042.167000e+033.500000e+00
75%1.036370e+054.770000e+034.000000e+00
max1.384930e+051.312620e+055.000000e+00
+
+ + + + +```python +ml[:10] +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
user_idmovie_idratingtime
0123.52005-04-02 23:53:47
11293.52005-04-02 23:31:16
21323.52005-04-02 23:33:39
31473.52005-04-02 23:32:07
41503.52005-04-02 23:29:40
511123.52004-09-10 03:09:00
611514.02004-09-10 03:08:54
712234.02005-04-02 23:46:13
812534.02005-04-02 23:35:40
912604.02005-04-02 23:33:46
+
+ + + + +```python +max_user = int(ml["user_id"].max() + 1) +max_movie = int(ml["movie_id"].max() + 1) +max_user, max_movie, max_user * max_movie +``` + + + + + (138494, 131263, 18179137922) + + + +Computing what percent we have of all 'possible' ratings (i.e. every single movie & every single user), this data is rather sparse: + + +```python +print("%.2f%%" % (100 * ml.shape[0] / (max_user * max_movie))) +``` + + 0.11% + + +## 3.1. Aggregation + +This is partly just to explore the data a little, and partly because we need to aggregate some information to use in models later - like the number of ratings for each movie, and each movie's average rating. + +The dataset includes a lot of per-movie information too, but we only bother with the title so far: + + +```python +names = pd.read_csv( + "ml-20m/movies.csv", header=0, + encoding = "ISO-8859-1", index_col=0, + names=("movie_id", "movie_title"), usecols=[0,1]) +``` + + +```python +movie_group = ml.groupby("movie_id") +movie_stats = names.\ + join(movie_group.size().rename("num_ratings")).\ + join(movie_group.mean()["rating"].rename("avg_rating")) +``` + +Sorting by number of ratings and taking the top 25, this looks pretty sensible: + + +```python +movie_stats.sort_values("num_ratings", ascending=False)[:25] +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titlenum_ratingsavg_rating
movie_id
296Pulp Fiction (1994)67310.04.174231
356Forrest Gump (1994)66172.04.029000
318Shawshank Redemption, The (1994)63366.04.446990
593Silence of the Lambs, The (1991)63299.04.177056
480Jurassic Park (1993)59715.03.664741
260Star Wars: Episode IV - A New Hope (1977)54502.04.190672
110Braveheart (1995)53769.04.042534
589Terminator 2: Judgment Day (1991)52244.03.931954
2571Matrix, The (1999)51334.04.187186
527Schindler's List (1993)50054.04.310175
1Toy Story (1995)49695.03.921240
457Fugitive, The (1993)49581.03.985690
150Apollo 13 (1995)47777.03.868598
780Independence Day (a.k.a. ID4) (1996)47048.03.370962
50Usual Suspects, The (1995)47006.04.334372
1210Star Wars: Episode VI - Return of the Jedi (1983)46839.04.004622
592Batman (1989)46054.03.402365
1196Star Wars: Episode V - The Empire Strikes Back...45313.04.188202
2858American Beauty (1999)44987.04.155934
32Twelve Monkeys (a.k.a. 12 Monkeys) (1995)44980.03.898055
590Dances with Wolves (1990)44208.03.728465
1198Raiders of the Lost Ark (Indiana Jones and the...43295.04.219009
608Fargo (1996)43272.04.112359
47Seven (a.k.a. Se7en) (1995)43249.04.053493
380True Lies (1994)43159.03.491149
+
+ + + +Prior to anything else, split training/test data out with a specific random seed: + + +```python +ml_train, ml_test = sklearn.model_selection.train_test_split(ml, test_size=0.25, random_state=12345678) +``` + +# 4. Utility Matrix + +The notion of the *utility matrix* comes up in many methods as a way of +expressing the ratings data. For one thing, this opens up the data to an +array of linear algebra operations (such as matrix multiplication and +[SVD](https://en.wikipedia.org/wiki/Singular-value_decomposition)) that +are useful for transforming the data, meaningful for interpreting it, +very readily-available and optimized, and provide a common language for +discussing and analyzing what we are actually doing to the data. (For some +examples of this, check out section 11.3.2 in [MMDS](http://www.mmds.org/).) + +In a utility matrix, each row represents one user, each column represents +one item (a movie, in our case), and each element represents a user's +rating of an item. If we have $n$ users and $m$ movies, then this is a +$n \times m$ matrix $U$ for which $U_{k,i}$ is user $k$'s rating for +movie $i$ - assuming we've numbered our users and our movies. + +Users have typically rated only a fraction of movies, and so most of +the elements of this matrix are unknown. Algorithms represent this +in different ways; the use of [sparse matrices](https://en.wikipedia.org/wiki/Sparse_matrix) +where a value of 0 signifies unknown information is common. + +Some algorithms involve constructing the utility matrix explicitly and +doing matrix operations directly on it. The approach to Slope One that +we do later works somewhat this way. Other methods just use it as a method of +analyzing something from a linear algebra standpoint, but dispense with +the need for an explicit matrix within the algorithm. The "SVD" method +later does this. + +We'll convert to a utility matrix, for which the naive way is creating a dense matrix: + +```python +m = np.zeros((max_user, max_movie)) +m[df["user_id"], df["movie_id"]] = df["rating"] +``` + +...but we'd be dealing with a 18,179,137,922-element matrix that's a little bit unusable here (at least it is for me since I only have 32 GB RAM), so we'll use [sparse matrices](https://docs.scipy.org/doc/scipy/reference/sparse.html). + + +```python +def df2mat(df): + m = scipy.sparse.coo_matrix( + (df["rating"], (df["user_id"], df["movie_id"])), + shape=(max_user, max_movie), + dtype=np.float32).tocsc() + return m, m > 0 + +ml_mat_train, ml_mask_train = df2mat(ml_train) +ml_mat_test, ml_mask_test = df2mat(ml_test) +``` + +We need a mask for some later steps, hence the m > 0 step. Ratings go only from 1 to 5, so values of 0 are automatically unknown/missing data, which fits with how sparse matrices work. + + +```python +ml_mat_train +``` + + + + + <138494x131263 sparse matrix of type '' + with 15000197 stored elements in Compressed Sparse Column format> + + + +To demonstrate that the matrix and dataframe have the same data: + + +```python +ml_train[:10] +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
user_idmovie_idratingtime
137469189497673714.52009-11-04 05:51:26
1585552910970119683.02002-04-08 06:04:50
14795301001722483.02014-09-11 12:05:12
1643870511380612104.52005-04-24 19:15:31
1701483411770142234.02001-07-18 07:45:15
26268241781873252.52008-10-29 14:49:13
1060498673349295.02000-10-25 20:55:56
1531101410584642264.52004-07-30 18:12:26
85147765881212854.02000-04-24 20:39:46
38026432591932752.52010-06-18 00:48:40
+
+ + + + +```python +list(ml_train.iloc[:10].rating) +``` + + + + + [4.5, 3.0, 3.0, 4.5, 4.0, 2.5, 5.0, 4.5, 4.0, 2.5] + + + + +```python +user_ids = list(ml_train.iloc[:10].user_id) +movie_ids = list(ml_train.iloc[:10].movie_id) +[ml_mat_train[u,i] for u,i in zip(user_ids, movie_ids)] +``` + + + + + [4.5, 3.0, 3.0, 4.5, 4.0, 2.5, 5.0, 4.5, 4.0, 2.5] + + + +Okay, enough of that; we can begin with some actual predictions. + +# 5. Slope One Predictors + +We'll begin with a method of predicting ratings that is wonderfully +simple to understand, equally simple to implement, very fast, +and surprisingly effective. This method is described in the +paper [Slope One Predictors for Online Rating-Based Collaborative Filtering](https://arxiv.org/pdf/cs/0702144v1.pdf). They can be computed given +just some arithmetic over the dataset we just loaded. +Neither linear algebra nor calculus nor numerical +approximation is needed, while all three are needed for the +[next method](#"SVD"-algorithm). + +I'll give a contrived example below to explain them. + +Consider a user Bob. Bob is enthusiastic, but has rather simple +tastes: he mostly just watches Clint Eastwood movies. In fact, he's +watched and rated nearly all of them, and basically nothing else. + +Now, suppose we want to predict how much Bob will like something +completely different and unheard of (to him at least), like... I don't +know... *Citizen Kane*. + +Here's Slope One in a nutshell: + +1. First, find the users who rated both *Citizen Kane* and any of + the Clint Eastwood movies that Bob rated. +2. Now, for each movie that comes up above, compute a _deviation_ + which tells us: On average, how differently (i.e. how much higher + or lower) did those users rate Citizen Kane compared to this movie? (For + instance, we'll have a number for how *Citizen Kane* was rated + compared to *Dirty Harry*, and perhaps it's +0.6 - meaning that on + average, users who rated both movies rated *Citizen Kane* about 0.6 + stars above *Dirty Harry*. We'd have another deviation for + *Citizen Kane* compared to *Gran Torino*, another for *Citizen + Kane* compared to *The Good, the Bad and the Ugly*, and so on - for + every movie that Bob rated, provided that other users who rated + *Citizen Kane* also rated the movie.) +3. If that deviation between *Citizen Kane* and *Dirty Harry* was + +0.6, it's reasonable that adding 0.6 from Bob's rating on *Dirty + Harry* would give one prediction of how Bob might rate *Citizen + Kane*. We can then generate more predictions based on the ratings + he gave the other movies - anything for which we could compute a + deviation. +4. To turn this to a single prediction, we could just average all + those predictions together. + +Note carefully that step 2 is _not_ asking for a difference in average +ratings across all users. It is asking for an average of differences in +ratings across a specific set of users. + +Now, I'm not sure that Bob is an actual user in this dataset, but I +will go through these steps with some real data. I arbitrarily chose +user 28812: + + +```python +pd.set_option('display.max_rows', 10) +``` + + +```python +target_user = 28812 +names.merge(ml_train[ml_train.user_id == target_user], right_on="movie_id", left_index=True) +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titleuser_idmovie_idratingtime
4229884Jumanji (1995)2881225.01996-09-23 02:08:39
4229885Heat (1995)2881264.01996-09-23 02:11:00
4229886GoldenEye (1995)28812105.01996-09-23 02:03:57
4229887Ace Ventura: When Nature Calls (1995)28812194.01996-09-23 02:05:59
4229888Get Shorty (1995)28812215.01996-09-23 02:05:59
..................
4229953Beauty and the Beast (1991)288125954.01996-09-23 02:03:07
4229954Pretty Woman (1990)288125975.01996-09-23 02:06:22
4229957Independence Day (a.k.a. ID4) (1996)288127805.01996-09-23 02:09:02
4229959Phenomenon (1996)288128025.01996-09-23 02:09:02
4229960Die Hard (1988)2881210365.01996-09-23 02:09:02
+

67 rows × 5 columns

+
+ + + +I picked *Home Alone*, movie ID 586, as the one we want to predict user 28812's rating on. This isn't completely arbitrary. I chose it because the testing data contains the actual rating and we can compare against it later. + + +```python +target_movie = 586 +names[names.index == target_movie] +``` + + + + +
+ + + + + + + + + + + + + + + + + + +
movie_title
movie_id
586Home Alone (1990)
+
+ + + +Now, from step #1 and about half of step #2: What users also rated one of the movies that 28812 rated, *and* rated *Home Alone*? What were those ratings? + + +```python +users_df = ml_train[ml_train.user_id == target_user][["movie_id"]]. \ + merge(ml_train, on="movie_id")[["movie_id", "user_id", "rating"]]. \ + merge(ml_train[ml_train.movie_id == target_movie], on="user_id"). \ + drop(["movie_id_y", "time"], axis=1) +# time is irrelevant to us, movie_id_y is just always 3175 +users_df +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_id_xuser_idrating_xrating_y
0329175933.04.0
1480175934.04.0
2588175934.04.0
3454175934.04.0
4457175935.04.0
...............
522686296607655.05.0
5226872903663.03.0
52268821262713.04.0
522689595827602.04.0
522690595183064.55.0
+

522691 rows × 4 columns

+
+ + + +Each row has one user's ratings of both *Home Alone* (it's the `rating_y` column), and some other movie that 28812 rated (`rating_x`), so we can easily find the deviation of each individual rating - how much higher they rated *Home Alone* than the respective movie for `movie_id_x`: + + +```python +users_df = users_df.assign(rating_dev = users_df.rating_y - users_df.rating_x) +users_df +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_id_xuser_idrating_xrating_yrating_dev
0329175933.04.01.0
1480175934.04.00.0
2588175934.04.00.0
3454175934.04.00.0
4457175935.04.0-1.0
..................
522686296607655.05.00.0
5226872903663.03.00.0
52268821262713.04.01.0
522689595827602.04.02.0
522690595183064.55.00.5
+

522691 rows × 5 columns

+
+ + + +...and for the rest of step 2, turn this to an average deviation by grouping by movie ID. For the sake of displaying it, inner join with the dataframe that has movie titles: + + +```python +pd.set_option('display.max_rows', 20) +rating_dev = users_df.groupby("movie_id_x").mean()["rating_dev"] +names.join(rating_dev, how="inner").sort_values("rating_dev") +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titlerating_dev
318Shawshank Redemption, The (1994)-1.391784
50Usual Suspects, The (1995)-1.316480
527Schindler's List (1993)-1.283499
296Pulp Fiction (1994)-1.116245
593Silence of the Lambs, The (1991)-1.114274
32Twelve Monkeys (a.k.a. 12 Monkeys) (1995)-0.953710
356Forrest Gump (1994)-0.946414
110Braveheart (1995)-0.941996
457Fugitive, The (1993)-0.876993
1036Die Hard (1988)-0.871772
.........
344Ace Ventura: Pet Detective (1994)0.141987
231Dumb & Dumber (Dumb and Dumber) (1994)0.163693
153Batman Forever (1995)0.218621
208Waterworld (1995)0.250881
315Specialist, The (1994)0.276409
420Beverly Hills Cop III (1994)0.382058
432City Slickers II: The Legend of Curly's Gold (...0.419339
173Judge Dredd (1995)0.518570
19Ace Ventura: When Nature Calls (1995)0.530155
160Congo (1995)0.559034
+

67 rows × 2 columns

+
+ + + +The numbers above then tell us that, on average, users who watched both movies rated *Home Alone* about 1.4 below *Shawshank Redemption*; likewise, 1.3 below *Usual Suspects*, and so on, up to 0.53 above *Ace Ventura: When Nature Calls* and 0.56 above *Congo*. This fits with what we might expect (setting aside any strong opinions people have about Home Alone or about Jim Carrey's acting). + +For step 3, we can produce a prediction from each deviation above by adding it to each of user 28812's ratings for the respective movies: + + +```python +df = ml_train[ml_train.user_id == target_user]. \ + join(rating_dev, on="movie_id") +df = df.assign(rating_adj = df["rating"] + df["rating_dev"])[["user_id", "movie_id", "rating", "rating_adj"]] +df.join(names, on="movie_id").sort_values("movie_title") +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
user_idmovie_idratingrating_adjmovie_title
4229920288123443.03.141987Ace Ventura: Pet Detective (1994)
422988728812194.04.530155Ace Ventura: When Nature Calls (1995)
4229930288124104.04.127372Addams Family Values (1993)
4229948288125884.03.470915Aladdin (1992)
4229895288121505.04.254292Apollo 13 (1995)
422989028812344.03.588504Babe (1995)
4229951288125924.03.657092Batman (1989)
4229897288121534.04.218620Batman Forever (1995)
4229953288125954.03.515051Beauty and the Beast (1991)
4229931288124205.05.382058Beverly Hills Cop III (1994)
..................
4229928288123775.04.599287Speed (1994)
4229918288123294.03.767164Star Trek: Generations (1994)
4229915288123165.04.719226Stargate (1994)
4229949288125894.03.151323Terminator 2: Judgment Day (1991)
4229945288125535.04.431266Tombstone (1993)
4229929288123805.04.623296True Lies (1994)
422988928812325.04.046289Twelve Monkeys (a.k.a. 12 Monkeys) (1995)
422989228812503.01.683520Usual Suspects, The (1995)
4229903288122083.03.250881Waterworld (1995)
4229919288123394.03.727966While You Were Sleeping (1995)
+

67 rows × 5 columns

+
+ + + +That is, every 'adjusted' rating above (the `rating_adj` column) is something like: based on just this movie, what rating would we expect user 28812 to give *Home Alone*? Produce the final prediction by averaging all these: + + +```python +df["rating_adj"].mean() +``` + + + + + 4.087520122528076 + + + +As mentioned above, we also happen to have the user's actual rating on *Home Alone* in the test set (i.e. we didn't train on it), so we can compare here: + + +```python +ml_test[(ml_test.user_id == target_user) & (ml_test.movie_id == target_movie)]["rating"].iloc[0] +``` + + + + + 4.0 + + + +That's quite close - though that may just be luck. It's hard to say from one point. + +## 5.1. Weighted Slope One + +Take a look at the table below. This is a similar aggregation to what we just did to determine average deviation - but this instead counts up the number of ratings that went into each average deviation. + + +```python +num_ratings = users_df.groupby("movie_id_x").count()["rating_dev"].rename("num_ratings") +names.join(num_ratings, how="inner").sort_values("num_ratings") +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titlenum_ratings
802Phenomenon (1996)3147
315Specialist, The (1994)3247
282Nell (1994)3257
151Rob Roy (1995)3351
236French Kiss (1995)3645
432City Slickers II: The Legend of Curly's Gold (...4054
553Tombstone (1993)4241
173Judge Dredd (1995)4308
160Congo (1995)4472
420Beverly Hills Cop III (1994)4693
.........
364Lion King, The (1994)10864
592Batman (1989)10879
597Pretty Woman (1990)10940
589Terminator 2: Judgment Day (1991)11416
377Speed (1994)11502
296Pulp Fiction (1994)11893
500Mrs. Doubtfire (1993)11915
593Silence of the Lambs, The (1991)12120
480Jurassic Park (1993)13546
356Forrest Gump (1994)13847
+

67 rows × 2 columns

+
+ + + +We produced an overall average prediction by averaging together +all of the average deviations produced from the above ratings. +This has a potential problem that can occur. Look at the table +above, and note that *Forrest Gump* has around four times as many +ratings as *Phenomenon*, yet both movies receive the same total +number of votes (so to speak). + +This isn't as drastic of an example as possible, but we might like +to adjust things so that the amount of weight that's given to each +average deviation depends on how many ratings are in it; presumably, +the more ratings that go into that average deviation, the better of +an estimate it is. + +This is easy to do, luckily: + + +```python +df = df.join(num_ratings, on="movie_id") +df = df.assign(rating_weighted = df["rating_adj"] * df["num_ratings"]) +df +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
user_idmovie_idratingrating_adjnum_ratingsrating_weighted
4229918288123294.03.767164636523978.000326
4229939288124805.04.4004871354659609.002631
4229948288125884.03.4709151036635979.500767
4229899288121614.03.415830577419723.000448
4229914288123155.05.276409324717132.500507
4229936288124545.04.638914766335547.998812
4229937288124575.04.1230071085344746.998200
4229923288123565.04.0535861384756129.998825
4229944288125395.04.621340932543093.998063
4229894288121415.04.611132539024853.999691
.....................
4229909288122825.04.707246325715331.499658
42298852881264.03.218793505516271.000597
4229917288123185.03.6082161055338077.501431
4229900288121654.03.639870875131852.499657
4229901288121734.04.518570430819465.999329
422989228812503.01.683520849514301.500030
4229911288122924.03.744914702926323.000892
4229912288122964.02.8837551189334296.500678
42298842881225.04.954595742236773.001211
4229953288125954.03.515051903631761.999825
+

67 rows × 6 columns

+
+ + + + +```python +df["rating_weighted"].sum() / df["num_ratings"].sum() +``` + + + + + 4.02968199025023 + + + +It changes the answer, but only very slightly. + +## 5.2. Linear Algebra Tricks + +I said linear algebra isn't needed, which is true. Everything above +was implemented just in operations over Pandas dataframes, albeit +with a lot of merges and joins, and it's probably not very efficient. +Someone adept in SQL could probably implement this directly over +some database tables in a few queries. + +However, the entire Slope One method can be implemented in a faster +and concise way with a couple matrix operations. If matrices make your +eyes glaze over, you can probably just skip this section. + +### 5.2.1. Short Answer + +Let $U$ be the utility matrix. Let $M$ be a binary matrix for which $M_{i,j}=1$ if user $i$ rated movie $j$, otherwise 0. Compute the model's matrices with: + +$$ +\begin{align} +C & =M^\top M \\ +D &= \left(M^\top U - (M^\top U)^\top\right) /\ \textrm{max}(1, M^\top M) +\end{align} +$$ + +where $/$ is Hadamard (i.e. elementwise) division, and $\textrm{max}$ is elementwise maximum with 1. Then, the below gives the prediction for how user $u$ will rate movie $j$: + +$$ +P(u)_j = \frac{[M_u \odot (C_j > 0)] \cdot (D_j + U_u) - U_{u,j}}{M_u \cdot (C_j > 0)} +$$ + +$D_j$ and $C_j$ are row $j$ of $D$ and $C$, respectively. $M_u$ and $U_u$ are column $u$ of $M$ and $U$, respectively. $\odot$ is elementwise multiplication. + +### 5.2.2. Long Answer + +First, we need to have our data encoded as an $n \times m$ utility +matrix (see a [few sections above](#Utility-Matrix) for the definition +of *utility matrix*). +As noted, most elements of this matrix are unknown as users have rated +only a fraction of movies. We can represent this with another +$n \times m$ matrix (specifically a binary matrix), a 'mask' $M$ in +which $M_{k,i}$ is 1 if user $k$ supplied a rating for movie $i$, and +otherwise 0. + +#### 5.2.2.1. Deviation Matrix + +I mentioned *deviation* above and gave an informal definition of it. +The paper gaves a formal but rather terse definition below of the +average deviation of item $i$ with respect to item $j$, and I +then separate out the summation a little: + +$$ +\begin{split} +\textrm{dev}_{j,i} &= \sum_{u \in S_{j,i}(\chi)} \frac{u_j - u_i}{card(S_{j,i}(\chi))} \\ + &= \frac{1}{card(S_{j,i}(\chi))} \sum_{u \in +S_{j,i}(\chi)} u_j - u_i = \frac{1}{card(S_{j,i}(\chi))}\left(\sum_{u +\in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i\right) +\end{split} +$$ + +where: + +- $u_j$ and $u_i$ mean: user $u$'s ratings for movies $i$ and $j$, respectively +- $u \in S_{j,i}(\chi)$ means: all users $u$ who, in the dataset we're + training on, provided a rating for both movie $i$ and movie $j$ +- $card$ is the cardinality of that set, i.e. + ${card(S_{j,i}(\chi))}$ is how many users rated both $i$ and + $j$. + +#### 5.2.2.2. Cardinality/Counts Matrix + +Let's start with computing ${card(S_{j,i}(\chi))}$, the number of +users who rated both movie $i$ and movie $j$. Consider column $i$ of +the mask $M$. For each value in this column, it equals 1 if the +respective user rated movie $i$, or 0 if they did not. Clearly, +simply summing up column $i$ would tell us how many users rated movie +$i$, and the same applies to column $j$ for movie $j$. + +Now, suppose we take element-wise logical AND of columns $i$ and $j$. +The resultant column has a 1 only where both corresponding elements +were 1 - where a user rated both $i$ and $j$. If we sum up this +column, we have exactly the number we need: the number of users who +rated both $i$ and $j$. Some might notice that "elementwise logical +AND" is just "elementwise +multiplication", thus "sum of elementwise logical AND" is just "sum of +elementwise multiplication", which is: dot product. That is, +${card(S_{j,i}(\chi))}=M_j \cdot M_i$ if we use $M_i$ and $M_j$ for +columns $i$ and $j$ of $M$. + +However, we'd like to compute deviation as a matrix for all $i$ and +$j$, so we'll likewise need ${card(S_{j,i}(\chi))}$ for every single +combination of $i$ and $j$ - that is, we need a dot product between +every single pair of columns from $M$. This is incidentally just +matrix multiplication: + +$$C=M^\top M$$ + +since $C_{i,j}=card(S_{j,i}(\chi))$ is the dot product of row $i$ of $M^T$ - which is column +$i$ of $M$ - and column $j$ of $M$. + +That was the first half of what we needed for $\textrm{dev}_{j,i}$. +We still need the other half: + +$$\sum_{u \in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i$$ + +We can apply a similar trick here. Consider first what $\sum_{u \in +S_{j,i}(\chi)} u_j$ means: It is the sum of only those ratings of +movie $j$ that were done by a user who also rated movie $i$. +Likewise, $\sum_{u \in S_{j,i}(\chi)} u_i$ is the sum of only those +ratings of movie $i$ that were done by a user who also rated movie +$j$. (Note the symmetry: it's over the same set of users, because +it's always the users who rated both $i$ and $j$.) + +Let's call the utility matrix $U$, and use $U_i$ and $U_j$ to refer +to columns $i$ and $j$ of it (just as in $M$). $U_i$ has each rating +of movie $i$, but we want only the sum of the ratings done by a user +who also rated movie $j$. Like before, the dot product of $U_i$ and +$M_j$ (consider the definition of $M_j$) computes this, and so: + +$$\sum_{u \in S_{j,i}(\chi)} u_j = M_i \cdot U_j$$ + +and as with $C$, since we want every pairwise dot product, this summation just +equals element $(i,j)$ of $M^\top U$. The other half of the summation, +$\sum_{u \in S_{j,i}(\chi)} u_i$, equals $M_j \cdot U_i$, which is just +the transpose of this matrix: + +$$\sum_{u \in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i = M^\top U - (M^\top U)^\top = M^\top U - U^\top M$$ + +So, finally, we can compute an entire deviation matrix at once like: + +$$D = \left(M^\top U - (M^\top U)^\top\right) /\ M^\top M$$ + +where $/$ is Hadamard (i.e. elementwise) division, and $D_{j,i} = \textrm{dev}_{j,i}$. + +By convention and to avoid division by zero, we treat the case where the denominator and numerator are both 0 as just equaling 0. This comes up only where no ratings exist for there to be a deviation - hence the `np.maximum(1, counts)` below. + +#### 5.2.2.3. Prediction + +Finally, the paper gives the formula to predict how user $u$ will rate movie $j$, and I write this in terms of our matrices: + +$$ +P(u)_j = \frac{1}{card(R_j)}\sum_{i\in R_j} \left(\textrm{dev}_{j,i}+u_i\right) = \frac{1}{card(R_j)}\sum_{i\in R_j} \left(D_{j,i} + U_{u,j} \right) +$$ + +where $R_j = \{i | i \in S(u), i \ne j, card(S_{j,i}(\chi)) > 0\}$, and $S(u)$ is the set of movies that user $u$ has rated. To unpack the paper's somewhat dense notation, the summation is over every movie $i$ that user $u$ rated and that at least one other user rated, except movie $j$. + +We can apply the usual trick yet one more time with a little effort. The summation already goes across a row of $U$ and $D$ (that is, user $u$ is held constant), but covers only certain elements. This is equivalent to a dot product with a mask representing $R_j$. $M_u$, row $u$ of the mask, already represents $S(u)$, and $R_j$ is just $S(u)$ with some more elements removed - which we can mostly represent with $M_u \odot (C_j > 0)$ where $\odot$ is elementwise product (i.e. Hadamard), $C_j$ is column/row $j$ of $C$ (it's symmetric), and where we abuse some notation to say that $C_j > 0$ is a binary vector. Likewise, $D_j$ is row $j$ of $D$. The one correction still required is that we subtract $u_j$ to cover for the $i \ne j$ part of $R_j$. To abuse some more notation: + +$$P(u)_j = \frac{[M_u \odot (C_j > 0)] \cdot (D_j + U_u) - U_{u,j}}{M_u \cdot (C_j > 0)}$$ + +#### 5.2.2.4. Approximation + +The paper also gives a formula that is a suitable approximation for larger data sets: + +$$p^{S1}(u)_j = \bar{u} + \frac{1}{card(R_j)}\sum_{i\in R_j} \textrm{dev}_{j,i}$$ + +where $\bar{u}$ is user $u$'s average rating. This doesn't change the formula much; we can compute $\bar{u}$ simply as column means of $U$. + +## 5.3. Implementation + +I left out another detail above, which is that the above can't really be implemented exactly as written on this dataset (though, it works fine for the much smaller [ml-100k](https://grouplens.org/datasets/movielens/100k/)) because it uses entirely too much memory. + +While $U$ and $M$ can be sparse matrices, $C$ and $D$ sort of must be dense matrices, and for this particular dataset they are a bit too large to work with in memory in this form. Some judicious optimization, attention to datatypes, use of $C$ and $D$ being symmetric and skew-symmetric respectively, and care to avoid extra copies could probably work around this - but I don't do that here. + +However, if we look at the $P(u)_j$ formula above, it refers only to row $j$ of $C$ and $D$ and the formulas for $C$ and $D$ make it easy to compute them by row if needed, or by blocks of rows according to what $u$ and $j$ we need. This is what I do below. + + +```python +def slope_one(U, M, users, movies, approx=True): + M_j = M[:,movies].T.multiply(1) + U_j = U[:,movies].T + Cj = M_j.dot(M).toarray() + MjU = M_j.dot(U).toarray() + UjM = U_j.dot(M).toarray() + Dj = (UjM - MjU) / np.maximum(Cj, 1) + mask = M[users,:].toarray() * (Cj > 0) + U_u = U[users,:].toarray() + if approx: + M_u = M[users,:].toarray() + P_u_j = U_u.sum(axis=1) / M_u.sum(axis=1) + ((mask * Dj).sum(axis=1) - U_u[0,movies]) / np.maximum(mask.sum(axis=1), 1) + else: + P_u_j = ((mask * (U_u + Dj)).sum(axis=1) - U_u[0,movies]) / np.maximum(mask.sum(axis=1), 1) + return P_u_j +``` + +To show that it actually gives the same result as above, and that the approximation produces seemingly no change here: + + +```python +(slope_one(ml_mat_train, ml_mask_train, [target_user], [target_movie])[0], + slope_one(ml_mat_train, ml_mask_train, [target_user], [target_movie], approx=False)[0]) +``` + + + + + (4.0875210502743862, 4.0875210502743862) + + + +This computes training error on a small part (1%) of the data, since doing it over the entire thing would be horrendously slow: + + +```python +def slope_one_err(U, M, users, movies, true_ratings): + # Keep 'users' and 'movies' small (couple hundred maybe) + p = slope_one(U, M, users, movies) + d = p - true_ratings + err_abs = np.abs(d).sum() + err_sq = np.square(d).sum() + return err_abs, err_sq +``` + + +```python +import multiprocessing + +count = int(len(ml_train) * 0.01) +idxs = np.random.permutation(len(ml_train))[:count] +# Memory increases linearly with chunk_size: +chunk_size = 200 +idxs_split = np.array_split(idxs, count // chunk_size) + +def err_part(idxs_part): + df = ml_train.iloc[idxs_part] + users = list(df.user_id) + movies = list(df.movie_id) + true_ratings = np.array(df.rating) + err_abs, err_sq = slope_one_err(ml_mat_train, ml_mask_train, users, movies, true_ratings) + return err_abs, err_sq + +with multiprocessing.Pool() as p: + errs = p.map(err_part, idxs_split) + err_mae_train = sum([e[0] for e in errs]) / count + err_rms_train = np.sqrt(sum([e[1] for e in errs]) / count) +``` + +and then likewise on 2% of the testing data (it's a smaller set to start): + + +```python +import multiprocessing + +count = int(len(ml_test) * 0.02) +idxs = np.random.permutation(len(ml_test))[:count] +chunk_size = 200 +idxs_split = np.array_split(idxs, count // chunk_size) + +def err_part(idxs_part): + df = ml_test.iloc[idxs_part] + users = list(df.user_id) + movies = list(df.movie_id) + true_ratings = np.array(df.rating) + err_abs, err_sq = slope_one_err(ml_mat_train, ml_mask_train, users, movies, true_ratings) + return err_abs, err_sq + +with multiprocessing.Pool() as p: + errs = p.map(err_part, idxs_split) + err_mae_test = sum([e[0] for e in errs]) / count + err_rms_test = np.sqrt(sum([e[1] for e in errs]) / count) +``` + + +```python +# These are used later for comparison: +test_results = [("", "Slope One", err_mae_test, err_rms_test)] +``` + + +```python +print("Training error: MAE={:.3f}, RMSE={:.3f}".format(err_mae_train, err_rms_train)) +print("Testing error: MAE={:.3f}, RMSE={:.3f}".format(err_mae_test, err_rms_test)) +``` + + Training error: MAE=0.640, RMSE=0.834 + Testing error: MAE=0.657, RMSE=0.856 + + +# 6. "SVD" algorithm + +## 6.1. Model & Background + +This basic model is very easy to implement, but the implementation won't make sense without some more involved derivation. + +I'm not sure this method has a clear name. Surprise calls it an SVD algorithm, but it neither uses SVD nor really computes it; it's just vaguely SVD-like. To confuse matters further, several other algorithms compute similar things and do use SVD, but are completely unrelated. + +References on this model are in a few different places: + +- [SVD](https://surprise.readthedocs.io/en/stable/matrix_factorization.html#surprise.prediction_algorithms.matrix_factorization.SVD) in Surprise gives enough formulas to implement from. +- Simon Funk's post [Netflix Update: Try This at Home](http://sifter.org/~simon/journal/20061211.html) is an excellent overview of the rationale and of some practical concerns on how to run this on the much larger Netflix dataset (100,000,000 ratings, instead of 100,000). +- The paywalled article [Matrix Factorization Techniques for Recommender Systems](http://ieeexplore.ieee.org/abstract/document/5197422/) gives a little background from a higher level. + +## 6.2. Motivation + +We again start from the $n \times m$ utility matrix $U$. As $m$ and $n$ tend to be quite large, $U$ has a lot of degrees of freedom. If we want to be able to predict anything at all, we must assume some fairly strict constraints - and one form of this is assuming that we don't *really* have that many degrees of freedom, and that there are actually some much smaller latent factors controlling everything. + +One common form of this is assuming that the rank of matrix $U$ - its *actual* dimensionality - is much lower. Let's say its rank is $r$. We could then represent $U$ as the matrix product of smaller matrices, i.e. $U=P^\top Q$ where $P$ is a $r \times n$ matrix and $Q$ is $r \times m$. + +If we can find dense matrices $P$ and $Q$ such that $P^\top Q$ equals, or approximately equals, $U$ for the corresponding elements of $U$ that are known, then $P^\top Q$ also gives us predictions for the unknown elements of $U$ - the ratings we don't know, but want to predict. Of course, $r$ must be small enough here to prevent overfitting. + +(What we're talking about above is [matrix completion](https://en.wikipedia.org/wiki/Matrix_completion) using low-rank [matrix decomposition/factorization](https://en.wikipedia.org/wiki/Matrix_decomposition). These are both subjects unto themselves. See the [matrix-completion-whirlwind](https://github.com/asberk/matrix-completion-whirlwind/blob/master/matrix_completion_master.ipynb) notebook for a much better explanation on that subject, and an implementation of [altMinSense/altMinComplete](https://arxiv.org/pdf/1212.0467).) + +Ordinarily, we'd use something like SVD directly if we wanted to find matrices $P$ and $Q$ (or if we wanted to do any of about 15,000 other things, since SVD is basically magical matrix fairy dust). We can't really do that here due to the fact that large parts of $U$ are unknown, and in some cases because $U$ is just too large. One approach for working around this is the UV-decomposition algorithm that section 9.4 of [MMDS](http://www.mmds.org/) describes. + +What we'll do below is a similar approach to UV decomposition that follows a common method: define a model, define an error function we want to minimize, find that error function's gradient with respect to the model's parameters, and then use gradient-descent to minimize that error function by nudging the parameters in the direction that decreases the error, i.e. the negative of their gradient. (More on this later.) + +Matrices $Q$ and $P$ have some other neat properties too. Note that $Q$ has $m$ columns, each one $r$-dimensional - one column per movie. $P$ has $n$ columns, each one $r$-dimensional - one column per user. In effect, we can look at each column $i$ of $Q$ as the coordinates of movie $i$ in "concept space" or "feature space" - a new $r$-dimensional space where each axis corresponds to something that seems to explain ratings. Likewise, we can look at each column $u$ of $P$ as how much user $u$ "belongs" to each axis in concept space. "Feature vectors" is a common term to see. + +In that sense, $P$ and $Q$ give us a model in which ratings are an interaction between properties of a movie, and a user's preferences. If we're using $U=P^\top Q$ as our model, then every element of $U$ is just the dot product of the feature vectors of the respective movie and user. That is, if $p_u$ is column $u$ of $P$ and $q_i$ is column $i$ of $Q$: + +$$\hat{r}_{ui}=q_i^\top p_u$$ + +However, some things aren't really interactions. Some movies are just (per the ratings) overall better or worse. Some users just tend to rate everything higher or lower. We need some sort of bias built into the model to comprehend this. + +Let's call $b_i$ the bias for movie $i$, $b_u$ the bias for user $u$, and $\mu$ the overall average rating. We can just add these into the model: + +$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$ + +This is the basic model we'll implement, and the same one described in the references at the top. + +## 6.3. Prediction & Error Function + +More formally, the prediction model is: + +$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$ + +where: + +- $u$ is a user +- $i$ is an item +- $\hat{r}_{ui}$ is user $u$'s predicted rating for item $i$ +- $\mu$ is the overall average rating +- our model parameters are: + - $b_i$, a per-item deviation for item $i$; + - $b_u$, per-user deviation for user $u$ + - $q_i$ and $p_u$, feature vectors for item $i$ and user $u$, respectively + +The error function that we need to minimize is just sum-of-squared error between predicted and actual rating, plus $L_2$ regularization to prevent the biases and coordinates in "concept space" from becoming too huge: +$$E=\sum_{r_{ui} \in R_{\textrm{train}}} \left(r_{ui} - \hat{r}_{ui}\right)^2 + \lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right)$$ + +## 6.4. Gradients & Gradient-Descent Updates + +This error function is easily differentiable with respect to model parameters $b_i$, $b_u$, $q_i$, and $p_u$, so a normal approach for minimizing it is gradient-descent. Finding gradient with respect to $b_i$ is straightforward: + +$$ +\begin{split} +\frac{\partial E}{\partial b_i} &= \sum_{r_{ui}} \frac{\partial}{\partial b_i} \left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)^2 + \frac{\partial}{\partial b_i}\lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right) \\ +\frac{\partial E}{\partial b_i} &= \sum_{r_{ui}} 2\left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)(-1) + 2 \lambda b_i \\ +\frac{\partial E}{\partial b_i} &= 2 \sum_{r_{ui}} \left(\lambda b_i + r_{ui} - \hat{r}_{ui}\right) +\end{split} +$$ + +Gradient with respect to $p_u$ proceeds similarly: + +$$ +\begin{split} +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} \frac{\partial}{\partial p_u} \left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)^2 + \frac{\partial}{\partial p_u}\lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right) \\ +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} 2\left(r_{ui} - \hat{r}_{ui}\right)\left(-\frac{\partial}{\partial +p_u}q_i^\top p_u \right) + 2 \lambda p_u \\ +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} 2\left(r_{ui} - \hat{r}_{ui}\right)(-q_i^\top) + 2 \lambda p_u \\ +\frac{\partial E}{\partial p_u} &= 2 \sum_{r_{ui}} \lambda p_u - \left(r_{ui} - \hat{r}_{ui}\right)q_i^\top +\end{split} +$$ + +Gradient with respect to $b_u$ is identical form to $b_i$, and gradient with respect to $q_i$ is identical form to $p_u$, except that the variables switch places. The full gradients then have the standard form for gradient descent, i.e. a summation of a gradient term for each individual data point, so they turn easily into update rules for each parameter (which match the ones in the Surprise link) after absorbing the leading 2 into learning rate $\gamma$ and separating out the summation over each data point. That's given below, with $e_{ui}=r_{ui} - \hat{r}_{ui}$: + +$$ +\begin{split} +\frac{\partial E}{\partial b_i} &= 2 \sum_{r_{ui}} \left(\lambda b_i + e_{ui}\right)\ \ \ &\longrightarrow b_i' &= b_i - \gamma\frac{\partial E}{\partial b_i} &= b_i + \gamma\left(e_{ui} - \lambda b_u \right) \\ +\frac{\partial E}{\partial b_u} &= 2 \sum_{r_{ui}} \left(\lambda b_u + e_{ui}\right)\ \ \ &\longrightarrow b_u' &= b_u - \gamma\frac{\partial E}{\partial b_u} &= b_u + \gamma\left(e_{ui} - \lambda b_i \right)\\ +\frac{\partial E}{\partial p_u} &= 2 \sum_{r_{ui}} \lambda p_u - e_{ui}q_i^\top\ \ \ &\longrightarrow p_u' &= p_u - \gamma\frac{\partial E}{\partial p_u} &= p_u + \gamma\left(e_{ui}q_i - \lambda p_u \right) \\ +\frac{\partial E}{\partial q_i} &= 2 \sum_{r_{ui}} \lambda q_i - e_{ui}p_u^\top\ \ \ &\longrightarrow q_i' &= q_i - \gamma\frac{\partial E}{\partial q_i} &= q_i + \gamma\left(e_{ui}p_u - \lambda q_i \right) \\ +\end{split} +$$ + +The code below is a direct implementation of this by simply iteratively applying the above equations for each data point - in other words, stochastic gradient descent. + +## 6.5. Implementation + + +```python +# Hyperparameters +gamma = 0.002 +lambda_ = 0.02 +num_epochs = 20 +num_factors = 40 +``` + + +```python +class SVDModel(object): + def __init__(self, num_items, num_users, mean, + num_factors = 100, init_variance = 0.1): + self.mu = mean + self.num_items = num_items + self.num_users = num_users + self.num_factors = num_factors + #dtype = np.float32 + # Deviations, per-item: + self.b_i = np.zeros((num_items,), dtype=np.float32) + # Deviations; per-user: + self.b_u = np.zeros((num_users,), dtype=np.float32) + # Factor matrices: + self.q = (np.random.randn(num_factors, num_items) * init_variance)#.astype(dtype=np.float32) + self.p = (np.random.randn(num_factors, num_users) * init_variance)#.astype(dtype=np.float32) + # N.B. row I of q is item I's "concepts", so to speak; + # column U of p is how much user U belongs to each "concept" + + def predict(self, items, users): + """Returns rating prediction for specific items and users. + + Parameters: + items -- 1D array of item IDs + users -- 1D array of user IDs (same length as :items:) + + Returns: + ratings -- 1D array of predicted ratings (same length as :items:) + """ + # Note that we don't multiply p & q like matrices here, + # but rather, we just do row-by-row dot products. + # Matrix multiply would give us every combination of item and user, + # which isn't what we want. + return self.mu + \ + self.b_i[items] + \ + self.b_u[users] + \ + (self.q[:, items] * self.p[:, users]).sum(axis=0) + + def error(self, items, users, ratings, batch_size=256): + """Predicts over the given items and users, compares with the correct + ratings, and returns RMSE and MAE. + + Parameters: + items -- 1D array of item IDs + users -- 1D array of user IDs (same length as :items:) + ratings -- 1D array of 'correct' item ratings (same length as :items:) + + Returns: + rmse, mae -- Scalars for RMS error and mean absolute error + """ + sqerr = 0 + abserr = 0 + for i0 in range(0, len(items), batch_size): + i1 = min(i0 + batch_size, len(items)) + p = self.predict(items[i0:i1], users[i0:i1]) + d = p - ratings[i0:i1] + sqerr += np.square(d).sum() + abserr += np.abs(d).sum() + rmse = np.sqrt(sqerr / items.size) + mae = abserr / items.size + return rmse, mae + + def update_by_gradient(self, i, u, r_ui, lambda_, gamma): + """Perform a single gradient-descent update.""" + e_ui = r_ui - self.predict(i, u) + dbi = gamma * (e_ui - lambda_ * self.b_u[u]) + dbu = gamma * (e_ui - lambda_ * self.b_i[i]) + dpu = gamma * (e_ui * self.q[:,i] - lambda_ * self.p[:, u]) + dqi = gamma * (e_ui * self.p[:,u] - lambda_ * self.q[:, i]) + self.b_i[i] += dbi + self.b_u[u] += dbu + self.p[:,u] += dpu + self.q[:,i] += dqi + + def train(self, items, users, ratings, gamma = 0.005, lambda_ = 0.02, + num_epochs=20, epoch_callback=None): + """Train with stochastic gradient-descent""" + import sys + import time + for epoch in range(num_epochs): + t0 = time.time() + total = 0 + for idx in np.random.permutation(len(items)): + d = 2000000 + if (idx > 0 and idx % d == 0): + total += d + dt = time.time() - t0 + rate = total / dt + sys.stdout.write("{:.0f}/s ".format(rate)) + i, u, r_ui = items[idx], users[idx], ratings[idx] + self.update_by_gradient(i, u, r_ui, lambda_, gamma) + if epoch_callback: epoch_callback(self, epoch, num_epochs) +``` + +## 6.6. Running & Testing + + +```python +movies_train = ml_train["movie_id"].values +users_train = ml_train["user_id"].values +ratings_train = ml_train["rating"].values +movies_test = ml_test["movie_id"].values +users_test = ml_test["user_id"].values +ratings_test = ml_test["rating"].values +def at_epoch(self, epoch, num_epochs): + train_rmse, train_mae = self.error(movies_train, users_train, ratings_train) + test_rmse, test_mae = self.error(movies_test, users_test, ratings_test) + np.savez_compressed("svd{}".format(num_factors), + (self.b_i, self.b_u, self.p, self.q)) + print() + print("Epoch {:02d}/{}; Training: MAE={:.3f} RMSE={:.3f}, Testing: MAE={:.3f} RMSE={:.3f}".format(epoch + 1, num_epochs, train_mae, train_rmse, test_mae, test_rmse)) +``` + + +```python +svd40 = SVDModel(max_movie, max_user, ml["rating"].mean(), num_factors=num_factors) +svd40.train(movies_train, users_train, ratings_train, epoch_callback=at_epoch) +``` + + 6982/s 8928/s 10378/s 12877/s 15290/s 11574/s 13230/s + Epoch 01/20; Training: MAE=0.674 RMSE=0.874, Testing: MAE=0.677 RMSE=0.879 + 4700/s 8568/s 7968/s 10415/s 12948/s 13004/s 13892/s + Epoch 02/20; Training: MAE=0.663 RMSE=0.861, Testing: MAE=0.668 RMSE=0.868 + 54791/s 27541/s 15835/s 18596/s 22733/s 20542/s 22865/s + Epoch 03/20; Training: MAE=0.657 RMSE=0.854, Testing: MAE=0.663 RMSE=0.863 + 158927/s 15544/s 12845/s 12975/s 14161/s 16439/s 12474/s + Epoch 04/20; Training: MAE=0.649 RMSE=0.845, Testing: MAE=0.657 RMSE=0.856 + 3802/s 7361/s 8315/s 10317/s 11895/s 13779/s 13265/s + Epoch 05/20; Training: MAE=0.640 RMSE=0.834, Testing: MAE=0.649 RMSE=0.847 + 12472/s 18866/s 23647/s 27791/s 16208/s 12369/s 13389/s + Epoch 06/20; Training: MAE=0.632 RMSE=0.824, Testing: MAE=0.643 RMSE=0.840 + 28805/s 19738/s 20180/s 17857/s 16249/s 13536/s 13394/s + Epoch 07/20; Training: MAE=0.624 RMSE=0.814, Testing: MAE=0.638 RMSE=0.833 + 24548/s 44734/s 14160/s 10858/s 10926/s 10766/s 12496/s + Epoch 08/20; Training: MAE=0.616 RMSE=0.804, Testing: MAE=0.632 RMSE=0.826 + 9315/s 10221/s 14190/s 14990/s 10299/s 11436/s 13198/s + Epoch 09/20; Training: MAE=0.609 RMSE=0.795, Testing: MAE=0.627 RMSE=0.820 + 24830/s 34767/s 15151/s 11897/s 9766/s 11708/s 13273/s + Epoch 10/20; Training: MAE=0.602 RMSE=0.786, Testing: MAE=0.623 RMSE=0.815 + 47355/s 50678/s 44354/s 19882/s 13230/s 13775/s 12847/s + Epoch 11/20; Training: MAE=0.595 RMSE=0.777, Testing: MAE=0.619 RMSE=0.810 + 11881/s 15645/s 9316/s 11492/s 14085/s 13671/s 12256/s + Epoch 12/20; Training: MAE=0.589 RMSE=0.768, Testing: MAE=0.615 RMSE=0.806 + 17096/s 19543/s 24912/s 15852/s 16939/s 17755/s 13660/s + Epoch 13/20; Training: MAE=0.582 RMSE=0.760, Testing: MAE=0.612 RMSE=0.802 + 11735/s 23142/s 33466/s 41941/s 16498/s 18736/s 18874/s + Epoch 14/20; Training: MAE=0.577 RMSE=0.753, Testing: MAE=0.610 RMSE=0.799 + 3747/s 7109/s 9396/s 9294/s 10428/s 11155/s 12633/s + Epoch 15/20; Training: MAE=0.572 RMSE=0.746, Testing: MAE=0.607 RMSE=0.796 + 91776/s 15892/s 12027/s 15984/s 14365/s 11740/s 12474/s + Epoch 16/20; Training: MAE=0.567 RMSE=0.740, Testing: MAE=0.606 RMSE=0.794 + 17725/s 15693/s 15148/s 13012/s 15547/s 14170/s 14859/s + Epoch 17/20; Training: MAE=0.562 RMSE=0.733, Testing: MAE=0.604 RMSE=0.792 + 7750/s 11820/s 10883/s 10344/s 12010/s 12167/s 12403/s + Epoch 18/20; Training: MAE=0.557 RMSE=0.727, Testing: MAE=0.602 RMSE=0.790 + 15722/s 11371/s 16980/s 13979/s 15011/s 15340/s 17009/s + Epoch 19/20; Training: MAE=0.553 RMSE=0.722, Testing: MAE=0.601 RMSE=0.789 + 52078/s 18671/s 9292/s 11493/s 12515/s 11760/s 13039/s + Epoch 20/20; Training: MAE=0.549 RMSE=0.717, Testing: MAE=0.600 RMSE=0.787 + + + +```python +test_rmse, test_mae = svd40.error(movies_test, users_test, ratings_test) +test_results.append(("", "SVD", test_mae, test_rmse)) +``` + +## 6.7. Visualization of Latent Space + +I mentioned somewhere in here that this is a latent-factor model. The latent space (or concept space) that the model learned is useful as a sort of lossy compression of all those movie ratings into a much lower-dimensional space. It's probably useful for other things too. That lossy compression usually isn't just a fluke - it may have extracted something that's interesting on its own. + +The 40-dimensional space above might be a bit unruly to work with, but we can easily train on something lower, like a 4-dimensional space. We can then pick a few dimensions, and visualize where movies fit in this space. + + +```python +svd4 = SVDModel(max_movie, max_user, ml["rating"].mean(), 4) +svd4.train(ml_train["movie_id"].values, ml_train["user_id"].values, ml_train["rating"].values, epoch_callback=at_epoch) +``` + + 48199/s 33520/s 16937/s 13842/s 13607/s 15574/s 15431/s + Epoch 01/20; Training: MAE=0.674 RMSE=0.875, Testing: MAE=0.677 RMSE=0.878 + 25537/s 28976/s 36900/s 32309/s 10572/s 11244/s 12795/s + Epoch 02/20; Training: MAE=0.664 RMSE=0.864, Testing: MAE=0.668 RMSE=0.868 + 8542/s 12942/s 15965/s 15776/s 17190/s 17548/s 14876/s + Epoch 03/20; Training: MAE=0.660 RMSE=0.858, Testing: MAE=0.664 RMSE=0.864 + 5518/s 10199/s 13726/s 17042/s 18348/s 19738/s 14963/s + Epoch 04/20; Training: MAE=0.657 RMSE=0.855, Testing: MAE=0.662 RMSE=0.861 + 5054/s 9553/s 9207/s 11690/s 13277/s 13392/s 12950/s + Epoch 05/20; Training: MAE=0.653 RMSE=0.850, Testing: MAE=0.658 RMSE=0.857 + 728000/s 122777/s 15040/s 12364/s 11021/s 12142/s 12965/s + Epoch 06/20; Training: MAE=0.645 RMSE=0.840, Testing: MAE=0.651 RMSE=0.849 + 249831/s 32548/s 23093/s 24179/s 26070/s 27337/s 25700/s + Epoch 07/20; Training: MAE=0.637 RMSE=0.831, Testing: MAE=0.645 RMSE=0.842 + 77391/s 68985/s 15251/s 19532/s 20113/s 14211/s 13467/s + Epoch 08/20; Training: MAE=0.631 RMSE=0.824, Testing: MAE=0.640 RMSE=0.836 + 47346/s 16669/s 18279/s 13423/s 13594/s 16229/s 15855/s + Epoch 09/20; Training: MAE=0.626 RMSE=0.817, Testing: MAE=0.636 RMSE=0.831 + 8617/s 12683/s 13976/s 16825/s 19937/s 20210/s 19766/s + Epoch 10/20; Training: MAE=0.621 RMSE=0.811, Testing: MAE=0.632 RMSE=0.826 + 34749/s 46486/s 37026/s 27497/s 17555/s 20550/s 20926/s + Epoch 11/20; Training: MAE=0.617 RMSE=0.806, Testing: MAE=0.629 RMSE=0.823 + 8388/s 7930/s 8513/s 11249/s 13937/s 12245/s 13965/s + Epoch 12/20; Training: MAE=0.614 RMSE=0.802, Testing: MAE=0.627 RMSE=0.820 + 19899/s 7303/s 8950/s 10936/s 11717/s 13839/s 13401/s + Epoch 13/20; Training: MAE=0.611 RMSE=0.798, Testing: MAE=0.625 RMSE=0.817 + 144779/s 13374/s 11266/s 14888/s 14422/s 13258/s 12869/s + Epoch 14/20; Training: MAE=0.609 RMSE=0.795, Testing: MAE=0.623 RMSE=0.815 + 6578/s 11250/s 15117/s 12955/s 11470/s 13386/s 13040/s + Epoch 15/20; Training: MAE=0.607 RMSE=0.792, Testing: MAE=0.622 RMSE=0.814 + 23450/s 9245/s 11068/s 13315/s 14820/s 16872/s 17089/s + Epoch 16/20; Training: MAE=0.605 RMSE=0.790, Testing: MAE=0.621 RMSE=0.812 + 9460/s 10075/s 12410/s 13820/s 14344/s 16810/s 12759/s + Epoch 17/20; Training: MAE=0.603 RMSE=0.788, Testing: MAE=0.620 RMSE=0.811 + 558034/s 61794/s 50021/s 66589/s 14986/s 16479/s 17602/s + Epoch 18/20; Training: MAE=0.602 RMSE=0.786, Testing: MAE=0.619 RMSE=0.810 + 17841/s 11675/s 15336/s 14454/s 16483/s 18249/s 14615/s + Epoch 19/20; Training: MAE=0.600 RMSE=0.784, Testing: MAE=0.618 RMSE=0.809 + 6090/s 11341/s 15532/s 18298/s 17158/s 14908/s 16898/s + Epoch 20/20; Training: MAE=0.599 RMSE=0.783, Testing: MAE=0.618 RMSE=0.809 + + +To limit the data, we can use just the top movies (by number of ratings): + + +```python +top = movie_stats.sort_values("num_ratings", ascending=False)[:100] +ids_top = top.index.values +``` + + +```python +factors = svd4.q[:,ids_top].T +means, stds = factors.mean(axis=0), factors.std(axis=0) +factors[:] = (factors - means) / stds +``` + +So, here are the top 100 movies when plotted in the first two dimensions of the concept space: + + +```python +plt.figure(figsize=(15,15)) +markers = ["$ {} $".format("\ ".join(m.split(" ")[:-1])) for m in top["movie_title"][:50]] +for i,item in enumerate(factors[:50,:]): + l = len(markers[i]) + plt.scatter(item[0], item[1], marker = markers[i], alpha=0.75, s = 50 * (l**2)) +plt.show() +``` + + +![png](../images/2018-04-08-recommenders/output_94_0.png) + + +And here are the other two: + + +```python +plt.figure(figsize=(15,15)) +markers = ["$ {} $".format("\ ".join(m.split(" ")[:-1])) for m in top["movie_title"][50:]] +for i,item in enumerate(factors[50:,:]): + l = len(markers[i]) + plt.scatter(item[2], item[3], marker = markers[i], alpha=0.75, s = 50 * (l**2)) +plt.show() +``` + + +![png](../images/2018-04-08-recommenders/output_96_0.png) + + +Below is another way of visualizing. Neither the code nor the result are very pretty, but it divides the entire latent space into a 2D grid, identifies the top few movies (ranked by number of ratings) in each grid square, and prints the resultant grid. + + +```python +def clean_title(s): + remove = [", The", ", A", ", An"] + s1 = " ".join(s.split(" ")[:-1]) + for suffix in remove: + if s1.endswith(suffix): + s1 = s1[:-len(suffix)] + return s1 + +sorted_num_rating = np.array(np.argsort(movie_stats.sort_values("num_ratings", ascending=False).num_ratings)) +sorted_num_rating = sorted_num_rating[sorted_num_rating >= 0] +def latent_factor_grid(latent_space, count=2): + factors = svd4.q[:2,sorted_num_rating] + # We've already set stdev in all dimensions to 1, so a multiple of it is okay: + bin_vals = np.arange(-2, 2, 1/4) + bins = np.digitize(latent_space, bin_vals).T + #bins + # Now: What is the first instance of each bin in each axis? + # (May make most sense if sorted first by # of ratings) + n = len(bin_vals) + first_idxs = np.zeros((n,n), dtype=np.int32) + first_titles = np.zeros((n,n), dtype=np.object) + for i in range(n): + for j in range(n): + # where is first occurence of bin (i,j)? + matches = (bins == [i,j]).prod(axis=1) + first = np.nonzero(matches)[0] + first_titles[i,j] = "" + if first.size > 0: + first_idxs[i,j] = first[0] + if first[0] > 0: + # Could easily modify this to get the 2nd, 3rd, etc. + # item of these bins + first_titles[i,j] = "; ".join( + [clean_title(movie_stats.loc[first[i]].movie_title) + for i in range(0,min(count,len(first))) + if first[i] in movie_stats.index] + ) + # that final check is needed because (I think) + # my SVD matrices are randomly-initialized, and + # movie indices with no data (not all IDs are used) + # are never updated + else: + first_idxs[i,j] = -1 + return pd.DataFrame(first_titles) +``` + + +```python +pd.set_option('display.max_rows', 500) +latent_factor_grid(svd4.q[:2,:]) +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0123456789101112131415
0
1Dumb & Dumber (Dumb and Dumber)
2
3Tommy Boy; Ace Ventura: Pet DetectiveAce Ventura: When Nature Calls; Billy MadisonBASEketballHalf BakedNatural Born Killers; Fear and Loathing in Las...
4Beavis and Butt-Head Do AmericaHappy GilmoreSpaceballs; Eddie Murphy RawDon't Be a Menace to South Central While Drink...National Lampoon's Senior Trip; Event HorizonFour Rooms; Where the Buffalo RoamJulien Donkey-Boy
5Austin Powers: International Man of MysteryFletch; Rambo: First Blood Part IIKingpin; JerkFriday; Pulp FictionCasino; ClerksFrom Dusk Till Dawn; Faster Pussycat! Kill! Kill!Bio-Dome; In the Mouth of MadnessSwitchblade Sisters; Stardust MemoriesCook the Thief His Wife & Her Lover; Lost HighwayEven Cowgirls Get the Blues
6Animal House; CaddyshackConan the Barbarian; First Blood (Rambo: First...Goodfellas; Evil Dead II (Dead by Dawn)Dazed and Confused; Mystery Science Theater 30...Heat; Seven (a.k.a. Se7en)Leaving Las Vegas; Heidi Fleiss: Hollywood MadamDead Presidents; Things to Do in Denver When Y...Dracula: Dead and Loving It; Canadian BaconBeing Human; Road to WellvilleDoom Generation; Boxing Helena
7Rocky; Airplane!There's Something About Mary; American PieDie Hard: With a Vengeance; BatmanSo I Married an Axe Murderer; TombstoneGrumpier Old Men; Usual SuspectsNixon; Twelve Monkeys (a.k.a. 12 Monkeys)Shanghai Triad (Yao a yao yao dao waipo qiao);...Hate (Haine, La); Basketball DiariesIf Lucy Fell; JadeReady to Wear (Pret-A-Porter); Pillow Book
8Terminator 2: Judgment Day; Die HardAliens; Star Wars: Episode VI - Return of the ...Braveheart; MaskGoldenEye; Shawshank RedemptionGuardian AngelMoney Train; AssassinsWhen Night Is Falling; Two if by SeaCarrington; Antonia's Line (Antonia)Tank Girl; Eye of the Beholder
9JawsStar Wars: Episode IV - A New Hope; Raiders of...Nutty Professor; Back to the FutureTrue Lies; Home AloneCrimson Tide; Clear and Present DangerGet Shorty; Across the Sea of TimeSudden Death; Wings of CourageTom and Huck; Richard IIIPowder; Now and ThenHome for the Holidays; Lawnmower Man 2: Beyond...Priest; But I'm a Cheerleader
10Jurassic Park; ScreamLion King; FugitiveTimecop; Schindler's ListJumanji; Father of the Bride Part IIBalto; CopycatCutthroat Island; Dunston Checks InOthello; Misérables, LesAngels and Insects; Boys on the Side
11Toy Story; AladdinSpeed; Adventures of Robin HoodApollo 13; Santa ClauseAmerican President; CluelessSabrina; Indian in the CupboardPersuasion; Free Willy 2: The Adventure HomeWaiting to Exhale; Corrina, CorrinaIt Takes Two; NeverEnding Story IIITo Wong Foo, Thanks for Everything! Julie Newmar
12Toy Story 2Snow White and the Seven Dwarfs; Beauty and th...Singin' in the Rain; Meet Me in St. LouisMiracle on 34th Street; Black BeautyLittle Princess; While You Were SleepingLittle Women; LassieCenter Stage; Legally Blonde 2: Red, White & B...
13Sound of Music; Spy Kids 2: The Island of Lost...Bring It On; Legally BlondeFly Away Home; Parent TrapSense and Sensibility; Sex and the City
14Babe; Babe: Pig in the CityTwilight
15
+
+ + + +Both axes seem to start more on the low-brow side along the top left. There is come clear clustering around certain themes but it's hard to put clearly to words. The fact that *Rocky* and *Airplane!* landed in the same grid square, as did *Apollo 13* and *Santa Clause*, is interesting. + +Here is the same thing for the other two dimensions in this latent space: + + +```python +latent_factor_grid(svd4.q[2:,:]) +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0123456789101112131415
0
1
2
3
4Patch AdamsMusic of the Heart; Love StorySteel MagnoliasBridges of Madison County; Sound of Music
5First KnightPay It ForwardFather of the Bride Part II; Up Close and Pers...Legends of the Fall; Love AffairPocahontas; Mr. Holland's OpusPhiladelphia; Dances with WolvesCinderella; Fried Green TomatoesOut of Africa
6Big Momma's House 2D3: The Mighty Ducks; Here on EarthBig Green; Free Willy 2: The Adventure HomeGrumpier Old Men; Dangerous MindsSabrina; American PresidentHow to Make an American Quilt; Far From Home: ...Lion King; AladdinMisérables, Les; Circle of FriendsSnow White and the Seven Dwarfs; Pinocchio
7Armageddon; Police Academy 4: Citizens on PatrolJury Duty; Major PayneAce Ventura: When Nature Calls; It Takes TwoTom and Huck; Dunston Checks InPowder; Now and ThenWaiting to Exhale; BaltoIndian in the Cupboard; BirdcageBeautiful Girls; Brothers McMullenAntonia's Line (Antonia); Like Water for Choco...Sense and Sensibility; Postman, The (Postino, Il)Hamlet; Civil War
8Transformers: Revenge of the Fallen2 Fast 2 Furious (Fast and the Furious 2, The)...Bio-Dome; Beverly Hills Cop IIIMoney Train; AssassinsJumanji; Race the SunCopycat; Kids of the Round TableAcross the Sea of Time; City HallHeat; RestorationToy Story; OthelloPersuasion; Dead Man WalkingAnne Frank Remembered; Boys of St. VincentBread and Chocolate (Pane e cioccolata); Stree...
9Tomcats; Deuce Bigalow: European GigoloCutthroat Island; Fair GameSudden Death; Dracula: Dead and Loving ItGoldenEye; Two if by SeaNick of Time; MallratsFour Rooms; Wings of CourageCasino; CluelessNixon; BabeBottle Rocket; Nobody Loves Me (Keiner liebt m...Leaving Las Vegas; Hoop DreamsWorld of Apu, The (Apur Sansar); 400 Blows, Th...
10White ChicksStreet Fighter; Bloodsport 2 (a.k.a. Bloodspor...Vampire in Brooklyn; Broken ArrowVillage of the Damned; AirheadsDon't Be a Menace to South Central While Drink...Dead Presidents; Things to Do in Denver When Y...Glass Shield; Star Wars: Episode IV - A New HopeGeorgia; Sonic OutlawsGet Shorty; Shanghai Triad (Yao a yao yao dao ...Richard III; Confessional, The (Confessionnal,...Taxi Driver; FargoCitizen Kane; Grand Illusion (La grande illusion)
11Mortal Kombat; Judge DreddJohnny Mnemonic; ShowgirlsScreamers; Puppet MastersLord of Illusions; ProphecyRumble in the Bronx (Hont faan kui); Addams Fa...Barbarella; Institute Benjamenta, or This Drea...Twelve Monkeys (a.k.a. 12 Monkeys); CronosFlirting With Disaster; Blade RunnerCity of Lost Children, The (Cité des enfants ...Crumb; FacesPassion of Joan of Arc, The (Passion de Jeanne...
12Saw IIINightmare on Elm Street 5: The Dream Child; Fr...Tales from the Crypt Presents: Demon Knight; C...From Dusk Till Dawn; Doom GenerationTank Girl; Cabin BoyAddiction; HowlingNatural Born Killers; Serial MomExotica; Faster Pussycat! Kill! Kill!Safe; Nosferatu (Nosferatu, eine Symphonie des...GerryTree of Life
13Nightmare on Elm Street 4: The Dream Master; F...Wes Craven's New Nightmare (Nightmare on Elm S...Friday the 13th; Exorcist IIICandyman; Texas Chainsaw Massacre 2Mars Attacks!; HalloweenEvil Dead II (Dead by Dawn); Re-AnimatorNight of the Living Dead; Dead Alive (Braindead)Eraserhead
14Nightmare on Elm Street 3: Dream Warriors; Fre...Hellbound: Hellraiser IINightmare on Elm Street
15Bride of Chucky (Child's Play 4)Texas Chainsaw Massacre
+
+ + + +Some sensible axes seem to form here too. Moving from left to right (i.e. increasing horizontal axis) seems to go from movies with 'simpler' themes (I'm not really sure of the right term) to movies that are a bit more cryptic and enigmatic. Moving from the top to bottom (i.e. increasing vertical axis) seems to go from more lighthearted and uplifting movies, to more violent movies, all the way to horror movies. + +## 6.8. Bias + +We can also look at the per-movie bias parameters in the model - loosely, how much higher or lower a movie's rating is, beyond what interactions with user preferences seem to explain. Here are the top 10 and bottom 10; interestingly, while to seems to correlate with the average rating, it doesn't seem to do so especially strongly. + + +```python +#bias = movie_stats.assign(bias = svd40.b_i[:-1]).sort_values("bias", ascending=False) +bias = movie_stats.join(pd.Series(svd40.b_i[:-1]).rename("bias")).sort_values("bias", ascending=False).dropna() +bias.iloc[:10] +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titlenum_ratingsavg_ratingbias
movie_id
318Shawshank Redemption, The (1994)63366.04.4469901.015911
100553Frozen Planet (2011)31.04.2096771.010655
858Godfather, The (1972)41355.04.3647320.978110
105250Century of the Self, The (2002)43.03.9302330.956971
93040Civil War, The (1990)256.04.1132810.941702
7502Band of Brothers (2001)4305.04.2631820.926048
77658Cosmos (1980)936.04.2206200.916784
50Usual Suspects, The (1995)47006.04.3343720.910651
102217Bill Hicks: Revelations (1993)50.03.9900000.900622
527Schindler's List (1993)50054.04.3101750.898633
+
+ + + + +```python +bias.iloc[:-10:-1] +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
movie_titlenum_ratingsavg_ratingbias
movie_id
8859SuperBabies: Baby Geniuses 2 (2004)209.00.837321-2.377202
54290Bratz: The Movie (2007)180.01.105556-2.248130
6483From Justin to Kelly (2003)426.00.973005-2.214592
61348Disaster Movie (2008)397.01.251889-2.131157
6371Pokémon Heroes (2003)325.01.167692-2.061165
1826Barney's Great Adventure (1998)419.01.163484-2.051037
4775Glitter (2001)685.01.124088-2.047287
31698Son of the Mask (2005)467.01.252677-2.022763
5739Faces of Death 6 (1996)174.01.261494-2.004086
+
+ + + +# 7. Implementations in `scikit-surprise` + +[Surprise](http://surpriselib.com/) contains implementations of many of the same things, so these are tested below. This same dataset is included as a built-in, but for consistency, we may as well load it from our dataframe. + +Results below are cross-validated, while our results above aren't, so comparison may have some noise to it (i.e. if you change the random seed you may see our results perform much better or worse while the Surprise results should be more consistent). + + +```python +import surprise +from surprise.dataset import Dataset +``` + +Note the `.iloc[::10]` below, which is a quick way to decimate the data by a factor of 10. Surprise seems to be less memory-efficient than my code above (at least, without any tuning whatsoever), so in order to test it I don't pass in the entire dataset. + + +```python +reader = surprise.Reader(rating_scale=(1, 5)) +data = Dataset.load_from_df(ml[["user_id", "movie_id", "rating"]].iloc[::10], reader) +cv=5 +cv_random = surprise.model_selection.cross_validate(surprise.NormalPredictor(), data, cv=cv) +cv_sl1 = surprise.model_selection.cross_validate(surprise.SlopeOne(), data, cv=cv) +cv_svd = surprise.model_selection.cross_validate(surprise.SVD(), data, cv=cv) +``` + +# 8. Overall results + + +```python +get_record = lambda name, df: \ + ("Surprise", name, df["test_mae"].sum() / cv, df["test_rmse"].sum() / cv) +cv_data_surprise = [ + get_record(name,d) for name,d in [("Random", cv_random), ("Slope One", cv_sl1), ("SVD", cv_svd)] +] +pd.DataFrame.from_records( + data=test_results + cv_data_surprise, + columns=("Library", "Algorithm", "MAE (test)", "RMSE (test)"), +) +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LibraryAlgorithmMAE (test)RMSE (test)
0Slope One0.6565140.856294
1SVD0.6001110.787375
2SurpriseRandom1.1447751.433753
3SurpriseSlope One0.7047300.923331
4SurpriseSVD0.6948900.900350
+
+ + + +# 9. Further Work + +All of the code in the notebook above is fairly raw and unoptimized. One could likely produce much better performance with a lower-level and multithreaded implementation, with more optimized matrix routines (perhaps GPU-optimized) with something like [Numba](https://numba.pydata.org/), or with a distributed implementation in something like [Dask](https://dask.pydata.org/en/latest/) or Spark (via [PySpark](https://spark.apache.org/docs/latest/api/python/index.html)). + +Within recommender systems, this post covered only collaborative filtering. A part 2 post will follow which covers *content-based filtering*, another broad category of recommender systems. diff --git a/drafts/2018-04-08-recommender-systems-1.md b/drafts/2018-04-08-recommender-systems-1.md new file mode 100644 index 0000000..87cad65 --- /dev/null +++ b/drafts/2018-04-08-recommender-systems-1.md @@ -0,0 +1,1654 @@ + +# Recommender Systems, Part 1 (Collaborative Filtering) +- Author: Chris Hodapp +- Date: 2018-03-21 + +# Table of Contents + +- [1. Introduction](#1.-Introduction) + - [1.1. Motivation](#1.1.-Motivation) + - [1.2. Organization](#1.2.-Organization) +- [2. Dependencies & Setup](#2.-Dependencies-&-Setup) +- [3. Loading data](#3.-Loading-data) + - [3.1. Aggregation](#3.1.-Aggregation) +- [4. Utility Matrix](#4.-Utility-Matrix) +- [5. Slope One Predictors](#5.-Slope-One-Predictors) + - [5.1. Weighted Slope One](#5.1.-Weighted-Slope-One) + - [5.2. Linear Algebra Tricks](#5.2.-Linear-Algebra-Tricks) + - [5.3. Implementation](#5.3.-Implementation) +- [6. "SVD" algorithm](#6.-%22SVD%22-algorithm) + - [6.1. Model & Background](#6.1.-Model-&-Background) + - [6.2. Motivation](#6.2.-Motivation) + - [6.3. Prediction & Error Function](#6.3.-Prediction-&-Error-Function) + - [6.4. Gradients & Gradient Descent Updates](#6.4.-Gradients-&-Gradient-Descent-Updates) + - [6.5. Implementation](#6.5.-Implementation) + - [6.6. Running & Testing](#6.6.-Running-&-Testing) + - [6.7. Visualization of Latent Space](#6.7.-Visualization-of-Latent-Space) + - [6.8. Bias](#6.8.-Bias) +- [7. Implementations in scikit-surprise](#7.-Implementations-in-scikit-surprise) +- [8. Overall results](#8.-Overall-results) +- [9. Further Work](#9.-Further-Work) + +# 1. Introduction + +The aim of this notebook is to briefly explain *recommender systems*, show some specific examples of them, and to demonstrate simple implementations of them in Python/NumPy/Pandas. + +Recommender systems are quite a broad subject on their own. This notebook focuses on movie recommendations from explicit ratings. That is, it's focusing on the scenario in which: + +- There are a large number of users and a large number of movies. +- Users have supplied ratings on certain movies. +- The movies are different for each user, and the vast majority of users have rated only a tiny fraction of the overall movies. + +The goal is to make predictions based on this data, such as: + +- How a given user will most likely rate specific movies they have not seen before +- What "new" movies a system might recommended to them + +This uses the [MovieLens 20M](https://grouplens.org/datasets/movielens/20m/) dataset, which (as the name suggests) has 20,000,000 movie ratings. You can download it yourself, and probably should if you wish to run the code. Be forewarned that this code runs quite slowly as I've put little effort to optimizing it. + +This also focuses on *collaborative filtering*, one basic form of a recommender system. Broadly, this method predicts unknown ratings by using the similarities between users. (This is in contrast to *content-based filtering*, which could work with the similarities between movies based on some properties the MovieLens dataset provides for each movie, such as genre. I'll cover this in another post.) + +I refer several times in this notebook to the free textbook [Mining of Massive Datasets](http://www.mmds.org/) (hereafter, just "MMDS"), mostly to chapter 9, *Recommendation Systems*. It's worth reading if you want to know more. + +## 1.1. Motivation + +I try to clearly implement everything I talk about here, and be specific about the method. Some other work I read in this area had me rather frustrated with its tendency to completely ignore implementation details that are both critical and very difficult for an outsider (i.e. me) to articulate questions on, and this is something I try to avoid. I'd like for you to be able to execute it yourself, to build intuition on how the math works, to understand why the code implements the math as it does, and to have good starting points for further research. + +In the Slope One explanation, this means I give perhaps a needless amount of detail behind the linear algebra implementation, but maybe some will find it valuable (besides just me when I try to read this code in 3 months). + +## 1.2. Organization + +I start out by loading the movielens data, exploring it briefly, and converting it to a form I need. + +Following that, I start with a simple (but surprisingly effective) collaborative filtering model, Slope One Predictors. I explain it, implement it with some linear algebra shortcuts, and run it on the data. + +I go from here to a slightly more complicated method (the badly-named "SVD" algorithm) that is based on matrix completion using matrix decomposition. I explain this, implement it with gradient-descent, and run it on the data. I also use this as an opportunity to visualize a latent feature space that the model learns. + +Near the end, I show how to run the same basic algorithms in [scikit-surprise](http://surpriselib.com/) rather than implement them by hand. + +# 2. Dependencies & Setup + +Download [MovieLens 20M](https://grouplens.org/datasets/movielens/20m/) and uncompress it in the local directory. There should be a `ml-20m` folder. + +For Python dependencies, everything I need is imported below: pandas, numpy, matplotlib, and scikit-learn. + + +```python +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import scipy.sparse +import sklearn.model_selection +``` + +# 3. Loading data + +I don't explain this in detail. This is just standard calls in [Pandas](https://pandas.pydata.org/) and little details that are boring but essential: + + +```python +ml = pd.read_csv("ml-20m/ratings.csv", + header=0, + dtype={"user_id": np.int32, "movie_id": np.int32, "rating": np.float32, "time": np.int64}, + names=("user_id", "movie_id", "rating", "time")) +# Convert Unix seconds to a Pandas timestamp: +ml["time"] = pd.to_datetime(ml["time"], unit="s") +``` + +Below is just to inspect that data appears to be okay: + + +```python +ml.info() +``` + + + RangeIndex: 20000263 entries, 0 to 20000262 + Data columns (total 4 columns): + user_id int32 + movie_id int32 + rating float32 + time datetime64[ns] + dtypes: datetime64[ns](1), float32(1), int32(2) + memory usage: 381.5 MB + + + +```python +ml.describe() +``` + + + + + + | user_id | movie_id | rating +|--------|---------|------- +count|2.000026e+07|2.000026e+07|2.000026e+07 +mean|6.904587e+04|9.041567e+03|3.494030e+00 +std|4.003863e+04|1.978948e+04|9.998490e-01 +min|1.000000e+00|1.000000e+00|5.000000e-01 +25%|3.439500e+04|9.020000e+02|3.000000e+00 +50%|6.914100e+04|2.167000e+03|3.500000e+00 +75%|1.036370e+05|4.770000e+03|4.000000e+00 +max|1.384930e+05|1.312620e+05|5.000000e+00 + + + + + +```python +ml[:10] +``` + + + + + + | user_id | movie_id | rating | time +|--------|---------|-------|----- +0|1|2|3.5|2005-04-02 23:53:47 +1|1|29|3.5|2005-04-02 23:31:16 +2|1|32|3.5|2005-04-02 23:33:39 +3|1|47|3.5|2005-04-02 23:32:07 +4|1|50|3.5|2005-04-02 23:29:40 +5|1|112|3.5|2004-09-10 03:09:00 +6|1|151|4.0|2004-09-10 03:08:54 +7|1|223|4.0|2005-04-02 23:46:13 +8|1|253|4.0|2005-04-02 23:35:40 +9|1|260|4.0|2005-04-02 23:33:46 + + + + + +```python +max_user = int(ml["user_id"].max() + 1) +max_movie = int(ml["movie_id"].max() + 1) +max_user, max_movie, max_user * max_movie +``` + + + + + (138494, 131263, 18179137922) + + + +Computing what percent we have of all 'possible' ratings (i.e. every single movie & every single user), this data is rather sparse: + + +```python +print("%.2f%%" % (100 * ml.shape[0] / (max_user * max_movie))) +``` + + 0.11% + + +## 3.1. Aggregation + +This is partly just to explore the data a little, and partly because we need to aggregate some information to use in models later - like the number of ratings for each movie, and each movie's average rating. + +The dataset includes a lot of per-movie information too, but we only bother with the title so far: + + +```python +names = pd.read_csv( + "ml-20m/movies.csv", header=0, + encoding = "ISO-8859-1", index_col=0, + names=("movie_id", "movie_title"), usecols=[0,1]) +``` + + +```python +movie_group = ml.groupby("movie_id") +movie_stats = names.\ + join(movie_group.size().rename("num_ratings")).\ + join(movie_group.mean()["rating"].rename("avg_rating")) +``` + +Sorting by number of ratings and taking the top 25, this looks pretty sensible: + + +```python +movie_stats.sort_values("num_ratings", ascending=False)[:25] +``` + + + + + + | movie_title | num_ratings | avg_rating | movie_id | | | +|------------|------------|-----------|---------|-|-|- +296|Pulp Fiction (1994)|67310.0|4.174231 +356|Forrest Gump (1994)|66172.0|4.029000 +318|Shawshank Redemption, The (1994)|63366.0|4.446990 +593|Silence of the Lambs, The (1991)|63299.0|4.177056 +480|Jurassic Park (1993)|59715.0|3.664741 +260|Star Wars: Episode IV - A New Hope (1977)|54502.0|4.190672 +110|Braveheart (1995)|53769.0|4.042534 +589|Terminator 2: Judgment Day (1991)|52244.0|3.931954 +2571|Matrix, The (1999)|51334.0|4.187186 +527|Schindler's List (1993)|50054.0|4.310175 +1|Toy Story (1995)|49695.0|3.921240 +457|Fugitive, The (1993)|49581.0|3.985690 +150|Apollo 13 (1995)|47777.0|3.868598 +780|Independence Day (a.k.a. ID4) (1996)|47048.0|3.370962 +50|Usual Suspects, The (1995)|47006.0|4.334372 +1210|Star Wars: Episode VI - Return of the Jedi (1983)|46839.0|4.004622 +592|Batman (1989)|46054.0|3.402365 +1196|Star Wars: Episode V - The Empire Strikes Back...|45313.0|4.188202 +2858|American Beauty (1999)|44987.0|4.155934 +32|Twelve Monkeys (a.k.a. 12 Monkeys) (1995)|44980.0|3.898055 +590|Dances with Wolves (1990)|44208.0|3.728465 +1198|Raiders of the Lost Ark (Indiana Jones and the...|43295.0|4.219009 +608|Fargo (1996)|43272.0|4.112359 +47|Seven (a.k.a. Se7en) (1995)|43249.0|4.053493 +380|True Lies (1994)|43159.0|3.491149 + + + + +Prior to anything else, split training/test data out with a specific random seed: + + +```python +ml_train, ml_test = sklearn.model_selection.train_test_split(ml, test_size=0.25, random_state=12345678) +``` + +# 4. Utility Matrix + +The notion of the *utility matrix* comes up in many methods as a way of +expressing the ratings data. For one thing, this opens up the data to an +array of linear algebra operations (such as matrix multiplication and +[SVD](https://en.wikipedia.org/wiki/Singular-value_decomposition)) that +are useful for transforming the data, meaningful for interpreting it, +very readily-available and optimized, and provide a common language for +discussing and analyzing what we are actually doing to the data. (For some +examples of this, check out section 11.3.2 in [MMDS](http://www.mmds.org/).) + +In a utility matrix, each row represents one user, each column represents +one item (a movie, in our case), and each element represents a user's +rating of an item. If we have $n$ users and $m$ movies, then this is a +$n \times m$ matrix $U$ for which $U_{k,i}$ is user $k$'s rating for +movie $i$ - assuming we've numbered our users and our movies. + +Users have typically rated only a fraction of movies, and so most of +the elements of this matrix are unknown. Algorithms represent this +in different ways; the use of [sparse matrices](https://en.wikipedia.org/wiki/Sparse_matrix) +where a value of 0 signifies unknown information is common. + +Some algorithms involve constructing the utility matrix explicitly and +doing matrix operations directly on it. The approach to Slope One that +we do later works somewhat this way. Other methods just use it as a method of +analyzing something from a linear algebra standpoint, but dispense with +the need for an explicit matrix within the algorithm. The "SVD" method +later does this. + +We'll convert to a utility matrix, for which the naive way is creating a dense matrix: + +```python +m = np.zeros((max_user, max_movie)) +m[df["user_id"], df["movie_id"]] = df["rating"] +``` + +...but we'd be dealing with a 18,179,137,922-element matrix that's a little bit unusable here (at least it is for me since I only have 32 GB RAM), so we'll use [sparse matrices](https://docs.scipy.org/doc/scipy/reference/sparse.html). + + +```python +def df2mat(df): + m = scipy.sparse.coo_matrix( + (df["rating"], (df["user_id"], df["movie_id"])), + shape=(max_user, max_movie), + dtype=np.float32).tocsc() + return m, m > 0 + +ml_mat_train, ml_mask_train = df2mat(ml_train) +ml_mat_test, ml_mask_test = df2mat(ml_test) +``` + +We need a mask for some later steps, hence the m > 0 step. Ratings go only from 1 to 5, so values of 0 are automatically unknown/missing data, which fits with how sparse matrices work. + + +```python +ml_mat_train +``` + + + + + <138494x131263 sparse matrix of type '' + with 15000197 stored elements in Compressed Sparse Column format> + + + +To demonstrate that the matrix and dataframe have the same data: + + +```python +ml_train[:10] +``` + + + + + + | user_id | movie_id | rating | time +|--------|---------|-------|----- +13746918|94976|7371|4.5|2009-11-04 05:51:26 +15855529|109701|1968|3.0|2002-04-08 06:04:50 +1479530|10017|2248|3.0|2014-09-11 12:05:12 +16438705|113806|1210|4.5|2005-04-24 19:15:31 +17014834|117701|4223|4.0|2001-07-18 07:45:15 +2626824|17818|7325|2.5|2008-10-29 14:49:13 +10604986|73349|29|5.0|2000-10-25 20:55:56 +15311014|105846|4226|4.5|2004-07-30 18:12:26 +8514776|58812|1285|4.0|2000-04-24 20:39:46 +3802643|25919|3275|2.5|2010-06-18 00:48:40 + + + + + +```python +list(ml_train.iloc[:10].rating) +``` + + + + + [4.5, 3.0, 3.0, 4.5, 4.0, 2.5, 5.0, 4.5, 4.0, 2.5] + + + + +```python +user_ids = list(ml_train.iloc[:10].user_id) +movie_ids = list(ml_train.iloc[:10].movie_id) +[ml_mat_train[u,i] for u,i in zip(user_ids, movie_ids)] +``` + + + + + [4.5, 3.0, 3.0, 4.5, 4.0, 2.5, 5.0, 4.5, 4.0, 2.5] + + + +Okay, enough of that; we can begin with some actual predictions. + +# 5. Slope One Predictors + +We'll begin with a method of predicting ratings that is wonderfully +simple to understand, equally simple to implement, very fast, +and surprisingly effective. This method is described in the +paper [Slope One Predictors for Online Rating-Based Collaborative Filtering](https://arxiv.org/pdf/cs/0702144v1.pdf). They can be computed given +just some arithmetic over the dataset we just loaded. +Neither linear algebra nor calculus nor numerical +approximation is needed, while all three are needed for the +[next method](#"SVD"-algorithm). + +I'll give a contrived example below to explain them. + +Consider a user Bob. Bob is enthusiastic, but has rather simple +tastes: he mostly just watches Clint Eastwood movies. In fact, he's +watched and rated nearly all of them, and basically nothing else. + +Now, suppose we want to predict how much Bob will like something +completely different and unheard of (to him at least), like... I don't +know... *Citizen Kane*. + +Here's Slope One in a nutshell: + +1. First, find the users who rated both *Citizen Kane* and any of + the Clint Eastwood movies that Bob rated. +2. Now, for each movie that comes up above, compute a _deviation_ + which tells us: On average, how differently (i.e. how much higher + or lower) did those users rate Citizen Kane compared to this movie? (For + instance, we'll have a number for how *Citizen Kane* was rated + compared to *Dirty Harry*, and perhaps it's +0.6 - meaning that on + average, users who rated both movies rated *Citizen Kane* about 0.6 + stars above *Dirty Harry*. We'd have another deviation for + *Citizen Kane* compared to *Gran Torino*, another for *Citizen + Kane* compared to *The Good, the Bad and the Ugly*, and so on - for + every movie that Bob rated, provided that other users who rated + *Citizen Kane* also rated the movie.) +3. If that deviation between *Citizen Kane* and *Dirty Harry* was + +0.6, it's reasonable that adding 0.6 from Bob's rating on *Dirty + Harry* would give one prediction of how Bob might rate *Citizen + Kane*. We can then generate more predictions based on the ratings + he gave the other movies - anything for which we could compute a + deviation. +4. To turn this to a single prediction, we could just average all + those predictions together. + +Note carefully that step 2 is _not_ asking for a difference in average +ratings across all users. It is asking for an average of differences in +ratings across a specific set of users. + +Now, I'm not sure that Bob is an actual user in this dataset, but I +will go through these steps with some real data. I arbitrarily chose +user 28812: + + +```python +pd.set_option('display.max_rows', 10) +``` + + +```python +target_user = 28812 +names.merge(ml_train[ml_train.user_id == target_user], right_on="movie_id", left_index=True) +``` + + + + + + | movie_title | user_id | movie_id | rating | time +|------------|--------|---------|-------|----- +4229884|Jumanji (1995)|28812|2|5.0|1996-09-23 02:08:39 +4229885|Heat (1995)|28812|6|4.0|1996-09-23 02:11:00 +4229886|GoldenEye (1995)|28812|10|5.0|1996-09-23 02:03:57 +4229887|Ace Ventura: When Nature Calls (1995)|28812|19|4.0|1996-09-23 02:05:59 +4229888|Get Shorty (1995)|28812|21|5.0|1996-09-23 02:05:59 +...|...|...|...|...|... +4229953|Beauty and the Beast (1991)|28812|595|4.0|1996-09-23 02:03:07 +4229954|Pretty Woman (1990)|28812|597|5.0|1996-09-23 02:06:22 +4229957|Independence Day (a.k.a. ID4) (1996)|28812|780|5.0|1996-09-23 02:09:02 +4229959|Phenomenon (1996)|28812|802|5.0|1996-09-23 02:09:02 +4229960|Die Hard (1988)|28812|1036|5.0|1996-09-23 02:09:02 + + + + +I picked *Home Alone*, movie ID 586, as the one we want to predict user 28812's rating on. This isn't completely arbitrary. I chose it because the testing data contains the actual rating and we can compare against it later. + + +```python +target_movie = 586 +names[names.index == target_movie] +``` + + + + + + | movie_title | movie_id | +|------------|---------|- +586|Home Alone (1990) + + + + +Now, from step #1 and about half of step #2: What users also rated one of the movies that 28812 rated, *and* rated *Home Alone*? What were those ratings? + + +```python +users_df = ml_train[ml_train.user_id == target_user][["movie_id"]]. \ + merge(ml_train, on="movie_id")[["movie_id", "user_id", "rating"]]. \ + merge(ml_train[ml_train.movie_id == target_movie], on="user_id"). \ + drop(["movie_id_y", "time"], axis=1) +# time is irrelevant to us, movie_id_y is just always 3175 +users_df +``` + + + + + + | movie_id_x | user_id | rating_x | rating_y +|-----------|--------|---------|--------- +0|329|17593|3.0|4.0 +1|480|17593|4.0|4.0 +2|588|17593|4.0|4.0 +3|454|17593|4.0|4.0 +4|457|17593|5.0|4.0 +...|...|...|...|... +522686|296|60765|5.0|5.0 +522687|2|90366|3.0|3.0 +522688|2|126271|3.0|4.0 +522689|595|82760|2.0|4.0 +522690|595|18306|4.5|5.0 + + + + +Each row has one user's ratings of both *Home Alone* (it's the `rating_y` column), and some other movie that 28812 rated (`rating_x`), so we can easily find the deviation of each individual rating - how much higher they rated *Home Alone* than the respective movie for `movie_id_x`: + + +```python +users_df = users_df.assign(rating_dev = users_df.rating_y - users_df.rating_x) +users_df +``` + + + + + + | movie_id_x | user_id | rating_x | rating_y | rating_dev +|-----------|--------|---------|---------|----------- +0|329|17593|3.0|4.0|1.0 +1|480|17593|4.0|4.0|0.0 +2|588|17593|4.0|4.0|0.0 +3|454|17593|4.0|4.0|0.0 +4|457|17593|5.0|4.0|-1.0 +...|...|...|...|...|... +522686|296|60765|5.0|5.0|0.0 +522687|2|90366|3.0|3.0|0.0 +522688|2|126271|3.0|4.0|1.0 +522689|595|82760|2.0|4.0|2.0 +522690|595|18306|4.5|5.0|0.5 + + + + +...and for the rest of step 2, turn this to an average deviation by grouping by movie ID. For the sake of displaying it, inner join with the dataframe that has movie titles: + + +```python +pd.set_option('display.max_rows', 20) +rating_dev = users_df.groupby("movie_id_x").mean()["rating_dev"] +names.join(rating_dev, how="inner").sort_values("rating_dev") +``` + + + + + + | movie_title | rating_dev +|------------|----------- +318|Shawshank Redemption, The (1994)|-1.391784 +50|Usual Suspects, The (1995)|-1.316480 +527|Schindler's List (1993)|-1.283499 +296|Pulp Fiction (1994)|-1.116245 +593|Silence of the Lambs, The (1991)|-1.114274 +32|Twelve Monkeys (a.k.a. 12 Monkeys) (1995)|-0.953710 +356|Forrest Gump (1994)|-0.946414 +110|Braveheart (1995)|-0.941996 +457|Fugitive, The (1993)|-0.876993 +1036|Die Hard (1988)|-0.871772 +...|...|... +344|Ace Ventura: Pet Detective (1994)|0.141987 +231|Dumb & Dumber (Dumb and Dumber) (1994)|0.163693 +153|Batman Forever (1995)|0.218621 +208|Waterworld (1995)|0.250881 +315|Specialist, The (1994)|0.276409 +420|Beverly Hills Cop III (1994)|0.382058 +432|City Slickers II: The Legend of Curly's Gold (...|0.419339 +173|Judge Dredd (1995)|0.518570 +19|Ace Ventura: When Nature Calls (1995)|0.530155 +160|Congo (1995)|0.559034 + + + + +The numbers above then tell us that, on average, users who watched both movies rated *Home Alone* about 1.4 below *Shawshank Redemption*; likewise, 1.3 below *Usual Suspects*, and so on, up to 0.53 above *Ace Ventura: When Nature Calls* and 0.56 above *Congo*. This fits with what we might expect (setting aside any strong opinions people have about Home Alone or about Jim Carrey's acting). + +For step 3, we can produce a prediction from each deviation above by adding it to each of user 28812's ratings for the respective movies: + + +```python +df = ml_train[ml_train.user_id == target_user]. \ + join(rating_dev, on="movie_id") +df = df.assign(rating_adj = df["rating"] + df["rating_dev"])[["user_id", "movie_id", "rating", "rating_adj"]] +df.join(names, on="movie_id").sort_values("movie_title") +``` + + + + + + | user_id | movie_id | rating | rating_adj | movie_title +|--------|---------|-------|-----------|------------ +4229920|28812|344|3.0|3.141987|Ace Ventura: Pet Detective (1994) +4229887|28812|19|4.0|4.530155|Ace Ventura: When Nature Calls (1995) +4229930|28812|410|4.0|4.127372|Addams Family Values (1993) +4229948|28812|588|4.0|3.470915|Aladdin (1992) +4229895|28812|150|5.0|4.254292|Apollo 13 (1995) +4229890|28812|34|4.0|3.588504|Babe (1995) +4229951|28812|592|4.0|3.657092|Batman (1989) +4229897|28812|153|4.0|4.218620|Batman Forever (1995) +4229953|28812|595|4.0|3.515051|Beauty and the Beast (1991) +4229931|28812|420|5.0|5.382058|Beverly Hills Cop III (1994) +...|...|...|...|...|... +4229928|28812|377|5.0|4.599287|Speed (1994) +4229918|28812|329|4.0|3.767164|Star Trek: Generations (1994) +4229915|28812|316|5.0|4.719226|Stargate (1994) +4229949|28812|589|4.0|3.151323|Terminator 2: Judgment Day (1991) +4229945|28812|553|5.0|4.431266|Tombstone (1993) +4229929|28812|380|5.0|4.623296|True Lies (1994) +4229889|28812|32|5.0|4.046289|Twelve Monkeys (a.k.a. 12 Monkeys) (1995) +4229892|28812|50|3.0|1.683520|Usual Suspects, The (1995) +4229903|28812|208|3.0|3.250881|Waterworld (1995) +4229919|28812|339|4.0|3.727966|While You Were Sleeping (1995) + + + + +That is, every 'adjusted' rating above (the `rating_adj` column) is something like: based on just this movie, what rating would we expect user 28812 to give *Home Alone*? Produce the final prediction by averaging all these: + + +```python +df["rating_adj"].mean() +``` + + + + + 4.087520122528076 + + + +As mentioned above, we also happen to have the user's actual rating on *Home Alone* in the test set (i.e. we didn't train on it), so we can compare here: + + +```python +ml_test[(ml_test.user_id == target_user) & (ml_test.movie_id == target_movie)]["rating"].iloc[0] +``` + + + + + 4.0 + + + +That's quite close - though that may just be luck. It's hard to say from one point. + +## 5.1. Weighted Slope One + +Take a look at the table below. This is a similar aggregation to what we just did to determine average deviation - but this instead counts up the number of ratings that went into each average deviation. + + +```python +num_ratings = users_df.groupby("movie_id_x").count()["rating_dev"].rename("num_ratings") +names.join(num_ratings, how="inner").sort_values("num_ratings") +``` + + + + + + | movie_title | num_ratings +|------------|------------ +802|Phenomenon (1996)|3147 +315|Specialist, The (1994)|3247 +282|Nell (1994)|3257 +151|Rob Roy (1995)|3351 +236|French Kiss (1995)|3645 +432|City Slickers II: The Legend of Curly's Gold (...|4054 +553|Tombstone (1993)|4241 +173|Judge Dredd (1995)|4308 +160|Congo (1995)|4472 +420|Beverly Hills Cop III (1994)|4693 +...|...|... +364|Lion King, The (1994)|10864 +592|Batman (1989)|10879 +597|Pretty Woman (1990)|10940 +589|Terminator 2: Judgment Day (1991)|11416 +377|Speed (1994)|11502 +296|Pulp Fiction (1994)|11893 +500|Mrs. Doubtfire (1993)|11915 +593|Silence of the Lambs, The (1991)|12120 +480|Jurassic Park (1993)|13546 +356|Forrest Gump (1994)|13847 + + + + +We produced an overall average prediction by averaging together +all of the average deviations produced from the above ratings. +This has a potential problem that can occur. Look at the table +above, and note that *Forrest Gump* has around four times as many +ratings as *Phenomenon*, yet both movies receive the same total +number of votes (so to speak). + +This isn't as drastic of an example as possible, but we might like +to adjust things so that the amount of weight that's given to each +average deviation depends on how many ratings are in it; presumably, +the more ratings that go into that average deviation, the better of +an estimate it is. + +This is easy to do, luckily: + + +```python +df = df.join(num_ratings, on="movie_id") +df = df.assign(rating_weighted = df["rating_adj"] * df["num_ratings"]) +df +``` + + + + + + | user_id | movie_id | rating | rating_adj | num_ratings | rating_weighted +|--------|---------|-------|-----------|------------|---------------- +4229918|28812|329|4.0|3.767164|6365|23978.000326 +4229939|28812|480|5.0|4.400487|13546|59609.002631 +4229948|28812|588|4.0|3.470915|10366|35979.500767 +4229899|28812|161|4.0|3.415830|5774|19723.000448 +4229914|28812|315|5.0|5.276409|3247|17132.500507 +4229936|28812|454|5.0|4.638914|7663|35547.998812 +4229937|28812|457|5.0|4.123007|10853|44746.998200 +4229923|28812|356|5.0|4.053586|13847|56129.998825 +4229944|28812|539|5.0|4.621340|9325|43093.998063 +4229894|28812|141|5.0|4.611132|5390|24853.999691 +...|...|...|...|...|...|... +4229909|28812|282|5.0|4.707246|3257|15331.499658 +4229885|28812|6|4.0|3.218793|5055|16271.000597 +4229917|28812|318|5.0|3.608216|10553|38077.501431 +4229900|28812|165|4.0|3.639870|8751|31852.499657 +4229901|28812|173|4.0|4.518570|4308|19465.999329 +4229892|28812|50|3.0|1.683520|8495|14301.500030 +4229911|28812|292|4.0|3.744914|7029|26323.000892 +4229912|28812|296|4.0|2.883755|11893|34296.500678 +4229884|28812|2|5.0|4.954595|7422|36773.001211 +4229953|28812|595|4.0|3.515051|9036|31761.999825 + + + + + +```python +df["rating_weighted"].sum() / df["num_ratings"].sum() +``` + + + + + 4.02968199025023 + + + +It changes the answer, but only very slightly. + +## 5.2. Linear Algebra Tricks + +I said linear algebra isn't needed, which is true. Everything above +was implemented just in operations over Pandas dataframes, albeit +with a lot of merges and joins, and it's probably not very efficient. +Someone adept in SQL could probably implement this directly over +some database tables in a few queries. + +However, the entire Slope One method can be implemented in a faster +and concise way with a couple matrix operations. If matrices make your +eyes glaze over, you can probably just skip this section. + +### 5.2.1. Short Answer + +Let $U$ be the utility matrix. Let $M$ be a binary matrix for which $M_{i,j}=1$ if user $i$ rated movie $j$, otherwise 0. Compute the model's matrices with: + +$$ +\begin{align} +C & =M^\top M \\ +D &= \left(M^\top U - (M^\top U)^\top\right) /\ \textrm{max}(1, M^\top M) +\end{align} +$$ + +where $/$ is Hadamard (i.e. elementwise) division, and $\textrm{max}$ is elementwise maximum with 1. Then, the below gives the prediction for how user $u$ will rate movie $j$: + +$$ +P(u)_j = \frac{[M_u \odot (C_j > 0)] \cdot (D_j + U_u) - U_{u,j}}{M_u \cdot (C_j > 0)} +$$ + +$D_j$ and $C_j$ are row $j$ of $D$ and $C$, respectively. $M_u$ and $U_u$ are column $u$ of $M$ and $U$, respectively. $\odot$ is elementwise multiplication. + +### 5.2.2. Long Answer + +First, we need to have our data encoded as an $n \times m$ utility +matrix (see a [few sections above](#Utility-Matrix) for the definition +of *utility matrix*). +As noted, most elements of this matrix are unknown as users have rated +only a fraction of movies. We can represent this with another +$n \times m$ matrix (specifically a binary matrix), a 'mask' $M$ in +which $M_{k,i}$ is 1 if user $k$ supplied a rating for movie $i$, and +otherwise 0. + +#### 5.2.2.1. Deviation Matrix + +I mentioned *deviation* above and gave an informal definition of it. +The paper gaves a formal but rather terse definition below of the +average deviation of item $i$ with respect to item $j$, and I +then separate out the summation a little: + +$$ +\begin{split} +\textrm{dev}_{j,i} &= \sum_{u \in S_{j,i}(\chi)} \frac{u_j - u_i}{card(S_{j,i}(\chi))} \\ + &= \frac{1}{card(S_{j,i}(\chi))} \sum_{u \in +S_{j,i}(\chi)} u_j - u_i = \frac{1}{card(S_{j,i}(\chi))}\left(\sum_{u +\in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i\right) +\end{split} +$$ + +where: + +- $u_j$ and $u_i$ mean: user $u$'s ratings for movies $i$ and $j$, respectively +- $u \in S_{j,i}(\chi)$ means: all users $u$ who, in the dataset we're + training on, provided a rating for both movie $i$ and movie $j$ +- $card$ is the cardinality of that set, i.e. + ${card(S_{j,i}(\chi))}$ is how many users rated both $i$ and + $j$. + +#### 5.2.2.2. Cardinality/Counts Matrix + +Let's start with computing ${card(S_{j,i}(\chi))}$, the number of +users who rated both movie $i$ and movie $j$. Consider column $i$ of +the mask $M$. For each value in this column, it equals 1 if the +respective user rated movie $i$, or 0 if they did not. Clearly, +simply summing up column $i$ would tell us how many users rated movie +$i$, and the same applies to column $j$ for movie $j$. + +Now, suppose we take element-wise logical AND of columns $i$ and $j$. +The resultant column has a 1 only where both corresponding elements +were 1 - where a user rated both $i$ and $j$. If we sum up this +column, we have exactly the number we need: the number of users who +rated both $i$ and $j$. Some might notice that "elementwise logical +AND" is just "elementwise +multiplication", thus "sum of elementwise logical AND" is just "sum of +elementwise multiplication", which is: dot product. That is, +${card(S_{j,i}(\chi))}=M_j \cdot M_i$ if we use $M_i$ and $M_j$ for +columns $i$ and $j$ of $M$. + +However, we'd like to compute deviation as a matrix for all $i$ and +$j$, so we'll likewise need ${card(S_{j,i}(\chi))}$ for every single +combination of $i$ and $j$ - that is, we need a dot product between +every single pair of columns from $M$. This is incidentally just +matrix multiplication: + +$$C=M^\top M$$ + +since $C_{i,j}=card(S_{j,i}(\chi))$ is the dot product of row $i$ of $M^T$ - which is column +$i$ of $M$ - and column $j$ of $M$. + +That was the first half of what we needed for $\textrm{dev}_{j,i}$. +We still need the other half: + +$$\sum_{u \in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i$$ + +We can apply a similar trick here. Consider first what $\sum_{u \in +S_{j,i}(\chi)} u_j$ means: It is the sum of only those ratings of +movie $j$ that were done by a user who also rated movie $i$. +Likewise, $\sum_{u \in S_{j,i}(\chi)} u_i$ is the sum of only those +ratings of movie $i$ that were done by a user who also rated movie +$j$. (Note the symmetry: it's over the same set of users, because +it's always the users who rated both $i$ and $j$.) + +Let's call the utility matrix $U$, and use $U_i$ and $U_j$ to refer +to columns $i$ and $j$ of it (just as in $M$). $U_i$ has each rating +of movie $i$, but we want only the sum of the ratings done by a user +who also rated movie $j$. Like before, the dot product of $U_i$ and +$M_j$ (consider the definition of $M_j$) computes this, and so: + +$$\sum_{u \in S_{j,i}(\chi)} u_j = M_i \cdot U_j$$ + +and as with $C$, since we want every pairwise dot product, this summation just +equals element $(i,j)$ of $M^\top U$. The other half of the summation, +$\sum_{u \in S_{j,i}(\chi)} u_i$, equals $M_j \cdot U_i$, which is just +the transpose of this matrix: + +$$\sum_{u \in S_{j,i}(\chi)} u_j - \sum_{u \in S_{j,i}(\chi)} u_i = M^\top U - (M^\top U)^\top = M^\top U - U^\top M$$ + +So, finally, we can compute an entire deviation matrix at once like: + +$$D = \left(M^\top U - (M^\top U)^\top\right) /\ M^\top M$$ + +where $/$ is Hadamard (i.e. elementwise) division, and $D_{j,i} = \textrm{dev}_{j,i}$. + +By convention and to avoid division by zero, we treat the case where the denominator and numerator are both 0 as just equaling 0. This comes up only where no ratings exist for there to be a deviation - hence the `np.maximum(1, counts)` below. + +#### 5.2.2.3. Prediction + +Finally, the paper gives the formula to predict how user $u$ will rate movie $j$, and I write this in terms of our matrices: + +$$ +P(u)_j = \frac{1}{card(R_j)}\sum_{i\in R_j} \left(\textrm{dev}_{j,i}+u_i\right) = \frac{1}{card(R_j)}\sum_{i\in R_j} \left(D_{j,i} + U_{u,j} \right) +$$ + +where $R_j = \{i | i \in S(u), i \ne j, card(S_{j,i}(\chi)) > 0\}$, and $S(u)$ is the set of movies that user $u$ has rated. To unpack the paper's somewhat dense notation, the summation is over every movie $i$ that user $u$ rated and that at least one other user rated, except movie $j$. + +We can apply the usual trick yet one more time with a little effort. The summation already goes across a row of $U$ and $D$ (that is, user $u$ is held constant), but covers only certain elements. This is equivalent to a dot product with a mask representing $R_j$. $M_u$, row $u$ of the mask, already represents $S(u)$, and $R_j$ is just $S(u)$ with some more elements removed - which we can mostly represent with $M_u \odot (C_j > 0)$ where $\odot$ is elementwise product (i.e. Hadamard), $C_j$ is column/row $j$ of $C$ (it's symmetric), and where we abuse some notation to say that $C_j > 0$ is a binary vector. Likewise, $D_j$ is row $j$ of $D$. The one correction still required is that we subtract $u_j$ to cover for the $i \ne j$ part of $R_j$. To abuse some more notation: + +$$P(u)_j = \frac{[M_u \odot (C_j > 0)] \cdot (D_j + U_u) - U_{u,j}}{M_u \cdot (C_j > 0)}$$ + +#### 5.2.2.4. Approximation + +The paper also gives a formula that is a suitable approximation for larger data sets: + +$$p^{S1}(u)_j = \bar{u} + \frac{1}{card(R_j)}\sum_{i\in R_j} \textrm{dev}_{j,i}$$ + +where $\bar{u}$ is user $u$'s average rating. This doesn't change the formula much; we can compute $\bar{u}$ simply as column means of $U$. + +## 5.3. Implementation + +I left out another detail above, which is that the above can't really be implemented exactly as written on this dataset (though, it works fine for the much smaller [ml-100k](https://grouplens.org/datasets/movielens/100k/)) because it uses entirely too much memory. + +While $U$ and $M$ can be sparse matrices, $C$ and $D$ sort of must be dense matrices, and for this particular dataset they are a bit too large to work with in memory in this form. Some judicious optimization, attention to datatypes, use of $C$ and $D$ being symmetric and skew-symmetric respectively, and care to avoid extra copies could probably work around this - but I don't do that here. + +However, if we look at the $P(u)_j$ formula above, it refers only to row $j$ of $C$ and $D$ and the formulas for $C$ and $D$ make it easy to compute them by row if needed, or by blocks of rows according to what $u$ and $j$ we need. This is what I do below. + + +```python +def slope_one(U, M, users, movies, approx=True): + M_j = M[:,movies].T.multiply(1) + U_j = U[:,movies].T + Cj = M_j.dot(M).toarray() + MjU = M_j.dot(U).toarray() + UjM = U_j.dot(M).toarray() + Dj = (UjM - MjU) / np.maximum(Cj, 1) + mask = M[users,:].toarray() * (Cj > 0) + U_u = U[users,:].toarray() + if approx: + M_u = M[users,:].toarray() + P_u_j = U_u.sum(axis=1) / M_u.sum(axis=1) + ((mask * Dj).sum(axis=1) - U_u[0,movies]) / np.maximum(mask.sum(axis=1), 1) + else: + P_u_j = ((mask * (U_u + Dj)).sum(axis=1) - U_u[0,movies]) / np.maximum(mask.sum(axis=1), 1) + return P_u_j +``` + +To show that it actually gives the same result as above, and that the approximation produces seemingly no change here: + + +```python +(slope_one(ml_mat_train, ml_mask_train, [target_user], [target_movie])[0], + slope_one(ml_mat_train, ml_mask_train, [target_user], [target_movie], approx=False)[0]) +``` + + + + + (4.0875210502743862, 4.0875210502743862) + + + +This computes training error on a small part (1%) of the data, since doing it over the entire thing would be horrendously slow: + + +```python +def slope_one_err(U, M, users, movies, true_ratings): + # Keep 'users' and 'movies' small (couple hundred maybe) + p = slope_one(U, M, users, movies) + d = p - true_ratings + err_abs = np.abs(d).sum() + err_sq = np.square(d).sum() + return err_abs, err_sq +``` + + +```python +import multiprocessing + +count = int(len(ml_train) * 0.01) +idxs = np.random.permutation(len(ml_train))[:count] +# Memory increases linearly with chunk_size: +chunk_size = 200 +idxs_split = np.array_split(idxs, count // chunk_size) + +def err_part(idxs_part): + df = ml_train.iloc[idxs_part] + users = list(df.user_id) + movies = list(df.movie_id) + true_ratings = np.array(df.rating) + err_abs, err_sq = slope_one_err(ml_mat_train, ml_mask_train, users, movies, true_ratings) + return err_abs, err_sq + +with multiprocessing.Pool() as p: + errs = p.map(err_part, idxs_split) + err_mae_train = sum([e[0] for e in errs]) / count + err_rms_train = np.sqrt(sum([e[1] for e in errs]) / count) +``` + +and then likewise on 2% of the testing data (it's a smaller set to start): + + +```python +import multiprocessing + +count = int(len(ml_test) * 0.02) +idxs = np.random.permutation(len(ml_test))[:count] +chunk_size = 200 +idxs_split = np.array_split(idxs, count // chunk_size) + +def err_part(idxs_part): + df = ml_test.iloc[idxs_part] + users = list(df.user_id) + movies = list(df.movie_id) + true_ratings = np.array(df.rating) + err_abs, err_sq = slope_one_err(ml_mat_train, ml_mask_train, users, movies, true_ratings) + return err_abs, err_sq + +with multiprocessing.Pool() as p: + errs = p.map(err_part, idxs_split) + err_mae_test = sum([e[0] for e in errs]) / count + err_rms_test = np.sqrt(sum([e[1] for e in errs]) / count) +``` + + +```python +# These are used later for comparison: +test_results = [("", "Slope One", err_mae_test, err_rms_test)] +``` + + +```python +print("Training error: MAE={:.3f}, RMSE={:.3f}".format(err_mae_train, err_rms_train)) +print("Testing error: MAE={:.3f}, RMSE={:.3f}".format(err_mae_test, err_rms_test)) +``` + + Training error: MAE=0.640, RMSE=0.834 + Testing error: MAE=0.657, RMSE=0.856 + + +# 6. "SVD" algorithm + +## 6.1. Model & Background + +This basic model is very easy to implement, but the implementation won't make sense without some more involved derivation. + +I'm not sure this method has a clear name. Surprise calls it an SVD algorithm, but it neither uses SVD nor really computes it; it's just vaguely SVD-like. To confuse matters further, several other algorithms compute similar things and do use SVD, but are completely unrelated. + +References on this model are in a few different places: + +- [SVD](https://surprise.readthedocs.io/en/stable/matrix_factorization.html#surprise.prediction_algorithms.matrix_factorization.SVD) in Surprise gives enough formulas to implement from. +- Simon Funk's post [Netflix Update: Try This at Home](http://sifter.org/~simon/journal/20061211.html) is an excellent overview of the rationale and of some practical concerns on how to run this on the much larger Netflix dataset (100,000,000 ratings, instead of 100,000). +- The paywalled article [Matrix Factorization Techniques for Recommender Systems](http://ieeexplore.ieee.org/abstract/document/5197422/) gives a little background from a higher level. + +## 6.2. Motivation + +We again start from the $n \times m$ utility matrix $U$. As $m$ and $n$ tend to be quite large, $U$ has a lot of degrees of freedom. If we want to be able to predict anything at all, we must assume some fairly strict constraints - and one form of this is assuming that we don't *really* have that many degrees of freedom, and that there are actually some much smaller latent factors controlling everything. + +One common form of this is assuming that the rank of matrix $U$ - its *actual* dimensionality - is much lower. Let's say its rank is $r$. We could then represent $U$ as the matrix product of smaller matrices, i.e. $U=P^\top Q$ where $P$ is a $r \times n$ matrix and $Q$ is $r \times m$. + +If we can find dense matrices $P$ and $Q$ such that $P^\top Q$ equals, or approximately equals, $U$ for the corresponding elements of $U$ that are known, then $P^\top Q$ also gives us predictions for the unknown elements of $U$ - the ratings we don't know, but want to predict. Of course, $r$ must be small enough here to prevent overfitting. + +(What we're talking about above is [matrix completion](https://en.wikipedia.org/wiki/Matrix_completion) using low-rank [matrix decomposition/factorization](https://en.wikipedia.org/wiki/Matrix_decomposition). These are both subjects unto themselves. See the [matrix-completion-whirlwind](https://github.com/asberk/matrix-completion-whirlwind/blob/master/matrix_completion_master.ipynb) notebook for a much better explanation on that subject, and an implementation of [altMinSense/altMinComplete](https://arxiv.org/pdf/1212.0467).) + +Ordinarily, we'd use something like SVD directly if we wanted to find matrices $P$ and $Q$ (or if we wanted to do any of about 15,000 other things, since SVD is basically magical matrix fairy dust). We can't really do that here due to the fact that large parts of $U$ are unknown, and in some cases because $U$ is just too large. One approach for working around this is the UV-decomposition algorithm that section 9.4 of [MMDS](http://www.mmds.org/) describes. + +What we'll do below is a similar approach to UV decomposition that follows a common method: define a model, define an error function we want to minimize, find that error function's gradient with respect to the model's parameters, and then use gradient-descent to minimize that error function by nudging the parameters in the direction that decreases the error, i.e. the negative of their gradient. (More on this later.) + +Matrices $Q$ and $P$ have some other neat properties too. Note that $Q$ has $m$ columns, each one $r$-dimensional - one column per movie. $P$ has $n$ columns, each one $r$-dimensional - one column per user. In effect, we can look at each column $i$ of $Q$ as the coordinates of movie $i$ in "concept space" or "feature space" - a new $r$-dimensional space where each axis corresponds to something that seems to explain ratings. Likewise, we can look at each column $u$ of $P$ as how much user $u$ "belongs" to each axis in concept space. "Feature vectors" is a common term to see. + +In that sense, $P$ and $Q$ give us a model in which ratings are an interaction between properties of a movie, and a user's preferences. If we're using $U=P^\top Q$ as our model, then every element of $U$ is just the dot product of the feature vectors of the respective movie and user. That is, if $p_u$ is column $u$ of $P$ and $q_i$ is column $i$ of $Q$: + +$$\hat{r}_{ui}=q_i^\top p_u$$ + +However, some things aren't really interactions. Some movies are just (per the ratings) overall better or worse. Some users just tend to rate everything higher or lower. We need some sort of bias built into the model to comprehend this. + +Let's call $b_i$ the bias for movie $i$, $b_u$ the bias for user $u$, and $\mu$ the overall average rating. We can just add these into the model: + +$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$ + +This is the basic model we'll implement, and the same one described in the references at the top. + +## 6.3. Prediction & Error Function + +More formally, the prediction model is: + +$$\hat{r}_{ui}=\mu + b_i + b_u + q_i^\top p_u$$ + +where: + +- $u$ is a user +- $i$ is an item +- $\hat{r}_{ui}$ is user $u$'s predicted rating for item $i$ +- $\mu$ is the overall average rating +- our model parameters are: + - $b_i$, a per-item deviation for item $i$; + - $b_u$, per-user deviation for user $u$ + - $q_i$ and $p_u$, feature vectors for item $i$ and user $u$, respectively + +The error function that we need to minimize is just sum-of-squared error between predicted and actual rating, plus $L_2$ regularization to prevent the biases and coordinates in "concept space" from becoming too huge: +$$E=\sum_{r_{ui} \in R_{\textrm{train}}} \left(r_{ui} - \hat{r}_{ui}\right)^2 + \lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right)$$ + +## 6.4. Gradients & Gradient-Descent Updates + +This error function is easily differentiable with respect to model parameters $b_i$, $b_u$, $q_i$, and $p_u$, so a normal approach for minimizing it is gradient-descent. Finding gradient with respect to $b_i$ is straightforward: + +$$ +\begin{split} +\frac{\partial E}{\partial b_i} &= \sum_{r_{ui}} \frac{\partial}{\partial b_i} \left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)^2 + \frac{\partial}{\partial b_i}\lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right) \\ +\frac{\partial E}{\partial b_i} &= \sum_{r_{ui}} 2\left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)(-1) + 2 \lambda b_i \\ +\frac{\partial E}{\partial b_i} &= 2 \sum_{r_{ui}} \left(\lambda b_i + r_{ui} - \hat{r}_{ui}\right) +\end{split} +$$ + +Gradient with respect to $p_u$ proceeds similarly: + +$$ +\begin{split} +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} \frac{\partial}{\partial p_u} \left(r_{ui} - (\mu + b_i + b_u + q_i^\top p_u)\right)^2 + \frac{\partial}{\partial p_u}\lambda\left(b_i^2+b_u^2 + \lvert\lvert q_i\rvert\rvert^2 + \lvert\lvert p_u\rvert\rvert^2\right) \\ +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} 2\left(r_{ui} - \hat{r}_{ui}\right)\left(-\frac{\partial}{\partial +p_u}q_i^\top p_u \right) + 2 \lambda p_u \\ +\frac{\partial E}{\partial p_u} &= \sum_{r_{ui}} 2\left(r_{ui} - \hat{r}_{ui}\right)(-q_i^\top) + 2 \lambda p_u \\ +\frac{\partial E}{\partial p_u} &= 2 \sum_{r_{ui}} \lambda p_u - \left(r_{ui} - \hat{r}_{ui}\right)q_i^\top +\end{split} +$$ + +Gradient with respect to $b_u$ is identical form to $b_i$, and gradient with respect to $q_i$ is identical form to $p_u$, except that the variables switch places. The full gradients then have the standard form for gradient descent, i.e. a summation of a gradient term for each individual data point, so they turn easily into update rules for each parameter (which match the ones in the Surprise link) after absorbing the leading 2 into learning rate $\gamma$ and separating out the summation over each data point. That's given below, with $e_{ui}=r_{ui} - \hat{r}_{ui}$: + +$$ +\begin{split} +\frac{\partial E}{\partial b_i} &= 2 \sum_{r_{ui}} \left(\lambda b_i + e_{ui}\right)\ \ \ &\longrightarrow b_i' &= b_i - \gamma\frac{\partial E}{\partial b_i} &= b_i + \gamma\left(e_{ui} - \lambda b_u \right) \\ +\frac{\partial E}{\partial b_u} &= 2 \sum_{r_{ui}} \left(\lambda b_u + e_{ui}\right)\ \ \ &\longrightarrow b_u' &= b_u - \gamma\frac{\partial E}{\partial b_u} &= b_u + \gamma\left(e_{ui} - \lambda b_i \right)\\ +\frac{\partial E}{\partial p_u} &= 2 \sum_{r_{ui}} \lambda p_u - e_{ui}q_i^\top\ \ \ &\longrightarrow p_u' &= p_u - \gamma\frac{\partial E}{\partial p_u} &= p_u + \gamma\left(e_{ui}q_i - \lambda p_u \right) \\ +\frac{\partial E}{\partial q_i} &= 2 \sum_{r_{ui}} \lambda q_i - e_{ui}p_u^\top\ \ \ &\longrightarrow q_i' &= q_i - \gamma\frac{\partial E}{\partial q_i} &= q_i + \gamma\left(e_{ui}p_u - \lambda q_i \right) \\ +\end{split} +$$ + +The code below is a direct implementation of this by simply iteratively applying the above equations for each data point - in other words, stochastic gradient descent. + +## 6.5. Implementation + + +```python +# Hyperparameters +gamma = 0.002 +lambda_ = 0.02 +num_epochs = 20 +num_factors = 40 +``` + + +```python +class SVDModel(object): + def __init__(self, num_items, num_users, mean, + num_factors = 100, init_variance = 0.1): + self.mu = mean + self.num_items = num_items + self.num_users = num_users + self.num_factors = num_factors + #dtype = np.float32 + # Deviations, per-item: + self.b_i = np.zeros((num_items,), dtype=np.float32) + # Deviations; per-user: + self.b_u = np.zeros((num_users,), dtype=np.float32) + # Factor matrices: + self.q = (np.random.randn(num_factors, num_items) * init_variance)#.astype(dtype=np.float32) + self.p = (np.random.randn(num_factors, num_users) * init_variance)#.astype(dtype=np.float32) + # N.B. row I of q is item I's "concepts", so to speak; + # column U of p is how much user U belongs to each "concept" + + def predict(self, items, users): + """Returns rating prediction for specific items and users. + + Parameters: + items -- 1D array of item IDs + users -- 1D array of user IDs (same length as :items:) + + Returns: + ratings -- 1D array of predicted ratings (same length as :items:) + """ + # Note that we don't multiply p & q like matrices here, + # but rather, we just do row-by-row dot products. + # Matrix multiply would give us every combination of item and user, + # which isn't what we want. + return self.mu + \ + self.b_i[items] + \ + self.b_u[users] + \ + (self.q[:, items] * self.p[:, users]).sum(axis=0) + + def error(self, items, users, ratings, batch_size=256): + """Predicts over the given items and users, compares with the correct + ratings, and returns RMSE and MAE. + + Parameters: + items -- 1D array of item IDs + users -- 1D array of user IDs (same length as :items:) + ratings -- 1D array of 'correct' item ratings (same length as :items:) + + Returns: + rmse, mae -- Scalars for RMS error and mean absolute error + """ + sqerr = 0 + abserr = 0 + for i0 in range(0, len(items), batch_size): + i1 = min(i0 + batch_size, len(items)) + p = self.predict(items[i0:i1], users[i0:i1]) + d = p - ratings[i0:i1] + sqerr += np.square(d).sum() + abserr += np.abs(d).sum() + rmse = np.sqrt(sqerr / items.size) + mae = abserr / items.size + return rmse, mae + + def update_by_gradient(self, i, u, r_ui, lambda_, gamma): + """Perform a single gradient-descent update.""" + e_ui = r_ui - self.predict(i, u) + dbi = gamma * (e_ui - lambda_ * self.b_u[u]) + dbu = gamma * (e_ui - lambda_ * self.b_i[i]) + dpu = gamma * (e_ui * self.q[:,i] - lambda_ * self.p[:, u]) + dqi = gamma * (e_ui * self.p[:,u] - lambda_ * self.q[:, i]) + self.b_i[i] += dbi + self.b_u[u] += dbu + self.p[:,u] += dpu + self.q[:,i] += dqi + + def train(self, items, users, ratings, gamma = 0.005, lambda_ = 0.02, + num_epochs=20, epoch_callback=None): + """Train with stochastic gradient-descent""" + import sys + import time + for epoch in range(num_epochs): + t0 = time.time() + total = 0 + for idx in np.random.permutation(len(items)): + d = 2000000 + if (idx > 0 and idx % d == 0): + total += d + dt = time.time() - t0 + rate = total / dt + sys.stdout.write("{:.0f}/s ".format(rate)) + i, u, r_ui = items[idx], users[idx], ratings[idx] + self.update_by_gradient(i, u, r_ui, lambda_, gamma) + if epoch_callback: epoch_callback(self, epoch, num_epochs) +``` + +## 6.6. Running & Testing + + +```python +movies_train = ml_train["movie_id"].values +users_train = ml_train["user_id"].values +ratings_train = ml_train["rating"].values +movies_test = ml_test["movie_id"].values +users_test = ml_test["user_id"].values +ratings_test = ml_test["rating"].values +def at_epoch(self, epoch, num_epochs): + train_rmse, train_mae = self.error(movies_train, users_train, ratings_train) + test_rmse, test_mae = self.error(movies_test, users_test, ratings_test) + np.savez_compressed("svd{}".format(num_factors), + (self.b_i, self.b_u, self.p, self.q)) + print() + print("Epoch {:02d}/{}; Training: MAE={:.3f} RMSE={:.3f}, Testing: MAE={:.3f} RMSE={:.3f}".format(epoch + 1, num_epochs, train_mae, train_rmse, test_mae, test_rmse)) +``` + + +```python +svd40 = SVDModel(max_movie, max_user, ml["rating"].mean(), num_factors=num_factors) +svd40.train(movies_train, users_train, ratings_train, epoch_callback=at_epoch) +``` + + 6982/s 8928/s 10378/s 12877/s 15290/s 11574/s 13230/s + Epoch 01/20; Training: MAE=0.674 RMSE=0.874, Testing: MAE=0.677 RMSE=0.879 + 4700/s 8568/s 7968/s 10415/s 12948/s 13004/s 13892/s + Epoch 02/20; Training: MAE=0.663 RMSE=0.861, Testing: MAE=0.668 RMSE=0.868 + 54791/s 27541/s 15835/s 18596/s 22733/s 20542/s 22865/s + Epoch 03/20; Training: MAE=0.657 RMSE=0.854, Testing: MAE=0.663 RMSE=0.863 + 158927/s 15544/s 12845/s 12975/s 14161/s 16439/s 12474/s + Epoch 04/20; Training: MAE=0.649 RMSE=0.845, Testing: MAE=0.657 RMSE=0.856 + 3802/s 7361/s 8315/s 10317/s 11895/s 13779/s 13265/s + Epoch 05/20; Training: MAE=0.640 RMSE=0.834, Testing: MAE=0.649 RMSE=0.847 + 12472/s 18866/s 23647/s 27791/s 16208/s 12369/s 13389/s + Epoch 06/20; Training: MAE=0.632 RMSE=0.824, Testing: MAE=0.643 RMSE=0.840 + 28805/s 19738/s 20180/s 17857/s 16249/s 13536/s 13394/s + Epoch 07/20; Training: MAE=0.624 RMSE=0.814, Testing: MAE=0.638 RMSE=0.833 + 24548/s 44734/s 14160/s 10858/s 10926/s 10766/s 12496/s + Epoch 08/20; Training: MAE=0.616 RMSE=0.804, Testing: MAE=0.632 RMSE=0.826 + 9315/s 10221/s 14190/s 14990/s 10299/s 11436/s 13198/s + Epoch 09/20; Training: MAE=0.609 RMSE=0.795, Testing: MAE=0.627 RMSE=0.820 + 24830/s 34767/s 15151/s 11897/s 9766/s 11708/s 13273/s + Epoch 10/20; Training: MAE=0.602 RMSE=0.786, Testing: MAE=0.623 RMSE=0.815 + 47355/s 50678/s 44354/s 19882/s 13230/s 13775/s 12847/s + Epoch 11/20; Training: MAE=0.595 RMSE=0.777, Testing: MAE=0.619 RMSE=0.810 + 11881/s 15645/s 9316/s 11492/s 14085/s 13671/s 12256/s + Epoch 12/20; Training: MAE=0.589 RMSE=0.768, Testing: MAE=0.615 RMSE=0.806 + 17096/s 19543/s 24912/s 15852/s 16939/s 17755/s 13660/s + Epoch 13/20; Training: MAE=0.582 RMSE=0.760, Testing: MAE=0.612 RMSE=0.802 + 11735/s 23142/s 33466/s 41941/s 16498/s 18736/s 18874/s + Epoch 14/20; Training: MAE=0.577 RMSE=0.753, Testing: MAE=0.610 RMSE=0.799 + 3747/s 7109/s 9396/s 9294/s 10428/s 11155/s 12633/s + Epoch 15/20; Training: MAE=0.572 RMSE=0.746, Testing: MAE=0.607 RMSE=0.796 + 91776/s 15892/s 12027/s 15984/s 14365/s 11740/s 12474/s + Epoch 16/20; Training: MAE=0.567 RMSE=0.740, Testing: MAE=0.606 RMSE=0.794 + 17725/s 15693/s 15148/s 13012/s 15547/s 14170/s 14859/s + Epoch 17/20; Training: MAE=0.562 RMSE=0.733, Testing: MAE=0.604 RMSE=0.792 + 7750/s 11820/s 10883/s 10344/s 12010/s 12167/s 12403/s + Epoch 18/20; Training: MAE=0.557 RMSE=0.727, Testing: MAE=0.602 RMSE=0.790 + 15722/s 11371/s 16980/s 13979/s 15011/s 15340/s 17009/s + Epoch 19/20; Training: MAE=0.553 RMSE=0.722, Testing: MAE=0.601 RMSE=0.789 + 52078/s 18671/s 9292/s 11493/s 12515/s 11760/s 13039/s + Epoch 20/20; Training: MAE=0.549 RMSE=0.717, Testing: MAE=0.600 RMSE=0.787 + + + +```python +test_rmse, test_mae = svd40.error(movies_test, users_test, ratings_test) +test_results.append(("", "SVD", test_mae, test_rmse)) +``` + +## 6.7. Visualization of Latent Space + +I mentioned somewhere in here that this is a latent-factor model. The latent space (or concept space) that the model learned is useful as a sort of lossy compression of all those movie ratings into a much lower-dimensional space. It's probably useful for other things too. That lossy compression usually isn't just a fluke - it may have extracted something that's interesting on its own. + +The 40-dimensional space above might be a bit unruly to work with, but we can easily train on something lower, like a 4-dimensional space. We can then pick a few dimensions, and visualize where movies fit in this space. + + +```python +svd4 = SVDModel(max_movie, max_user, ml["rating"].mean(), 4) +svd4.train(ml_train["movie_id"].values, ml_train["user_id"].values, ml_train["rating"].values, epoch_callback=at_epoch) +``` + + 48199/s 33520/s 16937/s 13842/s 13607/s 15574/s 15431/s + Epoch 01/20; Training: MAE=0.674 RMSE=0.875, Testing: MAE=0.677 RMSE=0.878 + 25537/s 28976/s 36900/s 32309/s 10572/s 11244/s 12795/s + Epoch 02/20; Training: MAE=0.664 RMSE=0.864, Testing: MAE=0.668 RMSE=0.868 + 8542/s 12942/s 15965/s 15776/s 17190/s 17548/s 14876/s + Epoch 03/20; Training: MAE=0.660 RMSE=0.858, Testing: MAE=0.664 RMSE=0.864 + 5518/s 10199/s 13726/s 17042/s 18348/s 19738/s 14963/s + Epoch 04/20; Training: MAE=0.657 RMSE=0.855, Testing: MAE=0.662 RMSE=0.861 + 5054/s 9553/s 9207/s 11690/s 13277/s 13392/s 12950/s + Epoch 05/20; Training: MAE=0.653 RMSE=0.850, Testing: MAE=0.658 RMSE=0.857 + 728000/s 122777/s 15040/s 12364/s 11021/s 12142/s 12965/s + Epoch 06/20; Training: MAE=0.645 RMSE=0.840, Testing: MAE=0.651 RMSE=0.849 + 249831/s 32548/s 23093/s 24179/s 26070/s 27337/s 25700/s + Epoch 07/20; Training: MAE=0.637 RMSE=0.831, Testing: MAE=0.645 RMSE=0.842 + 77391/s 68985/s 15251/s 19532/s 20113/s 14211/s 13467/s + Epoch 08/20; Training: MAE=0.631 RMSE=0.824, Testing: MAE=0.640 RMSE=0.836 + 47346/s 16669/s 18279/s 13423/s 13594/s 16229/s 15855/s + Epoch 09/20; Training: MAE=0.626 RMSE=0.817, Testing: MAE=0.636 RMSE=0.831 + 8617/s 12683/s 13976/s 16825/s 19937/s 20210/s 19766/s + Epoch 10/20; Training: MAE=0.621 RMSE=0.811, Testing: MAE=0.632 RMSE=0.826 + 34749/s 46486/s 37026/s 27497/s 17555/s 20550/s 20926/s + Epoch 11/20; Training: MAE=0.617 RMSE=0.806, Testing: MAE=0.629 RMSE=0.823 + 8388/s 7930/s 8513/s 11249/s 13937/s 12245/s 13965/s + Epoch 12/20; Training: MAE=0.614 RMSE=0.802, Testing: MAE=0.627 RMSE=0.820 + 19899/s 7303/s 8950/s 10936/s 11717/s 13839/s 13401/s + Epoch 13/20; Training: MAE=0.611 RMSE=0.798, Testing: MAE=0.625 RMSE=0.817 + 144779/s 13374/s 11266/s 14888/s 14422/s 13258/s 12869/s + Epoch 14/20; Training: MAE=0.609 RMSE=0.795, Testing: MAE=0.623 RMSE=0.815 + 6578/s 11250/s 15117/s 12955/s 11470/s 13386/s 13040/s + Epoch 15/20; Training: MAE=0.607 RMSE=0.792, Testing: MAE=0.622 RMSE=0.814 + 23450/s 9245/s 11068/s 13315/s 14820/s 16872/s 17089/s + Epoch 16/20; Training: MAE=0.605 RMSE=0.790, Testing: MAE=0.621 RMSE=0.812 + 9460/s 10075/s 12410/s 13820/s 14344/s 16810/s 12759/s + Epoch 17/20; Training: MAE=0.603 RMSE=0.788, Testing: MAE=0.620 RMSE=0.811 + 558034/s 61794/s 50021/s 66589/s 14986/s 16479/s 17602/s + Epoch 18/20; Training: MAE=0.602 RMSE=0.786, Testing: MAE=0.619 RMSE=0.810 + 17841/s 11675/s 15336/s 14454/s 16483/s 18249/s 14615/s + Epoch 19/20; Training: MAE=0.600 RMSE=0.784, Testing: MAE=0.618 RMSE=0.809 + 6090/s 11341/s 15532/s 18298/s 17158/s 14908/s 16898/s + Epoch 20/20; Training: MAE=0.599 RMSE=0.783, Testing: MAE=0.618 RMSE=0.809 + + +To limit the data, we can use just the top movies (by number of ratings): + + +```python +top = movie_stats.sort_values("num_ratings", ascending=False)[:100] +ids_top = top.index.values +``` + + +```python +factors = svd4.q[:,ids_top].T +means, stds = factors.mean(axis=0), factors.std(axis=0) +factors[:] = (factors - means) / stds +``` + +So, here are the top 100 movies when plotted in the first two dimensions of the concept space: + + +```python +plt.figure(figsize=(15,15)) +markers = ["$ {} $".format("\ ".join(m.split(" ")[:-1])) for m in top["movie_title"][:50]] +for i,item in enumerate(factors[:50,:]): + l = len(markers[i]) + plt.scatter(item[0], item[1], marker = markers[i], alpha=0.75, s = 50 * (l**2)) +plt.show() +``` + + +![png](../images/output_94_0.png) + + +And here are the other two: + + +```python +plt.figure(figsize=(15,15)) +markers = ["$ {} $".format("\ ".join(m.split(" ")[:-1])) for m in top["movie_title"][50:]] +for i,item in enumerate(factors[50:,:]): + l = len(markers[i]) + plt.scatter(item[2], item[3], marker = markers[i], alpha=0.75, s = 50 * (l**2)) +plt.show() +``` + + +![png](../images/output_96_0.png) + + +Below is another way of visualizing. Neither the code nor the result are very pretty, but it divides the entire latent space into a 2D grid, identifies the top few movies (ranked by number of ratings) in each grid square, and prints the resultant grid. + + +```python +def clean_title(s): + remove = [", The", ", A", ", An"] + s1 = " ".join(s.split(" ")[:-1]) + for suffix in remove: + if s1.endswith(suffix): + s1 = s1[:-len(suffix)] + return s1 + +sorted_num_rating = np.array(np.argsort(movie_stats.sort_values("num_ratings", ascending=False).num_ratings)) +sorted_num_rating = sorted_num_rating[sorted_num_rating >= 0] +def latent_factor_grid(latent_space, count=2): + factors = svd4.q[:2,sorted_num_rating] + # We've already set stdev in all dimensions to 1, so a multiple of it is okay: + bin_vals = np.arange(-2, 2, 1/4) + bins = np.digitize(latent_space, bin_vals).T + #bins + # Now: What is the first instance of each bin in each axis? + # (May make most sense if sorted first by # of ratings) + n = len(bin_vals) + first_idxs = np.zeros((n,n), dtype=np.int32) + first_titles = np.zeros((n,n), dtype=np.object) + for i in range(n): + for j in range(n): + # where is first occurence of bin (i,j)? + matches = (bins == [i,j]).prod(axis=1) + first = np.nonzero(matches)[0] + first_titles[i,j] = "" + if first.size > 0: + first_idxs[i,j] = first[0] + if first[0] > 0: + # Could easily modify this to get the 2nd, 3rd, etc. + # item of these bins + first_titles[i,j] = "; ".join( + [clean_title(movie_stats.loc[first[i]].movie_title) + for i in range(0,min(count,len(first))) + if first[i] in movie_stats.index] + ) + # that final check is needed because (I think) + # my SVD matrices are randomly-initialized, and + # movie indices with no data (not all IDs are used) + # are never updated + else: + first_idxs[i,j] = -1 + return pd.DataFrame(first_titles) +``` + + +```python +pd.set_option('display.max_rows', 500) +latent_factor_grid(svd4.q[:2,:]) +``` + + + + + + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 +|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|--- +0|||||||||||||||| +1|||||Dumb & Dumber (Dumb and Dumber)||||||||||| +2|||||||||||||||| +3||||||Tommy Boy; Ace Ventura: Pet Detective||Ace Ventura: When Nature Calls; Billy Madison|BASEketball|Half Baked||Natural Born Killers; Fear and Loathing in Las...|||| +4||||||Beavis and Butt-Head Do America|Happy Gilmore|Spaceballs; Eddie Murphy Raw||Don't Be a Menace to South Central While Drink...|National Lampoon's Senior Trip; Event Horizon|Four Rooms; Where the Buffalo Roam||Julien Donkey-Boy|| +5|||||Austin Powers: International Man of Mystery|Fletch; Rambo: First Blood Part II|Kingpin; Jerk|Friday; Pulp Fiction|Casino; Clerks|From Dusk Till Dawn; Faster Pussycat! Kill! Kill!|Bio-Dome; In the Mouth of Madness|Switchblade Sisters; Stardust Memories|Cook the Thief His Wife & Her Lover; Lost Highway|Even Cowgirls Get the Blues|| +6|||||Animal House; Caddyshack|Conan the Barbarian; First Blood (Rambo: First...|Goodfellas; Evil Dead II (Dead by Dawn)|Dazed and Confused; Mystery Science Theater 30...|Heat; Seven (a.k.a. Se7en)|Leaving Las Vegas; Heidi Fleiss: Hollywood Madam|Dead Presidents; Things to Do in Denver When Y...|Dracula: Dead and Loving It; Canadian Bacon|Being Human; Road to Wellville|Doom Generation; Boxing Helena|| +7|||||Rocky; Airplane!|There's Something About Mary; American Pie|Die Hard: With a Vengeance; Batman|So I Married an Axe Murderer; Tombstone|Grumpier Old Men; Usual Suspects|Nixon; Twelve Monkeys (a.k.a. 12 Monkeys)|Shanghai Triad (Yao a yao yao dao waipo qiao);...|Hate (Haine, La); Basketball Diaries|If Lucy Fell; Jade|Ready to Wear (Pret-A-Porter); Pillow Book|| +8|||||Terminator 2: Judgment Day; Die Hard|Aliens; Star Wars: Episode VI - Return of the ...|Braveheart; Mask|GoldenEye; Shawshank Redemption||Guardian Angel|Money Train; Assassins|When Night Is Falling; Two if by Sea|Carrington; Antonia's Line (Antonia)|Tank Girl; Eye of the Beholder|| +9||||Jaws|Star Wars: Episode IV - A New Hope; Raiders of...|Nutty Professor; Back to the Future|True Lies; Home Alone|Crimson Tide; Clear and Present Danger|Get Shorty; Across the Sea of Time|Sudden Death; Wings of Courage|Tom and Huck; Richard III|Powder; Now and Then|Home for the Holidays; Lawnmower Man 2: Beyond...|Priest; But I'm a Cheerleader|| +10||||||Jurassic Park; Scream|Lion King; Fugitive|Timecop; Schindler's List|Jumanji; Father of the Bride Part II|Balto; Copycat|Cutthroat Island; Dunston Checks In|Othello; Misérables, Les|Angels and Insects; Boys on the Side||| +11||||||Toy Story; Aladdin|Speed; Adventures of Robin Hood|Apollo 13; Santa Clause|American President; Clueless|Sabrina; Indian in the Cupboard|Persuasion; Free Willy 2: The Adventure Home|Waiting to Exhale; Corrina, Corrina|It Takes Two; NeverEnding Story III|To Wong Foo, Thanks for Everything! Julie Newmar|| +12||||||Toy Story 2|Snow White and the Seven Dwarfs; Beauty and th...|Singin' in the Rain; Meet Me in St. Louis|Miracle on 34th Street; Black Beauty|Little Princess; While You Were Sleeping|Little Women; Lassie|Center Stage; Legally Blonde 2: Red, White & B...|||| +13||||||||Sound of Music; Spy Kids 2: The Island of Lost...|Bring It On; Legally Blonde|Fly Away Home; Parent Trap|Sense and Sensibility; Sex and the City||||| +14|||||||Babe; Babe: Pig in the City||||Twilight||||| +15|||||||||||||||| + + + + +Both axes seem to start more on the low-brow side along the top left. There is come clear clustering around certain themes but it's hard to put clearly to words. The fact that *Rocky* and *Airplane!* landed in the same grid square, as did *Apollo 13* and *Santa Clause*, is interesting. + +Here is the same thing for the other two dimensions in this latent space: + + +```python +latent_factor_grid(svd4.q[2:,:]) +``` + + + + + + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 +|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|--- +0|||||||||||||||| +1|||||||||||||||| +2|||||||||||||||| +3|||||||||||||||| +4||||||Patch Adams||Music of the Heart; Love Story|Steel Magnolias||Bridges of Madison County; Sound of Music||||| +5|||||First Knight|Pay It Forward|Father of the Bride Part II; Up Close and Pers...|Legends of the Fall; Love Affair|Pocahontas; Mr. Holland's Opus|Philadelphia; Dances with Wolves|Cinderella; Fried Green Tomatoes|Out of Africa|||| +6||||Big Momma's House 2|D3: The Mighty Ducks; Here on Earth|Big Green; Free Willy 2: The Adventure Home|Grumpier Old Men; Dangerous Minds|Sabrina; American President|How to Make an American Quilt; Far From Home: ...|Lion King; Aladdin|Misérables, Les; Circle of Friends|Snow White and the Seven Dwarfs; Pinocchio|||| +7||||Armageddon; Police Academy 4: Citizens on Patrol|Jury Duty; Major Payne|Ace Ventura: When Nature Calls; It Takes Two|Tom and Huck; Dunston Checks In|Powder; Now and Then|Waiting to Exhale; Balto|Indian in the Cupboard; Birdcage|Beautiful Girls; Brothers McMullen|Antonia's Line (Antonia); Like Water for Choco...|Sense and Sensibility; Postman, The (Postino, Il)|Hamlet; Civil War|| +8|||Transformers: Revenge of the Fallen|2 Fast 2 Furious (Fast and the Furious 2, The)...|Bio-Dome; Beverly Hills Cop III|Money Train; Assassins|Jumanji; Race the Sun|Copycat; Kids of the Round Table|Across the Sea of Time; City Hall|Heat; Restoration|Toy Story; Othello|Persuasion; Dead Man Walking|Anne Frank Remembered; Boys of St. Vincent|Bread and Chocolate (Pane e cioccolata); Stree...|| +9||||Tomcats; Deuce Bigalow: European Gigolo|Cutthroat Island; Fair Game|Sudden Death; Dracula: Dead and Loving It|GoldenEye; Two if by Sea|Nick of Time; Mallrats|Four Rooms; Wings of Courage||Casino; Clueless|Nixon; Babe|Bottle Rocket; Nobody Loves Me (Keiner liebt m...|Leaving Las Vegas; Hoop Dreams|World of Apu, The (Apur Sansar); 400 Blows, Th...| +10||||White Chicks|Street Fighter; Bloodsport 2 (a.k.a. Bloodspor...|Vampire in Brooklyn; Broken Arrow|Village of the Damned; Airheads|Don't Be a Menace to South Central While Drink...|Dead Presidents; Things to Do in Denver When Y...|Glass Shield; Star Wars: Episode IV - A New Hope|Georgia; Sonic Outlaws|Get Shorty; Shanghai Triad (Yao a yao yao dao ...|Richard III; Confessional, The (Confessionnal,...|Taxi Driver; Fargo|Citizen Kane; Grand Illusion (La grande illusion)| +11|||||Mortal Kombat; Judge Dredd|Johnny Mnemonic; Showgirls|Screamers; Puppet Masters|Lord of Illusions; Prophecy|Rumble in the Bronx (Hont faan kui); Addams Fa...|Barbarella; Institute Benjamenta, or This Drea...|Twelve Monkeys (a.k.a. 12 Monkeys); Cronos|Flirting With Disaster; Blade Runner|City of Lost Children, The (Cité des enfants ...|Crumb; Faces||Passion of Joan of Arc, The (Passion de Jeanne... +12|||||Saw III|Nightmare on Elm Street 5: The Dream Child; Fr...|Tales from the Crypt Presents: Demon Knight; C...|From Dusk Till Dawn; Doom Generation|Tank Girl; Cabin Boy|Addiction; Howling|Natural Born Killers; Serial Mom|Exotica; Faster Pussycat! Kill! Kill!|Safe; Nosferatu (Nosferatu, eine Symphonie des...|Gerry|Tree of Life| +13||||||Nightmare on Elm Street 4: The Dream Master; F...|Wes Craven's New Nightmare (Nightmare on Elm S...|Friday the 13th; Exorcist III|Candyman; Texas Chainsaw Massacre 2|Mars Attacks!; Halloween|Evil Dead II (Dead by Dawn); Re-Animator|Night of the Living Dead; Dead Alive (Braindead)||Eraserhead|| +14|||||||Nightmare on Elm Street 3: Dream Warriors; Fre...|Hellbound: Hellraiser II|Nightmare on Elm Street||||||| +15|||||||Bride of Chucky (Child's Play 4)||||Texas Chainsaw Massacre||||| + + + + +Some sensible axes seem to form here too. Moving from left to right (i.e. increasing horizontal axis) seems to go from movies with 'simpler' themes (I'm not really sure of the right term) to movies that are a bit more cryptic and enigmatic. Moving from the top to bottom (i.e. increasing vertical axis) seems to go from more lighthearted and uplifting movies, to more violent movies, all the way to horror movies. + +## 6.8. Bias + +We can also look at the per-movie bias parameters in the model - loosely, how much higher or lower a movie's rating is, beyond what interactions with user preferences seem to explain. Here are the top 10 and bottom 10; interestingly, while to seems to correlate with the average rating, it doesn't seem to do so especially strongly. + + +```python +#bias = movie_stats.assign(bias = svd40.b_i[:-1]).sort_values("bias", ascending=False) +bias = movie_stats.join(pd.Series(svd40.b_i[:-1]).rename("bias")).sort_values("bias", ascending=False).dropna() +bias.iloc[:10] +``` + + + + + + | movie_title | num_ratings | avg_rating | bias | movie_id | | | | +|------------|------------|-----------|-----|---------|-|-|-|- +318|Shawshank Redemption, The (1994)|63366.0|4.446990|1.015911 +100553|Frozen Planet (2011)|31.0|4.209677|1.010655 +858|Godfather, The (1972)|41355.0|4.364732|0.978110 +105250|Century of the Self, The (2002)|43.0|3.930233|0.956971 +93040|Civil War, The (1990)|256.0|4.113281|0.941702 +7502|Band of Brothers (2001)|4305.0|4.263182|0.926048 +77658|Cosmos (1980)|936.0|4.220620|0.916784 +50|Usual Suspects, The (1995)|47006.0|4.334372|0.910651 +102217|Bill Hicks: Revelations (1993)|50.0|3.990000|0.900622 +527|Schindler's List (1993)|50054.0|4.310175|0.898633 + + + + + +```python +bias.iloc[:-10:-1] +``` + + + + + + | movie_title | num_ratings | avg_rating | bias | movie_id | | | | +|------------|------------|-----------|-----|---------|-|-|-|- +8859|SuperBabies: Baby Geniuses 2 (2004)|209.0|0.837321|-2.377202 +54290|Bratz: The Movie (2007)|180.0|1.105556|-2.248130 +6483|From Justin to Kelly (2003)|426.0|0.973005|-2.214592 +61348|Disaster Movie (2008)|397.0|1.251889|-2.131157 +6371|Pokémon Heroes (2003)|325.0|1.167692|-2.061165 +1826|Barney's Great Adventure (1998)|419.0|1.163484|-2.051037 +4775|Glitter (2001)|685.0|1.124088|-2.047287 +31698|Son of the Mask (2005)|467.0|1.252677|-2.022763 +5739|Faces of Death 6 (1996)|174.0|1.261494|-2.004086 + + + + +# 7. Implementations in `scikit-surprise` + +[Surprise](http://surpriselib.com/) contains implementations of many of the same things, so these are tested below. This same dataset is included as a built-in, but for consistency, we may as well load it from our dataframe. + +Results below are cross-validated, while our results above aren't, so comparison may have some noise to it (i.e. if you change the random seed you may see our results perform much better or worse while the Surprise results should be more consistent). + + +```python +import surprise +from surprise.dataset import Dataset +``` + +Note the `.iloc[::10]` below, which is a quick way to decimate the data by a factor of 10. Surprise seems to be less memory-efficient than my code above (at least, without any tuning whatsoever), so in order to test it I don't pass in the entire dataset. + + +```python +reader = surprise.Reader(rating_scale=(1, 5)) +data = Dataset.load_from_df(ml[["user_id", "movie_id", "rating"]].iloc[::10], reader) +cv=5 +cv_random = surprise.model_selection.cross_validate(surprise.NormalPredictor(), data, cv=cv) +cv_sl1 = surprise.model_selection.cross_validate(surprise.SlopeOne(), data, cv=cv) +cv_svd = surprise.model_selection.cross_validate(surprise.SVD(), data, cv=cv) +``` + +# 8. Overall results + + +```python +get_record = lambda name, df: \ + ("Surprise", name, df["test_mae"].sum() / cv, df["test_rmse"].sum() / cv) +cv_data_surprise = [ + get_record(name,d) for name,d in [("Random", cv_random), ("Slope One", cv_sl1), ("SVD", cv_svd)] +] +pd.DataFrame.from_records( + data=test_results + cv_data_surprise, + columns=("Library", "Algorithm", "MAE (test)", "RMSE (test)"), +) +``` + + + + + + | Library | Algorithm | MAE (test) | RMSE (test) +|--------|----------|-----------|------------ +0||Slope One|0.656514|0.856294 +1||SVD|0.600111|0.787375 +2|Surprise|Random|1.144775|1.433753 +3|Surprise|Slope One|0.704730|0.923331 +4|Surprise|SVD|0.694890|0.900350 + + + + +# 9. Further Work + +All of the code in the notebook above is fairly raw and unoptimized. One could likely produce much better performance with a lower-level and multithreaded implementation, with more optimized matrix routines (perhaps GPU-optimized) with something like [Numba](https://numba.pydata.org/), or with a distributed implementation in something like [Dask](https://dask.pydata.org/en/latest/) or Spark (via [PySpark](https://spark.apache.org/docs/latest/api/python/index.html)). + +Within recommender systems, this post covered only collaborative filtering. A part 2 post will follow which covers *content-based filtering*, another broad category of recommender systems. diff --git a/images/2018-04-08-recommenders/output_94_0.png b/images/2018-04-08-recommenders/output_94_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4efd37765b708ae9a3dfb0f119588e21b5383238 GIT binary patch literal 226938 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∈i_lH+%j)1JRwadzLfGA}U_O>s_rZ|riJecxJj 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

Z!v^DXW_Zu7r=7|p)?W_8uX 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∈sRe+xvfV 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 z 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

6jN&&lZ3 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 GgeCxv7N@%a literal 0 HcmV?d00001 diff --git a/posts/2018-03-09-python-asyncio.org b/posts/2018-03-09-python-asyncio.org index 5c4cd9c..b967d07 100644 --- a/posts/2018-03-09-python-asyncio.org +++ b/posts/2018-03-09-python-asyncio.org @@ -54,39 +54,18 @@ over to some other code, whereas calling "whenever" means retaining control but queuing up some code to be run in the background asychronously (as much as possible). -- Calling within the same thread: - - Right now (i.e. turning control over): - - Coroutine from a function: Use the event loop's ~.run_*~ - methods. - - Coroutine from a coroutine: Use the ~await~ keyword. - - Whenever (i.e. retain control, but run something else when - possible or at some later time): - - Calling a function: Use the event loop's ~.call_*()~ - methods. - - Calling a coroutine from a function: Use the event loop's - ~.create_task()~ method, or ~asyncio.ensure_future()~. -- Calling a function in another thread or another process: Use - ~.run_in_executor()~ on ~ThreadPoolExecutor~ or - ~ProcessPoolExecutor~, respectively. - -# |-----------+-----------+-----------------------+-----------------------------------------------| -# | Call from | Call to | When/where | How | -# |-----------+-----------+-----------------------+-----------------------------------------------| -# | Either | Function | Now, same thread | Normal function call | -# | Function | Coroutine | Now, same thread | ~.run_*~ in event loop | -# | Coroutine | Coroutine | Now, same thread | ~await~ | -# | Either | Function | Whenever, same thread | Event loop ~.call_*()~ | -# | Either | Coroutine | Whenever, same thread | Event loop ~.create_task()~ | -# | | | | ~asyncio.ensure_future()~ | -# | Either | Function | Now, another thread | ~.run_in_executor()~ on ~ThreadPoolExecutor~ | -# | Either | Function | Now, another process | ~.run_in_executor()~ on ~ProcessPoolExecutor~ | -# |-----------+-----------+-----------------------+-----------------------------------------------| - -# TODO: How do I make Pandoc render this table better? It's hardly -# usable right now because you can't see where a column starts and -# ends - -# TODO: Or maybe use http://ditaa.sourceforge.net/ and babel? +|-----------+-----------+-----------------------+-----------------------------------------------| +| Call from | Call to | When/where | How | +|-----------+-----------+-----------------------+-----------------------------------------------| +| Either | Function | Now, same thread | Normal function call | +| Function | Coroutine | Now, same thread | ~.run_*~ in event loop | +| Coroutine | Coroutine | Now, same thread | ~await~ | +| Either | Function | Whenever, same thread | Event loop ~.call_*()~ | +| Either | Coroutine | Whenever, same thread | Event loop ~.create_task()~ | +| | | | ~asyncio.ensure_future()~ | +| Either | Function | Now, another thread | ~.run_in_executor()~ on ~ThreadPoolExecutor~ | +| Either | Function | Now, another process | ~.run_in_executor()~ on ~ProcessPoolExecutor~ | +|-----------+-----------+-----------------------+-----------------------------------------------| * Futures & Coroutines