From 947bbd08e86907b41eda70b92d810763d448d15c Mon Sep 17 00:00:00 2001 From: Max Halford Date: Tue, 3 Oct 2023 23:34:32 +0200 Subject: [PATCH 1/3] Update content-personalization.ipynb --- docs/examples/content-personalization.ipynb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/examples/content-personalization.ipynb b/docs/examples/content-personalization.ipynb index a3d8ced170..ec48da1b04 100644 --- a/docs/examples/content-personalization.ipynb +++ b/docs/examples/content-personalization.ipynb @@ -75,6 +75,17 @@ "get_reward('Tom', 'politics', {'time_of_day': 'morning'})" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "users = ['Tom', 'Anna']\n", + "times_of_day = ['morning', 'afternoon']\n", + "actions = ['politics', 'sports', 'music', 'food', 'finance', 'health', 'camping']" + ] + }, { "attachments": {}, "cell_type": "markdown", From 97918ad907ae3047b07605334f762763f0257f02 Mon Sep 17 00:00:00 2001 From: Max Halford Date: Wed, 4 Oct 2023 15:22:40 +0200 Subject: [PATCH 2/3] wip --- docs/examples/content-personalization.ipynb | 516 +++++--------------- docs/releases/unreleased.md | 5 + river/bandit/lin_ucb.py | 2 +- river/checks/__init__.py | 6 +- river/reco/base.py | 23 +- river/reco/baseline.py | 2 +- river/reco/biased_mf.py | 6 +- river/reco/funk_mf.py | 4 +- river/reco/normal.py | 2 +- 9 files changed, 151 insertions(+), 415 deletions(-) diff --git a/docs/examples/content-personalization.ipynb b/docs/examples/content-personalization.ipynb index ec48da1b04..a15a9d0d8e 100644 --- a/docs/examples/content-personalization.ipynb +++ b/docs/examples/content-personalization.ipynb @@ -5,7 +5,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Content personalization" + "# Content personalization\n", + "\n", + "🏗️ work in progress." ] }, { @@ -23,12 +25,12 @@ "source": [ "This example takes inspiration from Vowpal Wabbit's [excellent tutorial](https://vowpalwabbit.org/tutorials/cb_simulation.html).\n", "\n", - "Content personalization is about taking into account user preferences. It's a special case of recommender systems. Ideally, side-information should be taken into account in addition to the user. But we'll start with something simpler. We'll assume that each user has stable preferences that are independent of the context. We capture this by implementing a \"reward\" function." + "Content personalization is about taking into account user preferences. It's a special case of recommender systems. Ideally, side-information should be taken into account in addition to the user. But we'll start with something simpler, where we only take into account the user and their preferences for each item." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 132, "metadata": { "execution": { "iopub.execute_input": "2023-09-02T00:49:27.695411Z", @@ -44,12 +46,16 @@ "1" ] }, - "execution_count": 1, + "execution_count": 132, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "users = ['Tom', 'Anna']\n", + "times_of_day = ['morning', 'afternoon']\n", + "actions = ['politics', 'sports', 'music', 'food', 'finance', 'health', 'camping']\n", + "\n", "def get_reward(user, item, context):\n", "\n", " time_of_day = context['time_of_day']\n", @@ -75,15 +81,40 @@ "get_reward('Tom', 'politics', {'time_of_day': 'morning'})" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is a toy problem, and so it's possible to print out all the outcomes." + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 191, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "User Time of day politics sports music food finance health camping\n", + " Tom morning 1.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + " Tom afternoon 0.0 0.0 1.0 0.0 0.0 0.0 0.0\n", + " Anna morning 0.0 1.0 0.0 0.0 0.0 0.0 0.0\n", + " Anna afternoon 1.0 0.0 0.0 0.0 0.0 0.0 0.0\n" + ] + } + ], "source": [ - "users = ['Tom', 'Anna']\n", - "times_of_day = ['morning', 'afternoon']\n", - "actions = ['politics', 'sports', 'music', 'food', 'finance', 'health', 'camping']" + "import itertools\n", + "\n", + "def print_preferences(reward_func, users=users, times_of_day=times_of_day, actions=actions):\n", + " print(f'{\"User\":<5} {\"Time of day\":<12}' + ' '.join(f'{action:>9}' for action in actions))\n", + " for user, time_of_day in itertools.product(users, times_of_day):\n", + " rewards = [reward_func(user, action, {'time_of_day': time_of_day}) for action in actions]\n", + " print(f'{user:>5} {time_of_day:>12}' + ' '.join(f'{reward:>9.1f}' for reward in rewards))\n", + "\n", + "print_preferences(get_reward)" ] }, { @@ -91,12 +122,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Measuring the performance of a recommendation is not straightforward, mostly because of the interactive aspect of recommender systems. In a real situation, recommendations are presented to a user, and the user gives feedback indicating whether they like what they have been recommended or not. This feedback loop can't be captured entirely by a historical dataset. Some kind of simulator is required to generate recommendations and capture feedback. We already have a reward function. Now let's implement a simulation function." + "Measuring the performance of a recommender system is not straightforward, mostly because of the interactive aspect. In a real situation, recommendations are presented to a user, and the user gives feedback indicating whether they like what they have been recommended or not. This feedback loop can't be captured entirely by a historical dataset. Some kind of simulator is required to generate recommendations and capture feedback. We already have a reward function. Now let's implement a simulation function." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 291, "metadata": { "execution": { "iopub.execute_input": "2023-09-02T00:49:27.718298Z", @@ -118,11 +149,7 @@ " plt.title(f'final CTR: {ctr[-1]:.2%}', fontsize=14)\n", " plt.grid()\n", "\n", - "users = ['Tom', 'Anna']\n", - "times_of_day = ['morning', 'afternoon']\n", - "items = {'politics', 'sports', 'music', 'food', 'finance', 'health', 'camping'}\n", - "\n", - "def simulate(n, reward_func, model, seed):\n", + "def simulate(n, reward_func, model, seed, users=users, items=actions, times_of_day=times_of_day):\n", " \n", " rng = random.Random(seed)\n", " n_clicks = 0\n", @@ -132,12 +159,10 @@ " \n", " # Generate a context at random\n", " user = rng.choice(users)\n", - " context = {\n", - " 'time_of_day': rng.choice(times_of_day)\n", - " }\n", + " context = {'time_of_day': rng.choice(times_of_day)}\n", " \n", " # Make a single recommendation\n", - " item = model.rank(user, items=items, x=context)[0]\n", + " item = model.sample(user, items=items, x=context)\n", " \n", " # Measure the reward\n", " clicked = reward_func(user, item, context)\n", @@ -155,16 +180,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This simulation function does quite a few things. It can be seen as a simple reinforcement learning simulation. It samples a user, and then ask the model to provide a single recommendation. The user then gives as to whether they liked the recommendation or not. Crucially, the user doesn't tell us what item they would have liked. We could model this as a multi-class classification problem if that were the case.\n", - "\n", - "The strategy parameter determines the mechanism used to generate the recommendations. The `'best'` strategy means that the items are each scored by the model, and are then ranked from the most preferred to the least preferred. Here the most preferred item is the one which gets recommended. But you could imagine all sorts of alternative ways to proceed.\n", + "This simulation function does quite a few things. It can be seen as a simple reinforcement learning simulation. It samples a user, and then asks the model to provide a single recommendation. The user then gives feedback as to whether they liked the recommendation or not. Crucially, the user doesn't tell us what item they would have liked. We could model this as a multi-class classification problem if that were the case.\n", "\n", "We can first evaluate a recommended which acts completely at random. It assigns a random preference to each item, regardless of the user." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 257, "metadata": { "execution": { "iopub.execute_input": "2023-09-02T00:49:27.899930Z", @@ -176,7 +199,7 @@ "outputs": [ { "data": { - "image/png": "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Gklm8eLFddapXVY7B+V4fD6fiY2NNUOHDg1ob8gcnunTpxtJ5oEHHvjBvsdzonN4OnfubLKzs012dra59957zbBhw4wkk5SUZNatW1dnvc2bN5v169ebqqqqkxrXD83hqVVcXGwk+T9sNpu59957A+bQ/JC1a9ea6dOnm7Vr15qSkhKTn59v5s2bZ7p3724kmaysrID+tXOXHA6H6dKli1m8eLEpLi42q1atMunp6UaS+c1vfhOwzo4dO8xVV11l4uLiTNu2bU1WVpYpLy83xhgzbtw406VLF1NeXm42btxohg0bZiIiIkxiYqKZPn36Ce8HEC4IPECYOdnAc+jQoTrrjB492kgyO3fuDGh/6623zIgRI0xCQoJxOBwBv5zPOuusgL7hHHjq+0hOTjabNm06pfc/lhMNPLW8Xq/ZtWuXee6550xcXJwZPHhwvV+nhtizZ49p3bq1iYiIMPn5+f72xx57zB+uVq5cGbBOfn6+iYmJMdHR0aaiouIH3yMnJ8fYbDazePFi4/V6zdlnn2169eplFixYYB599FFjs9nM3LlzT2k/gFBj0jJgEbWnso5UO4/F6/X622bMmKFrrrlGq1ev1ogRI3TPPfcoOztb2dnZatGihSorK096DMnJyZKk3bt3n/Q2GiIzM1Om5g83FRQU6Mknn1RBQYGuvPJK/31+mpLdble7du1055136sUXX9TSpUv12GOPndI2k5OTddVVV6m6ujrgtFXtvKt27dqpb9++AeskJiZq0KBBKisr0/r164+7/fLyct1+++265ZZbNGzYMC1cuFDr16/Xc889p8zMTD300EMaPny4/vCHP5zSfgChxhwe4AxSXV2tRx55RG3atNGaNWuUmJjoX2aM0RNPPHFK2x88eLCkmhvf+Xy+kM7jad26te69914dOnRIjz76qB5++GH/BPBwMGLECElqlKvTEhISJNXce6hWt27dJB17kntte3l5+XG3nZ2drdLSUj311FOSpI0bN0oKvO9Pnz599NJLL53M0IEmwxEe4Ayyb98+HTp0SOnp6QFhR5JWrFjxg78Mf0iXLl00ZMgQ7dq1S3/961+P2/dUjiQdz4MPPqiUlBQ999xz2r59e1De42R89913kiSn03nK26o9snPklWaDBg1SVFSUtm7dWu/dktetW1dnnaOtXr1af/jDH/TMM8/UCU5Hfr0qKyuPe8dpIBwReIAzSGJioqKiorRq1aqAOwYfOHBAv/zlLxvlPZ5++mlFRUVpwoQJmjt3br19Pv74Y1100UWN8n5Hi4qK0v333y+Px6NHHnkkYNmWLVu0YcOGBj3ioSHWrVtX752Yy8rKlJWVJUm69NJLA5bt27dPGzZs0L59+wLaj3UfoaefflpLlixR165d9aMf/cjfHhMTozFjxqi0tFSPPvpowDr/93//p3Xr1un8889XmzZt6t2u1+vVrbfeqksvvVTXXnutv/3ss8+WJM2fP19SzVHChQsX+tuB0wWntIAziN1u11133aUZM2aoV69euuKKK1RUVKT3339fHTp0UEpKyim/R+/evfXOO+/o+uuv1w033KDf/e53GjJkiOLj41VYWOh/xEGXLl0aYY/qd/vtt+v3v/+9/va3v+nBBx9U586dJUnDhw9v8H14jrzR4549e+q0PfDAA/772Lz++uuaOXOmzj//fKWlpSk2Nla7d+/W+++/r/379+uCCy7Qr3/964Dt/+lPf9LUqVOVnZ0dcCuCa665Rk6nU/3791e7du1UWlqqzz77TKtXr1ZcXJz+/ve/17k3zuOPP67c3Fw99thj+uSTT9S/f39t2rRJ77zzjlq2bKk///nPx9zPGTNmaMuWLXrnnXcC2jMyMtSjRw/dcccd+uyzz/z3+3nzzTdPqH5A2GjiSdMAjnKyV2nVZ+zYsUaS2bZtm7+tqqrKPPbYY6Zr167G7Xab9u3bm3vuuccUFxfX+94NfbRErf3795tHHnnEDBo0yLRs2dJERESYVq1amaFDh5o//vGPpqSk5JjrnsqjJWo988wzRpIZM2ZMne0eWY8fomNcDVb7cWRdvvjiC3PbbbeZc845x8TFxfn3ediwYebPf/5zvZel19b36EdITJ8+3QwbNsykpKQYt9ttoqKiTPfu3c3dd99tdu3adczx7t+/3/zqV78yqampxul0mqSkJDNmzBizZcuWY66zefNmExUVZZ577rl6l2/atMkMHz7cuN1uk5KSwmMmcFqyGWNMyFMWAABACDGHBwAAWB6BBwAAWB6BBwAAWF7YBZ6PPvpIV1xxhVJSUmSz2TRv3rwfXCc3N1d9+/aV2+1Wly5d/A9fBAAAkMIw8JSWlqpXr1569tlnT6j/tm3bdNlll2nYsGFas2aN7r77bv385z/Xf//73yCPFAAAnC7C+iotm82mf//73xo5cuQx+9x///167733tHbtWn/bDTfcoIMHD2rBggUhGCUAAAh3p/2NB5ctW6aMjIyAtszMTN19993HXKeysjLgNuk+n0+FhYVq1aoVt0sHAOA0YYxRcXGxUlJSfvDZfad94MnLy1NSUlJAW1JSkoqKilReXq6oqKg660ybNk1Tp04N1RABAEAQ7dq1S+3atTtun9M+8JyMSZMm+Z9rI0mHDh1S+/bttW3bNjVv3rxR38vj8WjJkiUaNmxYozw0EPWjzqFBnUODOocOtQ6NYNW5uLhYHTt2PKHf3ad94ElOTlZ+fn5AW35+vmJjY+s9uiNJbrdbbre7Tnt8fLxiY2MbdXwej0fR0dFq1aoV/5mCiDqHBnUODeocOtQ6NIJV59ptnch0lLC7Squh0tPTlZOTE9C2aNEipaenN9GIAABAuAm7wFNSUqI1a9ZozZo1kmouO1+zZo127twpqeZ01E033eTvf8cdd2jr1q36zW9+ow0bNui5557T66+/XueJxAAA4MwVdoFnxYoV6tOnj/r06SNJysrKUp8+fTR58mRJ0p49e/zhR5I6duyo9957T4sWLVKvXr00Y8YMvfzyy8rMzGyS8QMAgPATdnN4hg4dquPdGqi+uygPHTpUq1evDuKoAADA6SzsjvAAAAA0NgIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwPAIPAACwvLAMPM8++6zS0tIUGRmpgQMH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xOSdO3fKbv/+ArMf//jHeu211/Twww/rwQcfVNeuXTVv3jyde+65TbULAAAgjIRl4JGkCRMmHPMUVm5ubp226667Ttddd12QR9Vwbrdb2dnZdU6hoXFR59CgzqFBnUOHWodGONTZZk7kWi4AAIDTWNjdeBAAAKCxEXgAAIDlEXgAAIDlEXgAAIDlEXiC6Nlnn1VaWpoiIyM1cOBALV++vKmHFNY++ugjXXHFFUpJSZHNZtO8efMClhtjNHnyZLVp00ZRUVHKyMjQpk2bAvoUFhZq9OjRio2NVVxcnG699VaVlJQE9Pnqq690wQUXKDIyUqmpqXriiSeCvWthZdq0afrRj36k5s2bKzExUSNHjtTGjRsD+lRUVGj8+PFq1aqVYmJidM0119S5m/nOnTt12WWXKTo6WomJibrvvvtUXV0d0Cc3N1d9+/aV2+1Wly5dNHv27GDvXth4/vnn1bNnT/+N1tLT0/X+++/7l1Pj4Jg+fbpsNlvAjWip9ambMmWKbDZbwEf37t39y0+LGhsExZw5c4zL5TKvvPKK+d///mduu+02ExcXZ/Lz85t6aGFr/vz55qGHHjL/+te/jCTz73//O2D59OnTTYsWLcy8efPMl19+aa688krTsWNHU15e7u/zk5/8xPTq1ct89tln5uOPPzZdunQxN954o3/5oUOHTFJSkhk9erRZu3at+ec//2mioqLMn//851DtZpPLzMw0r776qlm7dq1Zs2aNufTSS0379u1NSUmJv88dd9xhUlNTTU5OjlmxYoUZNGiQ+fGPf+xfXl1dbc4991yTkZFhVq9ebebPn28SEhLMpEmT/H22bt1qoqOjTVZWllm3bp155plnjMPhMAsWLAjp/jaVt99+27z33nvmm2++MRs3bjQPPvigcTqdZu3atcYYahwMy5cvN2lpaaZnz55m4sSJ/nZqfeqys7PNOeecY/bs2eP/2Lt3r3/56VBjAk+QDBgwwIwfP97/2uv1mpSUFDNt2rQmHNXp4+jA4/P5THJysnnyySf9bQcPHjRut9v885//NMYYs27dOiPJfPHFF/4+77//vrHZbGb37t3GGGOee+4507JlS1NZWenvc//995tu3boFeY/CV0FBgZFkPvzwQ2NMTV2dTqd54403/H3Wr19vJJlly5YZY2rCqd1uN3l5ef4+zz//vImNjfXX9je/+Y05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aOLEiUpJSZHb7VbPnj315ptv1ul/6NAhTZ48WT169FBMTIxiY2PVpUsXjR07tt6aAAjEER4AAb744gs98cQTGjZsmH7xi19o9erVmjdvnr7++mutXbtWkZGRp7T9u+++W7Nnz9aXX36piRMnKi4uTlJNAKj1+eefKzMzU6Wlpbr88svVtWtXbd++Xf/4xz/0/vvva9myZerUqVPAdvfv36/09HTFx8frhhtuUEVFhWJjYyVJv//977V582YNGjRIV199tQ4ePKgFCxboF7/4hTZu3KgZM2b4x5Cdna2pU6eqQ4cOuvnmm/3b792793H365NPPlFmZqaqqqp07bXXKi0tTcuWLdPTTz+td999V5999lmd02Aej0cjRozQgQMHdM0116isrExz5szR9ddfrwULFmjEiBGSJGOMMjMz9fnnn2vw4MH6yU9+Irvdrh07dujtt9/WmDFj1KFDh5P4agBnkEZ77jqA09qSJUuMJCPJzJkzJ2DZmDFjjCTzz3/+s8HblWQuvPDCgLaxY8caSWbbtm11+ldVVZm0tDTTvHlzs2rVqoBlH3/8sXE4HObyyy+v8x6SzLhx40x1dXWdbW7durVOm8fjMRdffLFxOBxmx44dPzjmWrV1ys7O9rd5vV7TuXNnI8ksWLAgoP99991nJJlbbrkloL1Dhw5GkrnqqqtMZWWlv/2DDz4wkkxmZqa/7auvvjKSzMiRI+uMp6KiwhQXF9c7VgDf45QWgABDhgzRqFGjAtpuueUWSTVHf4Lt3Xff1fbt23XfffepT58+AcvOP/98XXXVVZo/f76KiooClrlcLj3xxBNyOBx1ttmxY8c6bREREbrjjjvk9Xq1ZMmSUxrz0qVLtWXLFl1yySXKzMwMWDZ58mTFx8frtddeU1VVVZ11//CHP8jlcvlfDx8+XB06dKi31lFRUXXa3G63YmJiTmn8wJmAU1oAAvTr169OW7t27SRJBw8eDPr7f/bZZ5KkjRs31jtPJi8vTz6fT99884369+/vb+/YseMxr5wqLi7WU089pXnz5mnLli0qLS0NWP7dd9+d0phXr14tSfVeyl47X2jhwoXauHGjzjvvPP+yuLi4esNYu3bttGzZMv/rs88+Wz179tQ///lPffvttxo5cqSGDh2q3r17y27n71bgRBB4AASonfdypIiImh8VXq836O9fWFgoSfrHP/5x3H5Hh5akpKR6+1VVVWno0KFatWqV+vTpozFjxqhVq1aKiIjQ9u3b9de//lWVlZWnNObao03HGkObNm0C+tVq0aJFvf0jIiLk8/kCXi9evFhTpkzRW2+9pXvuuUeS1Lp1a02YMEEPPfRQvUe2AHyPwAMgrNQGrnfeeUeXX375Ca9Xe3XV0f7zn/9o1apVuvXWW/Xyyy8HLJszZ47/irFTUTvm/Pz8epfn5eUF9DsZrVq10jPPPKM//vGP2rBhgxYvXqxnnnlG2dnZcjqdmjRp0klvGzgTcCwUQMjVHo2o74jRwIEDJSnglM6p2LJliyTpqquuqrPs448/rncdu93eoKNZtXONai+DP1JpaalWrFihqKgodevW7YS3eSw2m01nn322xo8fr0WLFkmS3n777VPeLmB1BB4AIRcfHy9J2rVrV51lV111ldq3b6+ZM2fqo48+qrPc4/Hok08+OeH3qr1c++h1PvzwQ7300kvHHN+33357wu8xePBgde7cWe+//74++OCDgGWPPvqo9u/frxtvvDFgcnJDbN++vd77INUeUTrVWwUAZwJOaQEIuYsuukhPPfWUbr/9dl1zzTVq1qyZOnTooDFjxsjtduvNN9/UJZdcogsvvFAXXXSRzjvvPNlsNu3YsUMff/yxWrVqpQ0bNpzQe11xxRVKS0vTE088obVr1+rcc8/Vxo0b9e677+rqq6+u9yZ/F110kV5//XWNHDlSffr0kcPh0JVXXqmePXvW+x52u12zZ89WZmamLr30Ul133XXq0KGDli1bptzcXHXu3FnTp08/6XqtWbNGP/3pTzVgwAD16NFDycnJ2r17t+bNmye73a5f//rXJ71t4ExB4AEQcpdccomeeOIJvfTSS5oxY4Y8Ho8uvPBCjRkzRpL0ox/9SF9++aWefPJJzZ8/X0uXLpXb7Vbbtm01cuRI3XjjjSf8XjExMVq8eLHuu+8+ffTRR8rNzdU555yjf/zjH0pKSqo38Dz99NOSpMWLF+udd96Rz+dTu3btjhl4pJpL5j/77DP97ne/08KFC3Xo0CGlpKRo4sSJevjhh0/p2Vv9+/fX/fffr9zcXL333ns6ePCgkpOTlZGRofvuu0+DBg066W0DZwqbMcY09SAAAACCiTk8AADA8gg8AADA8pjDA6BBZs2adUJ3XL755psDHggKAE2JOTwAGiQtLU07duz4wX5Lliyp91ELANAUCDwAAMDymMMDAAAsj8ADAAAsj8ADAAAsj8ADAAAsj8ADAAAsj8ADAAAsj8ADAAAsj8ADAAAsj8ADAAAs7/8DqCGiBVovThIAAAAASUVORK5CYII=", + "image/png": "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nToVU6ZMQY8ePfDee+/B09MTq1evttv/119/xaBBg/DYY48hKioKI0eOxPjx4694VoiIiIhuHEpXD+BSBoMB+/btw9y5c61tcrkcsbGxSEtLs7vObbfdhk8//RR79uzBgAEDcOrUKWzYsAETJ05scD96vR56vd76uqysDABgNBphNBpb6Ghg3eal/yXHYJ2dg3V2DtbZeVhr53BUnZuzPbcKPIWFhTCbzQgJCbFpDwkJwdGjR+2u89hjj6GwsBC33347hBAwmUyYNm1ao5e0kpKSsHDhwnrtmzdvhqen57UdRAOSk5Mdsl2yxTo7B+vsHKyz87DWztHSda6qqmpyX7cKPFcjNTUVr732Gt59911ER0fjxIkTmDFjBhYtWoSXX37Z7jpz585FQkKC9XVZWRkiIiIwcuRI+Pr6tuj4jEYjkpOTceedd0KlUrXotuki1tk5WGfnYJ2dh7V2DkfVue4KTVO4VeAJCgqCQqFAXl6eTXteXh5CQ0PtrvPyyy9j4sSJeOqppwAAN998MyorK/H000/jxRdfhFxef5qSRqOBRqOp165SqRz2A+/IbdNFrLNzsM7OwTo7D2vtHC1d5+Zsy60mLavVavTr1w8pKSnWNovFgpSUFMTExNhdp6qqql6oUSgUAAAhhOMGS0RERNcNtzrDAwAJCQmYPHky+vfvjwEDBmD58uWorKzElClTAACTJk1CeHg4kpKSAACjR4/GsmXL0LdvX+slrZdffhmjR4+2Bh8iIiK6sbld4Bk3bhwKCgowf/586HQ69OnTB5s2bbJOZM7NzbU5o/PSSy9BJpPhpZdewtmzZ9G6dWuMHj0ar776qqsOgYiIiNyM2wUeAIiPj0d8fLzdZampqTavlUolEhMTkZiY6ISRERER0fXIrebwEBERETkCAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSZ5bBp4VK1YgKioKWq0W0dHR2LNnT6P9S0pKMH36dLRp0wYajQZdunTBhg0bnDRaIiIicndKVw/gcl9++SUSEhLw3nvvITo6GsuXL0dcXBwyMzMRHBxcr7/BYMCdd96J4OBgfPPNNwgPD0dOTg78/f2dP3giIiJyS24XeJYtW4apU6diypQpAID33nsPP/30E1avXo05c+bU67969WoUFxfj119/hUqlAgBERUU5c8hERETk5twq8BgMBuzbtw9z5861tsnlcsTGxiItLc3uOuvXr0dMTAymT5+OH374Aa1bt8Zjjz2G2bNnQ6FQ2F1Hr9dDr9dbX5eVlQEAjEYjjEZjCx4RrNtr6e2SLdbZOVhn52CdnYe1dg5H1bk523OrwFNYWAiz2YyQkBCb9pCQEBw9etTuOqdOncKWLVswYcIEbNiwASdOnMBzzz0Ho9GIxMREu+skJSVh4cKF9do3b94MT0/Paz8QO5KTkx2yXbLFOjsH6+wcrLPzsNbO0dJ1rqqqanJftwo8V8NisSA4OBjvv/8+FAoF+vXrh7Nnz+KNN95oMPDMnTsXCQkJ1tdlZWWIiIjAyJEj4evr26LjMxqNSE5Oxp133mm95EYtj3V2DtbZOVhn52GtncNRda67QtMUbhV4goKCoFAokJeXZ9Oel5eH0NBQu+u0adMGKpXK5vJV9+7dodPpYDAYoFar662j0Wig0WjqtatUKof9wDty23QR6+wcrLNzsM7Ow1o7R0vXuTnbcqvb0tVqNfr164eUlBRrm8ViQUpKCmJiYuyuM2jQIJw4cQIWi8XaduzYMbRp08Zu2CEiIqIbj1sFHgBISEjAqlWr8PHHH+PIkSN49tlnUVlZab1ra9KkSTaTmp999lkUFxdjxowZOHbsGH766Se89tprmD59uqsOgYiIiNyMW13SAoBx48ahoKAA8+fPh06nQ58+fbBp0ybrRObc3FzI5RdzWkREBH7++Wc8//zz6NWrF8LDwzFjxgzMnj3bVYdAREREbsbtAg8AxMfHIz4+3u6y1NTUem0xMTH47bffHDwqIiIiul653SUtIiIiopbGwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESS5/DAk5qa6uhdEBERETXKYYFn165dGDFiBEaMGOGoXRARERE1ibK5KxiNRnz++efYt28flEolbr/9djzwwAPW5enp6ZgzZw6Sk5MhhED//v1bdMBEREREzdWswFNeXo4hQ4bgjz/+gBACAPDWW2/hgQcewNdff4358+fjtddeg8ViwS233IIFCxbg3nvvdcjAiYiIiJqqWYHn9ddfx8GDB9G7d29MmDABAPDpp5/iu+++w6OPPoqvvvoKnTp1wptvvokxY8Y4ZMBEREREzdWswPPDDz8gMjISu3fvhlqtBgDEx8ejW7du+Prrr3H33Xfju+++g0ajcchgiYiIiK5GsyYtnzp1CqNGjbKGHQDQarW45557AABvvvkmww4RERG5nWYFnurqaoSEhNRrDw4OBgB07dq1ZUZFRERE1IJa9LZ0uZzPMSQiIiL30+zb0jMyMvDVV1/VawOAr7/+2nr31qUeeeSRqxweERER0bVrduD59ttv8e2339q01YWcRx99tF67TCZj4CEiIiKXalbgmT9/PmQymaPGQkREROQQzQo8CxYscNAwiIiIiBynWbOMn3jiCaxfv95RYyEiIiJyiGYFnjVr1iA9Pd1BQyEiIiJyDN5HTkRERJLHwENERESSx8BDREREktfs5/CsW7cO2dnZTe4vk8nw4YcfNnc3RERERC2m2YEnPT29WROXGXiIiIjI1ZodeB5//HFMnjzZEWMhIiIicohmB56oqCgMHTrUEWMhIiIicghOWiYiIiLJY+AhIiIiyWPgISIiIslrVuD56KOPoFAoMG/ePBiNxgb7GQwGzJs3D4sXL77mARIRERFdq2YFnvDwcMyfPx+BgYFQqVQN9lOr1QgKCsKLL76IrVu3XvMgiYiIiK5FswLPJ598glatWiE+Pv6KfadPn46AgAB89NFHVz04IiIiopbQrMDz66+/IjY2FhqN5op9NRoNYmNjsWvXrqseHBEREVFLaFbgOXfuHDp06NDk/u3bt8f58+ebPSgiIiKiltSswCOXyxudrHw5o9EIuZw3ghEREZFrNSuNhIWFISMjo8n9MzIyEB4e3uxBEREREbWkZgWewYMHY8uWLU36tPTs7Gxs2bIFQ4YMudqxEREREbWIZgWe6dOnw2g04qGHHkJhYWGD/YqKivDwww/DZDLh2WefveZBEhEREV2LZn146C233IKZM2di+fLl6NGjB6ZNm4Y77rgDbdu2BQCcPXsWKSkpeP/991FQUICEhATccsstDhk4ERERUVM1+9PSly5dCq1WizfeeAOvvvoqXn31VZvlQggoFArMnTsXr7zySosNlIiIiOhqNTvwyGQyvPbaa3jyySfx0Ucf4ddff4VOpwMAhIaGYtCgQXj88cfRsWPHFh8sERER0dVoduCp07FjR57BISIiousCH5JDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLntoFnxYoViIqKglarRXR0NPbs2dOk9dauXQuZTIaxY8c6doBERER03XDLwPPll18iISEBiYmJ2L9/P3r37o24uDjk5+c3ul52djb+8Y9/YPDgwU4aKREREV0P3DLwLFu2DFOnTsWUKVPQo0cPvPfee/D09MTq1asbXMdsNmPChAlYuHAhOnTo4MTREhERkbtTunoAlzMYDNi3bx/mzp1rbZPL5YiNjUVaWlqD6/3rX/9CcHAwnnzySezYsaPRfej1euj1euvrsrIyAIDRaITRaLzGI7BVt72W3i7ZYp2dg3V2DtbZeVhr53BUnZuzPbcLPIWFhTCbzQgJCbFpDwkJwdGjR+2us3PnTnz44YdIT09v0j6SkpKwcOHCeu2bN2+Gp6dns8fcFMnJyQ7ZLtlinZ2DdXYO1tl5WGvnaOk6V1VVNbmv2wWe5iovL8fEiROxatUqBAUFNWmduXPnIiEhwfq6rKwMERERGDlyJHx9fVt0fEajEcnJybjzzjuhUqladNt0EevsHKyzc7DOzsNaO4ej6lx3haYp3C7wBAUFQaFQIC8vz6Y9Ly8PoaGh9fqfPHkS2dnZGD16tLXN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u6YxHzhwAADs3speN19o8+bNyMzMxM0332xd5u/vbzeMtW3bFmlpadbX3bt3R69evfDFF1/gzJkzGDt2LIYNG4Y+ffpALuffrURNwcBDRDbq5r1cSqms/VVhNpsdvv/i4mIAwGeffdZov8tDS0hIiN1+BoMBw4YNw/79+9G3b19MnDgRgYGBUCqVyM7Oxscffwy9Xn9NY64729TQGNq0aWPTr46fn5/d/kqlEhaLxeb1li1bsGDBAnz77bd44YUXAACtW7dGfHw8XnzxRbtntojoIgYeInIrdYHrf//7H+69994mr1d3d9XlfvjhB+zfvx9PPvkkPvjgA5tla9eutd4xdi3qxpyXl2d3uU6ns+l3NQIDA/H222/jP//5D44ePYotW7bg7bffRmJiIlQqFebOnXvV2ya6EfBcKBE5Xd3ZCHtnjKKjowHA5pLOtTh58iQA4L777qu3bMeOHXbXkcvlzTqbVTfXqO42+EtVVlZi79698PDwQNeuXZu8zYbIZDJ0794d06dPR3JyMgBg/fr117xdIqlj4CEipwsICAAAnD59ut6y++67D+3atcOyZcuwffv2esuNRiN27tzZ5H3V3a59+Trbtm3DqlWrGhzfmTNnmryPQYMGoWPHjti4cSN++eUXm2WvvPIKioqKMH78eJvJyc2RnZ1t9zlIdWeUrvVRAUQ3Al7SIiKnGz58ON588008/fTTePDBB+Hl5YXIyEhMnDgRGo0G33zzDe6++24MHToUw4cPx8033wyZTIacnBzs2LEDgYGBOHr0aJP2NXr0aERFRWHJkiXIyMjATTfdhMzMTPz444+4//777T7kb/jw4fjqq68wduxY9O3bFwqFAmPGjEGvXr3s7kMul2PNmjWIi4vDqFGj8PDDDyMyMhJpaWlITU1Fx44dsXjx4quuV3p6Oh544AEMGDAAPXr0QGhoKM6ePYt169ZBLpfj+eefv+ptE90oGHiIyOnuvvtuLFmyBKtWrcLSpUthNBoxdOhQTJw4EQBw66234uDBg3jjjTewYcMG7Nq1CxqNBuHh4Rg7dizGjx/f5H15e3tjy5YtmDVrFrZv347U1FT07NkTn332GUJCQuwGnrfeegsAsGXLFvzvf/+DxWJB27ZtGww8QO0t87/99hv+9a9/YfPmzSgtLUVYWBhmzJiBl1566Zo+e6t///6YPXs2UlNT8dNPP6GkpAShoaGIjY3FrFmzMHDgwKveNtGNQiaEEK4eBBEREZEjcQ4PERERSR4DDxEREUke5/AQUbMsX768SU9cfvzxx20+EJSIyJU4h4eImiUqKgo5OTlX7Ld161a7H7VAROQKDDxEREQkeZzDQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREkvf/ASYXb8xvdJfaAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -188,7 +211,7 @@ "source": [ "from river import reco\n", "\n", - "model = reco.RandomNormal(seed=10)\n", + "model = reco.RandomNormal(seed=42)\n", "simulate(5_000, get_reward, model, seed=42)" ] }, @@ -197,24 +220,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that the click-through rate (CTR) oscillates around 28.74%. In fact, this model is expected to be correct `100 * (2 / 7)% = 28.57%` of the time. Indeed, each user likes two items, and there are seven items in total.\n", - "\n", - "Let's now use the `Baseline` recommended. This one models each preference as the following sum:\n", - "\n", - "$$preference = \\bar{y} + b_{u} + b_{i}$$\n", - "\n", - "where\n", - "\n", - "- $\\bar{y}$ is the average CTR overall\n", - "- $b_{u}$ is the average CTR per user minus $\\bar{y}$ -- it's therefore called a *bias*\n", - "- $b_{i}$ is the average CTR per item minus $\\bar{y}$\n", - "\n", - "This model is considered to be a baseline because it doesn't actually learn what items are preferred by each user. Instead it models each user and item separately. We shouldn't expect it to be a strong model. It should however do better than the random model used above." + "We can see that the click-through rate (CTR) oscillates around 14%. This is because each context has a single action that yields a like. There are seven possible actions, so the expected performance of a random strategy is $\\frac{1}{7} = 14.29\\%$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A good model should at the very least understand what kind of items each user prefers. One of the simplest and yet performant way to do this is Simon Funk's SGD method he developped for the Netflix challenge and wrote about [here](https://sifter.org/simon/journal/20061211.html). It models each user and each item as latent vectors. The dot product of these two vectors is the expected preference of the user for the item." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 447, "metadata": { "execution": { "iopub.execute_input": "2023-09-02T00:49:28.222721Z", @@ -226,7 +244,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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0/DMM8/gl19+sfJIiYiI6G7h0FdpyWSyW94GfebMmdi8ebPpmTIA8PTTTyM3Nxfx8fE2GCURERE5urv+0RLJycmIiIgwa4uMjKz2plhardbsVulGoxE5OTnw8vLi7dKJiIjuEkIIFBQUoEmTJrd8dt9dH3gyMzPh5+dn1ubn54f8/HyUlJTA2dm50jpxcXE2vxkZERERWcf58+fNHnBryV0feG7H7NmzERMTY3qdl5eH5s2bIy0tDW5ubnW6L71ej+3bt6Nfv351dhdbqox1tg3W2TZYZ9thrW3DWnUuKChAcHBwjT677/rA4+/vj6ysLLO2rKwsuLu7Wzy6A5Q/WdjSU5obNWoEd3f3Oh2fXq+Hi4sLvLy8+MNkRayzbbDOtsE62w5rbRvWqnPFtmoyHcXhrtKqrfDwcCQmJpq1JSQkIDw83E4jIiIiIkfjcIGnsLAQKSkppgcLpqWlISUlBefOnQNQfjpq7Nixpv6TJ0/G2bNn8fLLL+PEiRNYsWIFvvnmG7z44ov2GD4RERE5IIcLPAcOHEDnzp3RuXNnAEBMTAw6d+6MuXPnAgAuXbpkCj8AEBwcjM2bNyMhIQEdO3bE4sWL8cknnyAyMtIu4yciIiLH43BzePr27Yvqbg1k6S7Kffv2xeHDh604KiIiIrqbOdwRHiIiIqK6xsBDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLH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mdDpdFCpVJXWUavVUKvVldqVSqXVvuGtuW26jnW2DdbZNlhn22GtbaOu61ybbTnUZekqlQpdu3ZFYmKiqc1oNCIxMRHh4eEW1+nRowdOnz4No9Foajt58iQaN25sMewQERFR/eNQgQcAYmJisGrVKnz++ec4fvw4nnvuORQVFZmu2ho7dqzZpObnnnsOOTk5mDp1Kk6ePInNmzfjrbfewpQpU+z1FoiIiMjBONQpLQAYMWIELl++jLlz5yIzMxOdOnVCfHy8aSLzuXPnIJdfz2kBAQH45Zdf8OKLLyI0NBRNmzbF1KlTMXPmTHu9BSIiInIwDhd4ACA6OhrR0dEWlyUlJVVqCw8Px969e608KiIiIrpbOdwpLSIiIqK6xsBDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREkmf1wJOUlGTtXRARERFVy2qBZ8+ePRgwYAAGDBhgrV0QERER1YhTbVfQ6/X46quvcPDgQTg5OaFnz5547LHHTMtTUlIwa9YsJCQkQAiBbt261emAiYiIiGqrVoGnoKAAvXv3xpEjRyCEAAAsW7YMjz32GNavX4+5c+firbfegtFoRJcuXTBv3jw89NBDVhk4ERERUU3VKvC8/fbb+OOPP9CxY0eMHj0aAPDFF1/g+++/x9NPP41vvvkGLVu2xLvvvouHH37YKgMmIiIiqq1aBZ4ff/wRgYGB2LdvH1QqFQAgOjoabdu2xfr16zF48GB8//33UKvVVhksERER0e2o1aTls2fPYsiQIaawAwAajQZDhw4FALz77rsMO0RERORwahV4SkpK4OfnV6nd19cXANCmTZu6GRURERFRHarTy9Llct7HkIiIiBxPrS9LP3bsGL755ptKbQCwfv1609VbN3rqqaduc3hEREREd67Wgee7777Dd999Z9ZWEXKefvrpSu0ymYyBh4iIiOyqVoFn7ty5kMlk1hoLERERkVXUKvDMmzfPSsMgIiIisp5azTKeMGECNm7caK2xEBEREVlFrQLPmjVrkJKSYqWhEBEREVkHryMnIiIiyWPgISIiIslj4CEiIiLJq/V9eDZs2ID09PQa95fJZPj0009ruxsiIiKiOlPrwJOSklKricsM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", "text/plain": [ "
" ] @@ -236,75 +254,48 @@ } ], "source": [ - "model = reco.Baseline(seed=10)\n", + "model = reco.FunkMF(seed=10)\n", "simulate(5_000, get_reward, model, seed=42)" ] }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This baseline model seems perfect, which is surprising. The reason why it works so well is because both users have in common that they both like politics. The model therefore learns that the `'politics'` is a good item to recommend." - ] - }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.341934Z", - "iopub.status.busy": "2023-09-02T00:49:28.341784Z", - "iopub.status.idle": "2023-09-02T00:49:28.354013Z", - "shell.execute_reply": "2023-09-02T00:49:28.353613Z" - } - }, + "execution_count": 448, + "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "defaultdict(Zeros (),\n", - " {'politics': 0.06389451550325113,\n", - " 'music': -0.04041254194187752,\n", - " 'finance': -0.040319730234734,\n", - " 'camping': -0.03581829597317823,\n", - " 'food': -0.037778771188204816,\n", - " 'health': -0.04029646665611086,\n", - " 'sports': -0.03661678982763635})" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "User Time of day politics sports music food finance health camping\n", + " Tom morning 0.5 -0.1 0.6 -0.0 -0.0 -0.1 -0.0\n", + " Tom afternoon 0.5 -0.1 0.6 -0.0 -0.0 -0.1 -0.0\n", + " Anna morning 0.4 -0.2 0.1 0.0 -0.0 -0.1 0.0\n", + " Anna afternoon 0.4 -0.2 0.1 0.0 -0.0 -0.1 0.0\n" + ] } ], "source": [ - "model.i_biases" + "print_preferences(model.predict_one)" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "The model is not as performant if we use a reward function where both users have different preferences." + "This model is doing better than random. However, when we take a look at the obtained preference scores, we can see that the model isn't able to distinguish between the two times of the day. That's expected because the model is not contextual. This explains why the model performs well roughly half of the time, and poorly the other half.\n", + "\n", + "We can force the simulation to only pick one time of the day. This is cheating, but it allows us to see how the model performs when it's not confused by the context." ] }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.355858Z", - "iopub.status.busy": "2023-09-02T00:49:28.355742Z", - "iopub.status.idle": "2023-09-02T00:49:28.470356Z", - "shell.execute_reply": "2023-09-02T00:49:28.469937Z" - } - }, + "execution_count": 478, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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fHx84OzsjOTkZLO79l65cgXPPfdckzzH2rVr4ezsjMjISHz++edW++zfvx/Dhw9vkue7lrOzMxYuXAidTme6902d06dPIz09HTqdrkHHqu9ePmvXrkVCQgI6deqEv/3tb6b2zp07Y/DgwUhISMAPP/xgaq+pqcFrr70GAHjqqafMjlVQUID09HQUFBQ0aEz16dChA0aNGoXMzEzTlWp1li9fjqKiIjz44IP1zi6VlJTg2WefRWRkpNnanK5du6KkpMR0BV5paSn279+Prl273tJ4ieyumW98SETXCAwMtHqn5bq7C0+bNs2sfciQIfXegXfatGkCgMjKyjK1vfDCCwKA6Nixo3j++efFzJkzhb+/vwgLCxP+/v4Wz93YOy0LIcTu3buFp6enACC6desmZs+eLRYvXixmz54tevbsaXr++tzKnZaFEKKyslL4+/sLpVIpMjMzLY57dT2uJzAwUHTs2FE89thj4sUXXxRz5swRffv2FQCEu7u7OHTokMU+qampws3NTajVajF16lTx0ksvie7duwsAIjIy0qJ/XX2t3c152rRppg9XV1fT57/uIy0tzax/Zmam8PHxEQDE2LFjxQsvvCCGDx8uAIjAwEBx8eLFel/rnDlzRLt27URpaalZe2lpqWjVqpXw8fER8+bNE7179xYymUwcPny4QTUkchQMPEQOxtaBp6amRrz55puiU6dOQqPRiHbt2okXXnhBlJaWWn3umwk8Qghx+fJl8frrr4sBAwYIDw8PoVQqhZeXlxg6dKh45513RFlZWb373mrgEUKIdevWCQBi6tSpFsdtaOBZvny5GDZsmPD39xcajUY4OzuLLl26iPnz54tz587Vu196erp45JFHhKenp9BoNKJnz55i/fr1wmg0WvS9XuABcN0Pa5+TnJwcMX36dOHn5ydUKpVo27atmDt3rsjLy6t3vAcOHBAymczs7TCudvjwYdG/f3+hVqtFcHBwvW8ZQuTIZEI04u17iYiIiG5DXMNDREREksfAQ0RERJLHwENERESS53CBZ9++fRg3bhz8/f0hk8mwbdu2G+6TmJiIu+++GxqNBh07djS9+SIRERER4ICBp7y8HL1798b69esb1D8rKwtjx47FsGHDkJKSgvnz5+Opp57Cjz/+aOOREhER0e3Coa/Skslk+OabbzBhwoR6+yxcuBA7duxAamqq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", + "image/png": "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f91aX4GIiIhsjM0FHgCIjY1FbGysyW0pKSlGn5VKJeLj4xEfH2+BkREREdHtyKbW8BARERGZAwMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUmeTQaeVatWITg4GHZ2doiMjMTevXtv2L+4uBgzZsyAr68vNBoNOnbsiE2bNllotERERHQjpy9X4lyldcegtO7p61u/fj3i4uKwevVqREZGYsWKFYiJiUFmZia8vLzq9a+ursbQoUPh5eWFb775Bv7+/sjNzYWrq6vlB09ERETQ6wUOnS3BliMFSDpSgMyCMnR1leNpK47J5gLP8uXLMW3aNEyZMgUAsHr1avz888/4+OOPMW/evHr9P/74YxQVFeH333+HSqUCAAQHB1tyyERERK1eRVUNth+/gF8y8rH1aAEqqnWGbQq5DAKAEMJq47OpwFNdXY39+/dj/vz5hja5XI7o6Gikpqaa3OeHH35AVFQUZsyYge+//x6enp544oknMHfuXCgUCpP7VFVVoaqqyvC5tLQUAKDVaqHValvwG8FwvJY+LhljnS2DdbYM1tlyWOvmKb2ixbbMC/j1SCF2nLiIqhq9YZujRoF7wjxwbxcv3BXigj92pqCmpgYymazFzt+UPzebCjwXL16ETqeDt7e3Ubu3tzeOHTtm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", "text/plain": [ "
" ] @@ -314,51 +305,27 @@ } ], "source": [ - "simulate(\n", - " 5_000,\n", - " reward_func=lambda user, item, context: (\n", - " item in {'music', 'politics'} if user == \"Tom\" else\n", - " item in {'food', 'sports'}\n", - " ),\n", - " model=model,\n", - " seed=42\n", - ")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A good recommender model should at the very least understand what kind of items each user prefers. One of the simplest and yet performant way to do this is Simon Funk's SGD method he developped for the Netflix challenge and wrote about [here](https://sifter.org/simon/journal/20061211.html). It models each user and each item as latent vectors. The dot product of these two vectors is the expected preference of the user for the item." + "model = reco.FunkMF(seed=10)\n", + "simulate(5_000, get_reward, model, seed=42, times_of_day=['morning'])" ] }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.472267Z", - "iopub.status.busy": "2023-09-02T00:49:28.472146Z", - "iopub.status.idle": "2023-09-02T00:49:28.623349Z", - "shell.execute_reply": "2023-09-02T00:49:28.623062Z" - } - }, + "execution_count": 457, + "metadata": {}, "outputs": [ { - "data": { - "image/png": "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IB4iIiKHwMBDREREksfAQ0RERJLHwENERESSx8BDREREksfAYwd8DA8REVHDYuAhIiIiyWPgISIiIslj4LEhGfggHiIiIkfAwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BjQzI+hoeIiMghMPAQERGR5DHwEBERkeQx8BAREZHkMfDYgWjoCRARETVyDDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw89sAH8RARETUoBh4iIiKSPAYeIiIikjwGHiIiIpI8Bh4bkskaegZEREQEMPAQERFRI8DAQ0RERJLHwENERESSx8BjB3wMDxERUcNyyMCzZs0ahISEwMnJCREREThw4MAN+69atQrt2rWDs7MzgoKC8OKLL6KiosJOsyUiIiJH53CB5+uvv0ZsbCzi4uJw+PBhdOvWDdHR0cjNzbXa/8svv8Qrr7yCuLg4nDhxAp9++im+/vprzJs3z84zJyIiIkflcIFn5cqVmDp1KqZMmYKOHTviww8/hIuLC9atW2e1/759+9C3b188/vjjCAkJwbBhwzBu3LibnhUiIiKixkPZ0BO4lk6nw6FDhzB37lxzm1wuR1RUFFJSUqzuc/fdd+N///sfDhw4gN69e+PMmTPYunUrJkyYUONxtFottFqt+XVRUREAQK/XQ6/X19O7AYwGo/n/63Ncqq6qvqyzbbHO9sE62w9rbR+2qnNdxnOowJOfnw+j0Qg/Pz+Ldj8/P6Snp1vd5/HHH0d+fj769esHIQQMBgOmTZt2w0taS5cuxcKFC6u1b9++HS4uLrf3Jq5xsRSoKnFCQkK9jUs1Y53tg3W2D9bZflhr+6jvOpeVldW6r0MFnluRnJyMJUuW4IMPPkBERAROnTqFGTNmYNGiRXj99det7jN37lzExsaaXxcVFSEoKAjDhg2Du7t7vc3txN/FWP575ZmpoUOHQqVS1dvYZEmv1yMhIYF1tjHW2T5YZ/thre3DVnWuukJTGw4VeHx8fKBQKJCTk2PRnpOTA39/f6v7vP7665gwYQKeeuopAECXLl1QWlqKp59+Gq+++irk8urLlDQaDTQaTbV2lUpVr38RSuXV8tb32GQd62wfrLN9sM72w1rbR33XuS5jOdSiZbVajV69eiEx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "User Time of day politics sports music food finance health camping\n", + " Tom morning 1.0 -0.2 0.0 0.0 0.0 -0.2 0.0\n", + " Anna morning -0.2 1.0 -0.0 -0.0 0.0 -0.0 0.0\n" + ] } ], "source": [ - "model = reco.FunkMF(seed=10)\n", - "simulate(5_000, get_reward, model, seed=42)" + "print_preferences(model.predict_one, times_of_day=['morning'])" ] }, { @@ -366,9 +333,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that this model learns what items each user enjoys very well. Of course, there are some caveats. In our simulation, we ask the model to recommend the item most likely to be preferred for each user. Indeed, we rank all the items and pick the item at the top of the list. We do this many times for only two users.\n", + "We can see that this model learns what items each user enjoys quite well. The performance does not reach 100% because there is still some exploration involved.\n", "\n", - "This is of course not realistic. Users will get fed up with recommendations if they're always shown the same item. It's important to include diversity into recommendations, and to let the model explore other options instead of always focusing on the item with the highest score. This is where evaluating recommender systems gets tricky: the reward function itself is difficult to model.\n", + "All of this is of course more complex in reality. Users will get fed up with recommendations if they're always shown the same item. It's important to include diversity into recommendations, and to let the model explore other options instead of always focusing on the item with the highest score. This is where evaluating recommender systems gets tricky: the reward function itself is difficult to model.\n", "\n", "We will keep ignoring these caveats in this notebook. Instead we will focus on a different concern: making recommendations when context is involved." ] @@ -386,80 +353,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We'll add some context by making it so that user preferences change depending on the time the day. Very simply, preferences might change from morning to afternoon. This is captured by the following reward function." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.625183Z", - "iopub.status.busy": "2023-09-02T00:49:28.625070Z", - "iopub.status.idle": "2023-09-02T00:49:28.638642Z", - "shell.execute_reply": "2023-09-02T00:49:28.638322Z" - } - }, - "outputs": [], - "source": [ - "times_of_day = ['morning', 'afternoon']\n", - "\n", - "def get_reward(user, item, context):\n", - " if user == 'Tom':\n", - " if context['time_of_day'] == 'morning':\n", - " return item == 'politics'\n", - " if context['time_of_day'] == 'afternoon':\n", - " return item == 'music'\n", - " if user == 'Anna':\n", - " if context['time_of_day'] == 'morning':\n", - " return item == 'sports'\n", - " if context['time_of_day'] == 'afternoon':\n", - " return item == 'politics'" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have to update our simulation function to generate a random context at each step. We also want our model to use it for recommending items as well as learning." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.640459Z", - "iopub.status.busy": "2023-09-02T00:49:28.640372Z", - "iopub.status.idle": "2023-09-02T00:49:28.653081Z", - "shell.execute_reply": "2023-09-02T00:49:28.652733Z" - } - }, - "outputs": [], - "source": [ - "def simulate(n, reward_func, model, seed):\n", - " \n", - " rng = random.Random(seed)\n", - " n_clicks = 0\n", - " ctr = []\n", - " \n", - " for i in range(n):\n", - " \n", - " user = rng.choice(users)\n", - " \n", - " # New: pass a context\n", - " context = {'time_of_day': rng.choice(times_of_day)}\n", - " item = model.rank(user, items, context)[0]\n", - " \n", - " clicked = reward_func(user, item, context)\n", - " n_clicks += clicked\n", - " ctr.append(n_clicks / (i + 1))\n", - " \n", - " # New: pass a context\n", - " model.learn_one(user, item, clicked, context)\n", - " \n", - " plot_ctr(ctr)" + "Let's now try to handle the context, by making it so that user preferences change depending on the time the day. In our toy problem, user preferences change between morning and afternoon." ] }, { @@ -467,85 +361,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Not all models are capable of taking into account context. For instance, the `FunkMF` model only models users and items. It completely ignores the context, even when we provide one. All recommender models inherit from the base `Recommender` class. They also have a property which indicates whether or not they are able to handle context:" + "Before delving into recsys models that can handle context, a simple hack is to append the time of day to the user's name. This effectively results in new users which our model can distinguish between. We could apply this trick during the simulation, but we can also override the behavior of the `predict_one` and `learn_one` and methods." ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.655075Z", - "iopub.status.busy": "2023-09-02T00:49:28.654960Z", - "iopub.status.idle": "2023-09-02T00:49:28.667223Z", - "shell.execute_reply": "2023-09-02T00:49:28.666879Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model = reco.FunkMF(seed=10)\n", - "model.is_contextual" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's see well it performs." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.668994Z", - "iopub.status.busy": "2023-09-02T00:49:28.668865Z", - "iopub.status.idle": "2023-09-02T00:49:28.813901Z", - "shell.execute_reply": "2023-09-02T00:49:28.813617Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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IB4iIiKHwMBDREREksfAQ0RERJLHwENERESSx8BDREREksfAYwd8DA8REVHDYuAhIiIiyWPgISIiIslj4LEhGfggHiIiIkfAwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BjQzI+hoeIiMghMPAQERGR5DHwEBERkeQx8BAREZHkMfDYgWjoCRARETVyDDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw89sAH8RARETUoBh4iIiKSPAYeIiIikjwGHiIiIpI8Bh4bkskaegZEREQEMPAQERFRI8DAQ0RERJLHwENERESSx8BjB3wMDxERUcNyyMCzZs0ahISEwMnJCREREThw4MAN+69atQrt2rWDs7MzgoKC8OKLL6KiosJOsyUiIiJH53CB5+uvv0ZsbCzi4uJw+PBhdOvWDdHR0cjNzbXa/8svv8Qrr7yCuLg4nDhxAp9++im+/vprzJs3z84zJyIiIkflcIFn5cqVmDp1KqZMmYKOHTviww8/hIuLC9atW2e1/759+9C3b188/vjjCAkJwbBhwzBu3LibnhUiIiKixkPZ0BO4lk6nw6FDhzB37lxzm1wuR1RUFFJSUqzuc/fdd+N///sfDhw4gN69e+PMmTPYunUrJkyYUONxtFottFqt+XVRUREAQK/XQ6/X19O7AYwGo/n/63Ncqq6qvqyzbbHO9sE62w9rbR+2qnNdxnOowJOfnw+j0Qg/Pz+Ldj8/P6Snp1vd5/HHH0d+fj769esHIQQMBgOmTZt2w0taS5cuxcKFC6u1b9++HS4uLrf3Jq5xsRSoKnFCQkK9jUs1Y53tg3W2D9bZflhr+6jvOpeVldW6r0MFnluRnJyMJUuW4IMPPkBERAROnTqFGTNmYNGiRXj99det7jN37lzExsaaXxcVFSEoKAjDhg2Du7t7vc3txN/FWP575ZmpoUOHQqVS1dvYZEmv1yMhIYF1tjHW2T5YZ/thre3DVnWuukJTGw4VeHx8fKBQKJCTk2PRnpOTA39/f6v7vP7665gwYQKeeuopAECXLl1QWlqKp59+Gq+++irk8urLlDQaDTQaTbV2lUpVr38RSuXV8tb32GQd62wfrLN9sM72w1rbR33XuS5jOdSiZbVajV69eiExMdHcZjKZkJiYiMjISKv7lJWVVQs1CoUCACAEn4BDREREDnaGBwBiY2MxadIkhIeHo3fv3li1ahVKS0sxZcoUAMDEiRMRGBiIpUuXAgDuv/9+rFy5Ej169DBf0nr99ddx//33m4MPERERNW4OF3jGjh2LvLw8zJ8/H9nZ2ejevTvi4+PNC5nPnTtncUbntddeg0wmw2uvvYaLFy+iWbNmuP/++/HGG2801FsgIiIiB+NwgQcAYmJiEBMTY3VbcnKyxWulUom4uDjExcXZYWZERER0J3KoNTxSI5M19AyIiIgIYOAhIiKiRoCBh4iIiCSPgccOeHM8ERFRw2LgISIiIslj4CEiIiLJY+AhIiIiyWPgISIiIslj4LEhPoeHiIjIMTDwEBERkeQx8NhBsV6G/WcvN/Q0iIiIGi0GHjv517qDDT0FIiKiRouBh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgceGZOCDeIiIiBwBAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgOPDcn4GB4iIiKHwMBDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAY0N8DA8REZFjYOAhIiIiyWPgISIiIslj4CEiIiLJY+AhIiIiyWPgsSHR0BMgIiIiAAw8RERE1Agw8BAREZHkMfAQERGR5DHw2JDgIh4iIiKHwMBjR2kXCxt6CkRERI0SA48Nievu0yqq0DfQTIiIiBo3Bh4iIiKSPAYeG+IaHiIiIsfAwGNHMn5+OhERUYNg4LGj69f0EBERkX0w8NgRL3ERERE1DAYeG7o+4Pxw5GLDTISIiKiRY+Cxo98yLzf0FIiIiBolBh4bun7NjruTqoFmQkRE1Lgx8NiRnDdpERERNQgGHhu6fg0P1ywTERE1DAYeO+JdWkRERA2DgceOjl0sRDE/T4uIiMjuGHjsbBNvTSciIrI7Bh57k3HlMhERkb0x8NgZ4w4REZH9MfDYkLVFyjzBQ0REZH8MPHbGT0wnIiKyPwYeG7L26eg8w0NERGR/DDx2xrxDRERkfw4ZeNasWYOQkBA4OTkhIiICBw4cuGH/goICTJ8+Hc2bN4dGo0Hbtm2xdetWO822bniGh4iIyP6UDT2B63399deIjY3Fhx9+iIiICKxatQrR0dHIyMiAr69vtf46nQ5Dhw6Fr68vvv32WwQGBiIrKwuenp72n3wtcA0PERGR/Tlc4Fm5ciWmTp2KKVOmAAA+/PBDbNmyBevWrcMrr7xSrf+6detw+fJl7Nu3DypV5aeRh4SE2HPKNbL6URLMO0RERHbnUIFHp9Ph0KFDmDt3rrlNLpcjKioKKSkpVvfZvHkzIiMjMX36dPz4449o1qwZHn/8ccyZMwcKhcLqPlqtFlqt1vy6qKgIAKDX66HX199HPxgMhmptJqOxXo9BlapqytraFutsH6yz/bDW9mGrOtdlPIcKPPn5+TAajfDz87No9/PzQ3p6utV9zpw5g507d2L8+PHYunUrTp06heeeew56vR5xcXFW91m6dCkWLlxYrX379u1wcXG5/Tfyj6xi4PoSH/v9dzhnH623Y5ClhISEhp5Co8A62wfrbD+stX3Ud53Lyspq3dehAs+tMJlM8PX1xUcffQSFQoFevXrh4sWLeOutt2oMPHPnzkVsbKz5dVFREYKCgjBs2DC4u7vX29yOXijEyrT9Fm3du3fDiO4B9XYMqqTX65GQkIChQ4eaL21S/WOd7YN1th/W2j5sVeeqKzS14VCBx8fHBwqFAjk5ORbtOTk58Pf3t7pP8+bNoVKpLC5fdejQAdnZ2dDpdFCr1dX20Wg00Gg01dpVKlW9/kVYu6Qmlyv4RWVD9f13SNaxzvbBOtsPa20f9V3nuozlULelq9Vq9OrVC4mJieY2k8mExMREREZGWt2nb9++OHXqFEwmk7nt5MmTaN68udWw09CMVlcyExERkS05VOABgNjYWHz88cf4/PPPceLECTz77LMoLS0137U1ceJEi0XNzz77LC5fvowZM2bg5MmT2LJlC5YsWYLp06c31Fu4IZOJgYeIiMjeHOqSFgCMHTsWeXl5mD9/PrKzs9G9e3fEx8ebFzKfO3cOcvnVnBYUFISff/4ZL774Irp27YrAwEDMmDEDc+bMaai3cEM8w0NERGR/Dhd4ACAmJgYxMTFWtyUnJ1dri4yMxK+//mrjWdWdtWjz331ZGB8RbPe5EBERNWYOd0lL6jJyinE6r6Shp0FERNSoMPDYUE1Xr35M/cu+EyEiImrkGHgawHuJfzb0FIiIiBoVBh6b4gJlIiIiR8DAQ0RERJLHwENERESSx8DTAHq09GzoKRARETUqDDw2VNNdWr1DvKy2Hz1fgMLy2n/UPREREdWOQz54UOpMVpLQ7pN5mLjuAADg7NIRkMlk9p4WERGRZPEMjw3VdI+WXF49zGw+evXZPIu3nLg6Bj+KgoiI6LYx8DgAIQS+PXTB/PrTX87i20MX8FvmZfRavAMbDpxrwNkRERHd+XhJy4ZqOjljNFpu2JR6sVqfl745av7/V74/hsd6t6zXuRERETUmPMNjJ0tGd8LQjpWf+P7F/sozNiaTgMFowurEUw05NSIiIsnjGR47eaRXIOZtOg4AKNcbIYTAmLX7UFyuRxs/V5zJL73h/nqjCSoF8ykREdGtsPlP0OTkZFsf4o6UdakMR88X4Ex+KX4+nnPT/ldKdXaYFRERkTTZLPDs3bsXQ4YMwZAhQ2x1CId3ozuszl0uq9NYlxh4iIiIblmdL2np9Xp8+eWXOHToEJRKJfr164cHH3zQvD01NRWvvPIKEhISIIRAeHh4vU5YKsr1xjr1v1TCwENERHSr6nSGp7i4GL1798YTTzyB999/H6tWrcIjjzyCRx55BAAwf/58hIeHY/v27ejRowc2b96MAwcO2GTid4Lrz+9MG9ja/P/7z1y2uk/VwuZ1k8Pxrz5X78xamZBR7/MjIiJqLOp0hufNN9/E0aNH0a1bN4wfPx4A8L///Q/ff/89HnvsMWzcuBFhYWF4++238cADD9hkwneyaz9Da93es9W2J84aiNbNXM2v72nvh//9WnlH1+FzBbaeHhERkWTVKfD8+OOPCA4Oxv79+6FWqwEAMTExaN++Pb755hsMHz4c33//PTQajU0me6e5fgnPzZ6afG3YsebClTK0aOpyu9MiIiJqdOp0SevMmTMYMWKEOewAgJOTE0aOHAkAePvttxl2blH3IE+r7bOGtjX/f783k/D2zxmY8Ol+bPztvJ1mRkREdOerU+ApLy+Hn59ftXZfX18AQLt27epnVhKllNdc7lVju1ttf35IG4vX7yedwp4/8/Hyd78DAE7lFuOD5FM4dqEQBqMJCzYfx4rtXO9DRER0rXp98KD8Bj/QCRjYrlmN25q51f3M2Ee7T2PJ1nQAwHJYhpypA1rB3UlV5zGJiIikqM6BJy0tDRs3bqzWBgDffPON1XUqjz766C1O784mrrtPS6WQo0ugB45dLKzW11mlqHGcDU/3wWMf/VqtvSrsWNP/zSQcjRtWh9kSSU+J1oBl205gVPdA3BXi1dDTuaMZjCZUGEw4nVsCg0nAVaOEzmCCWilHgKcT3JxUEEKgqMIAdyclZDJZnY9hNAmU6gwwmQTcnFTQGUw4cv4Kfjt7BQXlOng6qxHg6QQXtRL+HhoEerqgTGfAuctl0P4zFy8XNfzcneDv4VRtfCEE9EYBtZK/nDdGdQ483333Hb777juLtqqQ89hjj1Vrl8lkjTbwWNOzpafVwCOX1/zNIcz3xouZrSks12Poyl0ID/FCdmE53hjTBQGezjfd78KVMrhpVPBwqfzm1e71eOgMJsyMaoN7O/vj0Q9TMC6iJV65t/0tfUMj6cgv0eJ/v2YhqkPlZe79Zy/jvq7N4d1EjZM5Jfh8Xya+PngeUR38sONE5dPE/9WnJXqHekNvMGHWN0fRO8QLU/qG4O4wHzRRK6BUyLH7ZB5WbM/A0QuVXyefTAxH1xYeMAoBf3enav/udAYT9p7Ox9TPD8Jgsn5jQNXdjjVp7+8GryZqBHg641KJFm5OKrRq1gReTdRo5qpB5qUypGcXwWgS6B3qBSelAs5qBdr6ueFSiRa+7hrkFVc+Kyu7qBzNPZzRK7gpTuWWIK9Yi7tbe0N5zUfDCCFgNAmLtpsxGE2Qy2QW3yv0RhMU17WV6yqf8aUzmpCUnouMnGJkF1ZAazDCSaVAZCtvRIR641ReMS5cKYerRolg7yboHOgOncGEo+cL8VdBOfaezsep3BLkFFUgv47PAVPKZfB0UaGtnxvCfF2hNwqcu1wKncEEhVwGkwAKy/QoKNfBRV0ZnHKKKmr8+6srmQwID26KHi2bokxnwPnL5bhSpkNesRZ/F1ZAJgNCfZqgU4AH9AYjjmcq8MGZfegY4IFmbhr4ummgUsjhpJJDKZfDYDKhuMIAjUoBF5UC3q5q+LhqEODpDBe1Ak43+IXVmjKdAXKZDBql/La+j5pMAhUGo/kX5lO5JfBwUUEpl+PvwnIUlRsQ5utq9QqCySQgk6FRfR+XiZvdOnSNBQsW3FJx4uLi6ryPPRUVFcHDwwOFhYVwd3evt3H3ncrH45/sBwD8uWgYVCoVFmw+jvX7Mqv1zVw2ssZxTCaBVvO2AgA6NnfHH38X3dJ8nuoXCheNEucvl2HB/Z3g4WJ5yev85TL0X54EADi5eDh+OHIBc747ZnWsF+4JQ+wwx1mzpdfrsXXrVowYMQIqlXQu5RmMJnyQfBpt/dwwtKMfFDcIxtcTQkAI4D+7z+DN+KtnAzdN72teJK81GFGhN8FVo4RCLjP/8nL917nJJCCXy6DT6fD6+nh8faZu3+AbO4VcBqOVH+ZNXVTo0NwdLmoFhACaaJRoolGioFSLtMxsKJ2aIL9EB7VSjhKtAdp/AkNLLxcUVxiQX6KFXAYENnVGE7USZTojzl8pq3aHaH2SyQAXlQImURlsyvRGq++tvqgVcnRp4QF/DycoZDIcu1gIrd6IS6U6aA0mAECwd+Xdq2U6Iyp0RhRrDTabz/UUchlcNUq4OyvRwtMFIT5N0Cu4KS6VaJGRUwytwQRXtRIyGXDhSjnO5JXgr8IKAICbkxLDOvpDZzThVG4JDEYTOjR3h9ZgxOVSHQwmgYIyPQrKdFDI5VDIAR9XDYwmgXK9EblFWpTrjXDVKGEwmVChN1mdo7+7EzycK0O81mBC+t9F+LuoAs1cNfB21cDNSYlynRECAiYT4OGsgqeLCm5Oyn+Or0ex1oDLpVoYjAJt/Fzh1USN5h7OCPZ2ga+bExRyGcp0BuiNAt2DPKBWKODZRIX8Yi0q9CbIYUL6gV0YObJ+v0fX5ed3nQKPVNkz8HR4Pd7qU5ZvFHgA4I+/ilBhMKJHkCf0RoG2r20zb/N10yC3WFunuQ1o2wz/faI3gMofjE+s/w1JGXl1GuNmc7YnRw88JpPAlTIdvF1rXqtV9aVYoTfhhyMXMe8H62EzspU3XNQKJKbn2mSudzqlXAaDSSDIyxkzhrTFqO4BeGPLCau/aFzLz12D1s1ckV+ixem8UvMPcQ9nFboFeaKllzPKtEakZxfDWa1AQZkOp/OufuivVxM1ynSVocRRvqu6apTo0dITHZu7w6uJGnnFWuw4kYPMS2Vo7uGEAE9nlP8TkoorKkOCVxM1/N2d0L65Gwa2bYYAT2eoFXJ4uqjgqlHC00VtEbyFEEi7WPn9ycdVg6YuKuQVa5FdVIFDWVdwJq8UTTRKhPpU/mAs1RmglMvgpFLAx1WDwnI95DIZmrlp0MxVAw8XFeQyILuwAm5OKni7qmv84OQKvREyGaBRWgbwU7nF2P5HDk7llsBNo4SvuxNCfZqgiUaJMF9XlGkNOJFdjPOXy2A0GpGXmYFOXboiPacUZToDcou10BlMMP7zdevmpIKTSo4KvQnFFXpcKdOjpMJQ5yfm25NaKYe7kwr5JXX72WBL/s4Cu+cOs7jT+3bV5ed3nS5pPfHEExg9ejQfKlhL1r7n3eoXSMeAq3+RaqXlb98HXo2CEALzfjiGnCItdtbiB+Huk3nQG03YePA8Xv0h7YZ9e4d44UBm9SdD//T7X7iva0At30HjU1Shh0ImQ6e4n+t13JQzl+p1vFsV6OmMHbEDkVNUAZ3RhNbNXHH0QgHW783EmB6BGNi2GeRyGQrL9fBwrgyhOoMJpVoDLpXqEObrCpNJoKhCj5UJJ5F1qQy7TuZh7fieGN6lufk4h7KuQKOUQ2swYfJnB8w/mKtEhHph0ejOaOvnVuNcFzzQCQse6GSTOgghoDWYLC5P6AwmnLtcihZNXWA0CaRnF8FZVflbfuWZtMr/nswpxl8F5SjRGqBSyM3/H+TphCvn/0REeA/4uDtDqzfB3VkJZ5USZToD8v75BaetvxtKtQaUao0ortDDaBJo39wdGqXcvJ7l+svlr93XEUaTsAgtRpNA1qVSqJXyOj/rSyaToUsLD4s2Txc12vi5oX+bmm/UuBm3Wtx0UdOlpDBfN4T51vzvAQDa/PPvRa/XY2tpOkb0DKzTL0tCCJTpjCgo1yO/WItSrQF/5pYgPbsY6dlF8HXTINTHFU3UChRrDdDqjWjVzBWdAtwR2NQZGqUCf/xVhB0ncuCkUqBnS09oDSaczCmGDEALLxdolHJ4N9FApZBBZ6w8u1dUboBCLoOzSgFXJyVaerng3OUyqBVytGrWBAaTgEkI800ruUUVOJlTeWny3OUyuDur0N7fDX7uTjibXwqtwYjiCgNcNUoo5TJoDaZ/zjDpUVShh6tGiWZuGshlMvi5a+CsUuBEdjGKyvW4cKUMF66UI79EB6PJBI1SAaNJWFyFUClkcHNSobhCj+Yupga9hFanwLN+/XqEhIQw8NSzL6dG1HmfNx/qgjnfHcMnEys/q0wmk2Hpg10BVH7zGvPBXrTzc8Nbj3SzuCR2rTavbqvWZs3GaZEIeWULAMuzSTFfHsGwjv4OtQBQCIH4tL8hk1X+oH2gWwCWbUtHl0APPNSrhbmf0STw3aELeKB7AJxUCovLebFD2+KFfx4HUFiux3NfHMLeU5Yhw9NFBR9XDUK8m+Cp/qHoEuiBJprKL6eF/3ccn+3NrJf3097fDR9NCIfeZMKYNXtRVFH3U/VPD2iFeSM6AKisz6KfTpif9N26WRMsfKAznv3iEIorDGjv74b07GKr80jPLkbXFu4Y43sZ/xpz9UxaiE8Tc7+eLZuiZ8umFvtWhR2g8rdOtVKNpk0qf8OTy2XwdFHj36M61zj/XsFXxzu2ILqub9/mZDJZtR+8aqXc4gdur2DrC6ZrWp9XecbyJIZ39rfJGcvrL40q5DK0usmDT8mSTCYzX4IM/Gd95N1hPnUao18bH/RrU7d9rPFqUvMZE193J/i6V1/ADdza+lAACL/JDQBVZ0dLKgxwUsuhUSpQUq7FDz/F39Lx6kudLmnJ5XIsWLAA8+fPt+Wc7M5Wl7RSTl/CuI8r766quqRVFRyqPH9PGGbZYS3M0fMFePLz3/Bkv1YW6zmu17G5O14YEgaVQo653x/Dl1MjEObrhnOXyrB+XyZeHdkBX+zPwvwfj5v3GRsehDcf7mrz92BNhd6I9q837BeRLbw2sgOe6t/K6rbiCj3KdEb41fBNzJYc/dKhVLDO9sNa24et6myzS1pUN71DvRAe7All+dXLQeMjWuKL/VfvGHmyX6hd5tItyBMHXxsKAFYDz8IHOmHS3SEWbQdevfqQyZbeLph/f0cAwIQ+wRaB5+uD5xHRyguuGiXySrR49Yc0fDMtst5vAzaZBKJX7cafuSUY3tkfKx/tjg7zHT/szBvRHk8PaH3zjrXk5qSq1el+IiK6ioHHhhRyGb56qje2br16Oal7kKc58Cx/uCs8Xepv8VZt/fnGcMz/8TiKyvVY8mAXi0sOtSGTybDm8Z6Y/uVhc1vsxqMWfR75MKXeFjXft3oP0i5a3pm2LS0b29JqDjtjw4OgM1Yu/g3zrbyj4MBZ659QX+W7Z++Gp4sKQ1bssmhfPLoz/tUnGHqjCVdKdfB0USPtr0J0bO6OMp0R/03JxKodf1rsk7YwGq4afnkRETmKOn9H3rRpEzIzM2vdXyaT4dNPP63rYSTLEda7qBRyLH2wy22NMbJrc4zsOhL93tyJC1fKrfYJeWUL/nxjeI13WNyMzmBCyplL1cLO9dw0Shx+7R688+U2jIkegDb+nuZt79TwkR03kjp/KDT/PGflWiqF3HwtvGqdipNKgZlRbTEzqm21cYiIyHHUOfCkpqYiNTW11v0ZeCzd3frqAjUpPO5pR+xAPLH+N+w7bf3OoTavbjOf6TGZBP6bkokwXzf4uWsw9J3dFpfSLpfq0HNRwk2PueflweYFxgDw+4JhMBgMaOcpEOLd5AZ71k5DnHUjIiLbqnPgmTx5MiZNmmSLuTQKt/KZWY7MSaXAl1P7WLTlFWtx1xs7zK+vX6h9rbjNxxG3+XiN26u8fl9HnLtUigUPdIJMJsPpJSOw91Q++ob5NKonhRIR0a2pc+AJCQnBwIEDbTGXRkeqP6ibuWmQvujeert7anZ0u2qLuxVyGQa0vfVnfBARUePCVZUNILKVNw5mXcaQ9r4NPRWbcVIpsG5yOJ5Yf7BO+02+OwQLHugEwz8P2ZJqKCQiIvti4GkAXzwVAZ3RVOcPnLvT3NPeD2kLo7Em6RTGhgdhy7G/8dhdQRYfr/Bb5mX4uTnhle9/R8w9YeY1TnX5UEUiIqKbYeBpAHK5DE5yaYedKq4aJebc2x4AMH1wWLXtVc/quX4dEBERUX2q06/Rn332GRQKBebNmwe9Xl9jP51Oh3nz5mHZsmW3PUEiIiKi21WnwBMYGIj58+fD29v7ho+GVqvV8PHxwauvvoqkpKQa+xERERHZQ50Cz3//+180bdoUMTExN+07ffp0eHl54bPPPrvlyRERERHVhzoFnn379iEqKgoazc2fJaPRaBAVFYW9e/fe8uSIiIiI6kOdAs9ff/2FVq2sf4KzNaGhofj777/rPCkiIiKi+lSnwCOXy2+4WPl6er0ecjlvLyYiIqKGVac0EhAQgLS0tFr3T0tLQ2BgYJ0nRURERFSf6hR4+vfvj507d9bq09IzMzOxc+dODBgw4FbnRkRERFQv6hR4pk+fDr1ej4cffhj5+fk19rt06RIeeeQRGAwGPPvss7c9SSIiIqLbUacnLffs2RMzZ87EqlWr0LFjR0ybNg2DBw9GixYtAAAXL15EYmIiPvroI+Tl5SE2NhY9e/a0ycSJiIiIaqvOHy2xYsUKODk54a233sIbb7yBN954w2K7EAIKhQJz587F4sWL622iRERERLeqzoFHJpNhyZIlePLJJ/HZZ59h3759yM7OBgD4+/ujb9++mDx5Mlq3bl3vkyUiIiK6Fbf84aGtW7fmGRwiIiK6I/AhOURERCR5DDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQw8REREJHkMPERERCR5DDxEREQkeQ4beNasWYOQkBA4OTkhIiICBw4cqNV+GzZsgEwmw+jRo207QSIiIrpjOGTg+frrrxEbG4u4uDgcPnwY3bp1Q3R0NHJzc2+4X2ZmJl566SX079/fTjMlIiKiO4FDBp6VK1di6tSpmDJlCjp27IgPP/wQLi4uWLduXY37GI1GjB8/HgsXLkSrVq3sOFsiIiJydMqGnsD1dDodDh06hLlz55rb5HI5oqKikJKSUuN+//73v+Hr64snn3wSe/bsueExtFottFqt+XVRUREAQK/XQ6/X3+Y7sFQ1Xn2PS5ZYZ/tgne2DdbYf1to+bFXnuozncIEnPz8fRqMRfn5+Fu1+fn5IT0+3us8vv/yCTz/9FKmpqbU6xtKlS7Fw4cJq7du3b4eLi0ud51wbCQkJNhmXLLHO9sE62wfrbD+stX3Ud53Lyspq3dfhAk9dFRcXY8KECfj444/h4+NTq33mzp2L2NhY8+uioiIEBQVh2LBhcHd3r9f56fV6JCQkYOjQoVCpVPU6Nl3FOtsH62wfrLP9sNb2Yas6V12hqQ2HCzw+Pj5QKBTIycmxaM/JyYG/v3+1/qdPn0ZmZibuv/9+c5vJZAIAKJVKZGRkoHXr1hb7aDQaaDSaamOpVCqb/YO35dh0FetsH6yzfbDO9sNa20d917kuYzncomW1Wo1evXohMTHR3GYymZCYmIjIyMhq/du3b49jx44hNTXV/OeBBx7A4MGDkZqaiqCgIHtOn4iIiByQw53hAYDY2FhMmjQJ4eHh6N27N1atWoXS0lJMmTIFADBx4kQEBgZi6dKlcHJyQufOnS329/T0BIBq7URERNQ4OWTgGTt2LPLy8jB//nxkZ2eje/fuiI+PNy9kPnfuHORyhzs5RURERA7KIQMPAMTExCAmJsbqtuTk5Bvuu379+vqfEBEREd2xeJqEiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkj4GHiIiIJI+Bh4iIiCSPgYeIiIgkz2EDz5o1axASEgInJydERETgwIEDNfb9+OOP0b9/fzRt2hRNmzZFVFTUDfsTERFR4+KQgefrr79GbGws4uLicPjwYXTr1g3R0dHIzc212j85ORnjxo1DUlISUlJSEBQUhGHDhuHixYt2njkRERE5IocMPCtXrsTUqVMxZcoUdOzYER9++CFcXFywbt06q/2/+OILPPfcc+jevTvat2+PTz75BCaTCYmJiXaeORERETkiZUNP4Ho6nQ6HDh3C3LlzzW1yuRxRUVFISUmp1RhlZWXQ6/Xw8vKyul2r1UKr1ZpfFxUVAQD0ej30ev1tzL66qvHqe1yyxDrbB+tsH6yz/bDW9mGrOtdlPIcLPPn5+TAajfDz87No9/PzQ3p6eq3GmDNnDgICAhAVFWV1+9KlS7Fw4cJq7du3b4eLi0vdJ10LCQkJNhmXLLHO9sE62wfrbD+stX3Ud53Lyspq3dfhAs/tWrZsGTZs2IDk5GQ4OTlZ7TN37lzExsaaXxcVFZnX/bi7u9frfPR6PRISEjB06FCoVKp6HZuuYp3tg3W2D9bZflhr+7BVnauu0NSGwwUeHx8fKBQK5OTkWLTn5OTA39//hvu+/fbbWLZsGXbs2IGuXbvW2E+j0UCj0VRrV6lUNvsHb8ux6SrW2T5YZ/tgne2HtbaP+q5zXcZyuEXLarUavXr1slhwXLUAOTIyssb9li9fjkWLFiE+Ph7h4eH2mCoRERHdIRzuDA8AxMbGYtKkSQgPD0fv3r2xatUqlJaWYsqUKQCAiRMnIjAwEEuXLgUAvPnmm5g/fz6+/PJLhISEIDs7GwDg6uoKV1fXBnsfRERE5BgcMvCMHTsWeXl5mD9/PrKzs9G9e3fEx8ebFzKfO3cOcvnVk1Nr166FTqfDww8/bDFOXFwcFixYYM+pExERkQNyyMADADExMYiJibG6LTk52eJ1Zmam7SdEREREdyyHW8NDREREVN8YeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyGHiIiIhI8hh4iIiISPIYeIiIiEjyHDbwrFmzBiEhIXByckJERAQOHDhww/7ffPMN2rdvDycnJ3Tp0gVbt26100yJiIjI0Tlk4Pn6668RGxuLuLg4HD58GN26dUN0dDRyc3Ot9t+3bx/GjRuHJ598EkeOHMHo0aMxevRopKWl2XnmRERE5IgcMvCsXLkSU6dOxZQpU9CxY0d8+OGHcHFxwbp166z2f/fdd3Hvvfdi9uzZ6NChAxYtWoSePXvi/ffft/PMiYiIyBE5XODR6XQ4dOgQoqKizG1yuRxRUVFISUmxuk9KSopFfwCIjo6usT8RERE1LsqGnsD18vPzYTQa4efnZ9Hu5+eH9PR0q/tkZ2db7Z+dnW21v1arhVarNb8uLCwEAFy+fBl6vf52pl+NXq9HWVkZLl26BJVKVa9j01Wss32wzvbBOtsPa20ftqpzcXExAEAIcdO+Dhd47GHp0qVYuHBhtfbQ0NAGmA0RERHdjuLiYnh4eNywj8MFHh8fHygUCuTk5Fi05+TkwN/f3+o+/v7+deo/d+5cxMbGml+bTCZcvnwZ3t7ekMlkt/kOLBUVFSEoKAjnz5+Hu7t7vY5NV7HO9sE62wfrbD+stX3Yqs5CCBQXFyMgIOCmfR0u8KjVavTq1QuJiYkYPXo0gMpAkpiYiJiYGKv7REZGIjExETNnzjS3JSQkIDIy0mp/jUYDjUZj0ebp6Vkf06+Ru7s7v5jsgHW2D9bZPlhn+2Gt7cMWdb7ZmZ0qDhd4ACA2NhaTJk1CeHg4evfujVWrVqG0tBRTpkwBAEycOBGBgYFYunQpAGDGjBkYOHAgVqxYgZEjR2LDhg04ePAgPvroo4Z8G0REROQgHDLwjB07Fnl5eZg/fz6ys7PRvXt3xMfHmxcmnzt3DnL51RvM7r77bnz55Zd47bXXMG/ePLRp0wabNm1C586dG+otEBERkQNxyMADADExMTVewkpOTq7W9sgjj+CRRx6x8azqTqPRIC4urtolNKpfrLN9sM72wTrbD2ttH45QZ5mozb1cRERERHcwh3vwIBEREVF9Y+AhIiIiyWPgISIiIslj4CEiIiLJY+CxoTVr1iAkJAROTk6IiIjAgQMHGnpKDm337t24//77ERAQAJlMhk2bNllsF0Jg/vz5aN68OZydnREVFYU///zTos/ly5cxfvx4uLu7w9PTE08++SRKSkos+vz+++/o378/nJycEBQUhOXLl9v6rTmUpUuX4q677oKbmxt8fX0xevRoZGRkWPSpqKjA9OnT4e3tDVdXVzz00EPVnmZ+7tw5jBw5Ei4uLvD19cXs2bNhMBgs+iQnJ6Nnz57QaDQICwvD+vXrbf32HMbatWvRtWtX84PWIiMjsW3bNvN21tg2li1bBplMZvEgWtb69i1YsAAymcziT/v27c3b74gaC7KJDRs2CLVaLdatWyeOHz8upk6dKjw9PUVOTk5DT81hbd26Vbz66qvi+++/FwDEDz/8YLF92bJlwsPDQ2zatEkcPXpUPPDAAyI0NFSUl5eb+9x7772iW7du4tdffxV79uwRYWFhYty4cebthYWFws/PT4wfP16kpaWJr776Sjg7O4v//Oc/9nqbDS46Olp89tlnIi0tTaSmpooRI0aIli1bipKSEnOfadOmiaCgIJGYmCgOHjwo+vTpI+6++27zdoPBIDp37iyioqLEkSNHxNatW4WPj4+YO3euuc+ZM2eEi4uLiI2NFX/88YdYvXq1UCgUIj4+3q7vt6Fs3rxZbNmyRZw8eVJkZGSIefPmCZVKJdLS0oQQrLEtHDhwQISEhIiuXbuKGTNmmNtZ69sXFxcnOnXqJP7++2/zn7y8PPP2O6HGDDw20rt3bzF9+nTza6PRKAICAsTSpUsbcFZ3jusDj8lkEv7+/uKtt94ytxUUFAiNRiO++uorIYQQf/zxhwAgfvvtN3Ofbdu2CZlMJi5evCiEEOKDDz4QTZs2FVqt1txnzpw5ol27djZ+R44rNzdXABC7du0SQlTWVaVSiW+++cbc58SJEwKASElJEUJUhlO5XC6ys7PNfdauXSvc3d3NtX355ZdFp06dLI41duxYER0dbeu35LCaNm0qPvnkE9bYBoqLi0WbNm1EQkKCGDhwoDnwsNb1Iy4uTnTr1s3qtjulxrykZQM6nQ6HDh1CVFSUuU0ulyMqKgopKSkNOLM719mzZ5GdnW1RUw8PD0RERJhrmpKSAk9PT4SHh5v7REVFQS6XY//+/eY+AwYMgFqtNveJjo5GRkYGrly5Yqd341gKCwsBAF5eXgCAQ4cOQa/XW9S6ffv2aNmypUWtu3TpYn76OVBZx6KiIhw/ftzc59oxqvo0xq8Bo9GIDRs2oLS0FJGRkayxDUyfPh0jR46sVg/Wuv78+eefCAgIQKtWrTB+/HicO3cOwJ1TYwYeG8jPz4fRaLT4iwUAPz8/ZGdnN9Cs7mxVdbtRTbOzs+Hr62uxXalUwsvLy6KPtTGuPUZjYjKZMHPmTPTt29f8USzZ2dlQq9XVPlD3+lrfrI419SkqKkJ5ebkt3o7DOXbsGFxdXaHRaDBt2jT88MMP6NixI2tczzZs2IDDhw+bP1/xWqx1/YiIiMD69esRHx+PtWvX4uzZs+jfvz+Ki4vvmBo77EdLEJHtTZ8+HWlpafjll18aeiqS1K5dO6SmpqKwsBDffvstJk2ahF27djX0tCTl/PnzmDFjBhISEuDk5NTQ05Gs4cOHm/+/a9euiIiIQHBwMDZu3AhnZ+cGnFnt8QyPDfj4+EChUFRboZ6TkwN/f/8GmtWdrapuN6qpv78/cnNzLbYbDAZcvnzZoo+1Ma49RmMRExODn376CUlJSWjRooW53d/fHzqdDgUFBRb9r6/1zepYUx93d/c75hvk7VKr1QgLC0OvXr2wdOlSdOvWDe+++y5rXI8OHTqE3Nxc9OzZE0qlEkqlErt27cJ7770HpVIJPz8/1toGPD090bZtW5w6deqO+ffMwGMDarUavXr1QmJiornNZDIhMTERkZGRDTizO1doaCj8/f0talpUVIT9+/ebaxoZGYmCggIcOnTI3Gfnzp0wmUyIiIgw99m9ezf0er25T0JCAtq1a4emTZva6d00LCEEYmJi8MMPP2Dnzp0IDQ212N6rVy+oVCqLWmdkZODcuXMWtT527JhFwExISIC7uzs6duxo7nPtGFV9GvPXgMlkglarZY3r0ZAhQ3Ds2DGkpqaa/4SHh2P8+PHm/2et619JSQlOnz6N5s2b3zn/nutl6TNVs2HDBqHRaMT69evFH3/8IZ5++mnh6elpsUKdLBUXF4sjR46II0eOCABi5cqV4siRIyIrK0sIUXlbuqenp/jxxx/F77//LkaNGmX1tvQePXqI/fv3i19++UW0adPG4rb0goIC4efnJyZMmCDS0tLEhg0bhIuLS6O6Lf3ZZ58VHh4eIjk52eIW07KyMnOfadOmiZYtW4qdO3eKgwcPisjISBEZGWneXnWL6bBhw0RqaqqIj48XzZo1s3qL6ezZs8WJEyfEmjVrGtVtvK+88orYtWuXOHv2rPj999/FK6+8ImQymdi+fbsQgjW2pWvv0hKCta4Ps2bNEsnJyeLs2bNi7969IioqSvj4+Ijc3FwhxJ1RYwYeG1q9erVo2bKlUKvVonfv3uLXX39t6Ck5tKSkJAGg2p9JkyYJISpvTX/99deFn5+f0Gg0YsiQISIjI8NijEuXLolx48YJV1dX4e7uLqZMmSKKi4st+hw9elT069dPaDQaERgYKJYtW2avt+gQrNUYgPjss8/MfcrLy8Vzzz0nmjZtKlxcXMSYMWPE33//bTFOZmamGD58uHB2dhY+Pj5i1qxZQq/XW/RJSkoS3bt3F2q1WrRq1criGFL3xBNPiODgYKFWq0WzZs3EkCFDzGFHCNbYlq4PPKz17Rs7dqxo3ry5UKvVIjAwUIwdO1acOnXKvP1OqLFMCCHq51wRERERkWPiGh4iIiKSPAYeIiIikjwGHiIiIpI8Bh4iIiKSPAYeIiIikjwGHiIiIpI8Bh4iIiKSPAYeIrIpmUyGQYMGNfQ06k1ycjJkMhkWLFjQ0FMhojpg4CEiu5s8eTJkMhkyMzMbeipWSS2kERGgbOgJEJG0nThxAi4uLg09jXrTu3dvnDhxAj4+Pg09FSKqAwYeIrKp9u3bN/QU6pWLi4vk3hNRY8BLWkQEwHJtysGDBzF06FC4ubnBw8MDY8aMueXLT9dfHgoJCcHnn38OAAgNDYVMJrN6Cens2bN46qmn0LJlS2g0GjRv3hyTJ09GVlZWjce4ePEiJk6cCH9/f8jlciQnJwMAkpKS8MQTT6Bdu3ZwdXWFq6srwsPD8dFHH1mtAQDs2rXLPDeZTIb169dXq9P10tLS8Oijj8LX1xcajQahoaGYOXMmLl26VK1vSEgIQkJCUFJSghkzZiAgIAAajQZdu3bFt99+W61/YWEh5s+fj44dO8LV1RXu7u4ICwvDpEmTrNaEiCzxDA8RWfjtt9+wfPlyDB48GM888wyOHDmCTZs24dixY0hLS4OTk9NtjT9z5kysX78eR48exYwZM+Dp6QmgMgBU2b9/P6Kjo1FaWor77rsPbdq0QWZmJr744gts27YNKSkpaNWqlcW4ly5dQmRkJLy8vPDYY4+hoqIC7u7uAIA333wTp06dQp8+fTBmzBgUFBQgPj4ezzzzDDIyMrBixQrzHOLi4rBw4UIEBwdj8uTJ5vG7d+9+w/f1yy+/IDo6GjqdDg8//DBCQkKQkpKCd999Fz/99BN+/fXXapfB9Ho9hg0bhitXruChhx5CWVkZNmzYgEcffRTx8fEYNmwYAEAIgejoaOzfvx99+/bFvffeC7lcjqysLGzevBkTJkxAcHDwLfxtEDUi9fa560R0R0tKShIABACxYcMGi20TJkwQAMRXX31V53EBiIEDB1q0TZo0SQAQZ8+erdZfp9OJkJAQ4ebmJg4fPmyxbc+ePUKhUIj77ruv2jEAiClTpgiDwVBtzDNnzlRr0+v1YujQoUKhUIisrKybzrlKVZ3i4uLMbUajUbRu3VoAEPHx8Rb9Z8+eLQCIJ554wqI9ODhYABCjRo0SWq3W3L5jxw4BQERHR5vbfv/9dwFAjB49utp8KioqRHFxsdW5EtFVvKRFRBYGDBiAsWPHWrQ98cQTACrP/tjaTz/9hMzMTMyePRs9evSw2NavXz+MGjUKW7duRVFRkcU2tVqN5cuXQ6FQVBszNDS0WptSqcS0adNgNBqRlJR0W3Peu3cvTp8+jeHDhyM6Otpi2/z58+Hl5YUvv/wSOp2u2r7vvPMO1Gq1+fWQIUMQHBxstdbOzs7V2jQaDVxdXW9r/kSNAS9pEZGFXr16VWtr0aIFAKCgoMDmx//1118BABkZGVbXyWRnZ8NkMuHkyZMIDw83t4eGhtZ451RxcTHefvttbNq0CadPn0ZpaanF9r/++uu25nzkyBEAsHore9V6oe3btyMjIwNdunQxb/P09LQaxlq0aIGUlBTz6w4dOqBr16746quvcOHCBYwePRqDBg1C9+7dIZfz91ai2mDgISILVeterqVUVn6rMBqNNj/+5cuXAQBffPHFDftdH1r8/Pys9tPpdBg0aBAOHz6MHj16YMKECfD29oZSqURmZiY+//xzaLXa25pz1dmmmubQvHlzi35VPDw8rPZXKpUwmUwWr3fu3IkFCxbgu+++w6xZswAAzZo1Q0xMDF599VWrZ7aI6CoGHiJyKFWB6//+7/9w33331Xq/qrurrvfjjz/i8OHDePLJJ/HJJ59YbNuwYYP5jrHbUTXnnJwcq9uzs7Mt+t0Kb29vrF69Gu+99x7S09Oxc+dOrF69GnFxcVCpVJg7d+4tj03UGPBcKBHZXdXZCGtnjCIiIgDA4pLO7Th9+jQAYNSoUdW27dmzx+o+crm8TmezqtYaVd0Gf63S0lIcPHgQzs7OaNeuXa3HrIlMJkOHDh0wffp0JCQkAAA2b9582+MSSR0DDxHZnZeXFwDg/Pnz1baNGjUKLVu2xMqVK7F79+5q2/V6PX755ZdaH6vqdu3r99m1axc+/vjjGud34cKFWh+jb9++aN26NbZt24YdO3ZYbFu8eDEuXbqEcePGWSxOrovMzEyrz0GqOqN0u48KIGoMeEmLiOzunnvuwdtvv42nn34aDz30EJo0aYLg4GBMmDABGo0G3377LYYPH46BAwfinnvuQZcuXSCTyZCVlYU9e/bA29sb6enptTrW/fffj5CQECxfvhxpaWno3LkzMjIy8NNPP2HMmDFWH/J3zz33YOPGjRg9ejR69OgBhUKBBx54AF27drV6DLlcjvXr1yM6OhojRozAI488guDgYKSkpCA5ORmtW7fGsmXLbrleqampePDBB9G7d2907NgR/v7+uHjxIjZt2gS5XI4XX3zxlscmaiwYeIjI7oYPH47ly5fj448/xooVK6DX6zFw4EBMmDABAHDXXXfh6NGjeOutt7B161bs3bsXGo0GgYGBGD16NMaNG1frY7m6umLnzp2YPXs2du/ejeTkZHTq1AlffPEF/Pz8rAaed999FwCwc+dO/N///R9MJhNatGhRY+ABKm+Z//XXX/Hvf/8b27dvR2FhIQICAjBjxgy89tprt/XZW+Hh4ZgzZw6Sk5OxZcsWFBQUwN/fH1FRUZg9ezb69Olzy2MTNRYyIYRo6EkQERER2RLX8BAREZHkMfAQERGR5HENDxHVyapVq2r1xOXJkydbfCAoEVFD4hoeIqqTkJAQZGVl3bRfUlKS1Y9aICJqCAw8REREJHlcw0NERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJL3/6ym5Gc5tfUGAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "simulate(5_000, get_reward, model, seed=42)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The performance has roughly been divided by half. This is most likely because there are now two times of day, and if the model has learnt preferences for one time of the day, then it's expected to be wrong half of the time.\n", - "\n", - "Before delving into recsys models that can handle context, a simple hack is to notice that we can append the time of day to the user. This effectively results in new users which our model can distinguish between. We could apply this trick during the simulation, but we can also override the behavior of the `learn_one` and `rank` methods of our model." - ] - }, - { - "cell_type": "code", - "execution_count": 12, + "execution_count": 522, "metadata": { "execution": { "iopub.execute_input": "2023-09-02T00:49:28.815797Z", @@ -557,7 +378,7 @@ "outputs": [ { "data": { - "image/png": "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RESEq48k3XjjjZo2bZoGDhyoa665Runp6crMzHQtTP7222/13//+VwsXLlSDBg2qXTPgr7hKCwgQ06dPd4UdSerUqZP69eunzMxMFRQUuNpbtGhRKexI0ogRIxQZGakvv/zylGuomOFo3br1KR+jJjZv3qwpU6ZoypQpmjhxoi6++GI98MADio6O1pNPPlmp/5IlS7Rx40a1atXqpMcODw9X//79lZOTo+eff95t2wcffKCMjAxJUm5urqv90ksvlSQ9/vjjOnTokKt93759rpm7o/ufSGFhoUaNGqWEhAT93//930n75+XlSdJxZ+ciIyNdfSQpLi5OX3zxhZo1a6YXXnhBe/fu1csvv6xrr71WJSUlGj16tG688UYlJSVp4cKF6tKli4KCgtS5c2d9/vnn1XoPgD9hhgcIEL169arUVhE8cnNz1bBhQ1f7Bx98oP/+979as2aN/vzzT5WVlbm2/f77754vtpZs2bKl0umhmJgYff311+rYsWOl/iebJTnWM888owsuuEDjxo3TJ598ou7du2vz5s366KOP1L17d61fv95tJuvGG2/UnDlztGzZMp199tm65JJL5HA4tGDBAkVHR0tStWe+/vGPf+j333/X559/7rHZsgsvvFArVqyo1P7II49oz549euaZZ7Rt2zZdc801uvbaa/Xcc8/p1Vdf1TXXXKNNmzapbdu2HqkL8ARmeIAAcfTsToWKdSxHB5qnn35af/3rX7V27VoNGTJE9957r1JSUpSSkqJGjRqpuLj4lGuIiYmRJO3ateuUj1ETSUlJMuUXX2j37t168skntXv3bl111VWu+/ycjh49euiHH37Q9ddfrzVr1mjWrFnKzMzUf//7X40YMUJS+YxZhaCgIH3++eeaMmWKrFarXnrpJX3wwQe6+uqr9d5771XqfzxpaWl68cUXNW3aNJ155pnVqrViZufoWZyj5efnV2tt1k8//aTHH39czzzzjKKiovTCCy8oNDRUr732mgYNGqRXX31VdrtdL7zwQrXqAvwFMzxAPVJaWqpp06apZcuWysjIcPvwNcboiSeeOK3j9+vXT1L5B7bT6fTqOp7mzZvrH//4h/Ly8vTII4/ooYcecp1GOh2dO3fWvHnzKrVX3PG6d+/ebu12u90VII9Wsaj42P5VqThdNnHiRE2cOLHS9szMTFksFjVq1Mh1iqxi7c6vv/5aabYvOztbBw4cUJ8+fU74uk6nU7fffrsGDRrkur9RZmamOnXqpLCwMElSWFiYOnXqpF9++eWk7wPwJwQeoB7Zu3ev8vLyNGjQoEozDatWrdLBgwdP6/gdO3ZU//79tXz5cr3xxhsnvFKruLjYI1dqPfDAA3rttdf0/PPPa8KECSe9GutUFBQU6JNPPlGzZs00ePDgau3z1ltvSZJuuOGGk/bt1q2bbrvttiq3vfrqq2rUqJH+9re/KTw83NU+YMAATZ8+XYsXL670Gl988YWrz4k899xz+vHHH7Vhwwa39mNn/YqLi094xRjgl3x7VTyAY8XFxVV548GT3YenKiNHjjSSXDe7KysrM2FhYSY+Pt4UFha6+u3fv9/07dvX7b4/FWp6H561a9easLAwEx4ebubOnVtln+XLl5vzzz//uMc4nfvwGGPMrFmzjCRz6623urVv3rzZbNy40ZSUlFTjnRhTVFRkHA6HW9uhQ4fMddddV+UNCY0pv3fNsebPn2+sVqv5y1/+YkpLS9227dmzx2zcuNHs2bOnWjXpBDcebN++/QlvPHiimx5u27bNREREmBkzZri1T5o0ydhsNtdNC7OysozNZjMPPPBAteoF/AVreIB6xGq16u6771ZWVpZ69Oih5ORk3X777erWrZusVqtiY2NP+zV69uypTz75xPX1BmeddZbGjBmjBx98UGPGjFH37t3Vv39/7d69uxbeUdXuuOMOxcbG6s0339SWLVtc7YMGDVKXLl2qvcZo9erVio2N1U033aT7779fd999t84880zNnz9fo0ePrvLqqb59+2rIkCEaP3687rvvPl100UW67rrrFB8fr/nz58tms7n1f+6559SlSxc999xzp/Weg4KC9Morr8jpdKp///664447dO+996pHjx7atGmTHnvssRPOdo0ZM0ZdunTR+PHj3drvuusuBQUF6eKLL9Y999yjiy++WMHBwRozZsxp1Qt4G4EHqGemT5+uRx99VBaLRc8//7xSU1M1fPhwLV68WMHBwbXyGoMGDdKvv/6qadOmKTIyUvPmzdMTTzyh+fPnq1mzZvrPf/7jWqfiCaGhoZo0aZJKS0trdJO/Y7Vt21YDBw7U119/rWeeeUbvvPOOOnbsqPfee08vvfRSlad1hg0bpuzsbL3++uv6z3/+o5ycHD300ENau3at4uLi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bYqLi13tX375pZFkkpKSXG3r1683kszQoUMr1XPo0CFTUFBQZa0AjuCUFgA3/fv317Bhw9zabr31Vknlsz+e9umnnyorK0sTJ07UOeec47btggsu0NVXX62FCxcqPz/fbVtISIieeOIJ2Wy2Ssds165dpbagoCDdddddKisr07Jly06r5m+//VZbtmzRpZdeqqSkJLdtkydPVtOmTfX222+rpKSk0r7PPPOMQkJCXM8HDRqkuLi4Ksc6LCysUpvdbldERMRp1Q/UB5zSAuCmV69eldpat24tScrNzfX463///feSpMzMzCrXyWRnZ8vpdGrTpk3q3bu3q71du3bHvXKqoKBATz31lBYsWKAtW7aosLDQbfvvv/9+WjWvXbtWkqq8lL1ivdDixYuVmZmps88+27WtcePGVYax1q1bKz093fW8S5cu6t69u9555x3t3LlTQ4cO1cCBA9WzZ09Zrfx/K1AdBB4AbirWvRwtKKj8n4qysjKPv/7+/fslSW+99dYJ+x0bWqKjo6vsV1JSooEDB2rNmjU655xzNGLECDVr1kxBQUHKysrSG2+8oeLi4tOquWK26Xg1tGzZ0q1fhUaNGlXZPygoSE6n0+350qVLNWXKFL3//vu69957JUnNmzfXuHHj9OCDD1Y5swXgCAIPAL9SEbg++eQTXXHFFdXer+LqqmN99NFHWrNmjW677Ta98sorbtvmzp3rumLsdFTUnJOTU+X27Oxst36nolmzZnr22Wf1n//8R7/88ouWLl2qZ599VikpKQoODtakSZNO+dhAfcBcKACvq5iNqGrGqG/fvpLkdkrndGzZskWSdPXVV1fa9vXXX1e5j9VqrdFsVsVao4rL4I9WWFioVatWKSwsTJ06dar2MY/HYrGoS5cuGjt2rFJTUyVJH3/88WkfFwh0BB4AXte0aVNJ0o4dOyptu/rqq9W2bVvNmDFDy5cvr7Td4XDom2++qfZrVVyufew+X331lV5++eXj1rdz585qv0a/fv3UoUMHff755/ryyy/dtj3yyCPat2+fhg8f7rY4uSaysrKqvA9SxYzS6d4qAKgPOKUFwOsuvvhiPfXUU7rjjjv017/+VQ0aNFBcXJxGjBghu92u9957T5deeqkGDBigiy++WGeffbYsFou2bdumr7/+Ws2aNdMvv/xSrde68sorFR8fryeeeEIbNmxQt27dlJmZqU8//VTXXHNNlTf5u/jii/Xuu+9q6NChOuecc2Sz2XTVVVepe/fuVb6G1WrVnDlzlJSUpMsuu0zXXXed4uLilJ6errS0NHXo0EGPP/74KY9XRkaGrr32WvXp00ddu3ZVTEyMdu3apQULFshqteqee+455WMD9QWBB4DXXXrppXriiSf08ssv6+mnn5bD4dCAAQM0YsQISdJf/vIXrVu3Tk8++aQWLlyob7/9Vna7Xa1atdLQoUM1fPjwar9WRESEli5dqokTJ2r58uVKS0vTWWedpbfeekvR0dFVBp5Zs2ZJkpYuXapPPvlETqdTrVu3Pm7gkcovmf/+++/1r3/9S4sXL1ZeXp5iY2M1fvx4PfTQQ6f13Vu9e/fWfffdp7S0NH322WfKzc1VTEyMEhMTNXHiRJ133nmnfGygvrAYY4yviwAAAPAk1vAAAICAR+ABAAABjzU8AGpk5syZ1brj8i233OL2haAA4Eus4QFQI/Hx8dq2bdtJ+y1btqzKr1oAAF8g8AAAgIDHGh4AABDwCDwAACDgEXgAAEDAI/AAAICAR+ABAAABj8ADAAACHoEHAAAEPAIPAAAIeAQeAAAQ8P5/jw6EJfC/9moAAAAASUVORK5CYII=", + "image/png": "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lJQgMDDwps/uu+MDT1ZWFvz9/Y3K/P39UVxcjIqKCjg7O9faZ+HChXUu5EVERER3lvPnzxs94NaUOz7w3IpZs2YhLi7O8LqoqAjNmjXDmTNn4O7ubrb30Wq12LZtGwYMGGD0ID4yP/a1dbCfrYP9bB3sZ+uxVF+XlJQgLCysXp/dd3zgCQgIQHZ2tlFZdnY2PDw8TI7uAIBKpTL5lGZvb294eHiYrW1arRYuLi7w8fHh/0wWxr62DvazdbCfrYP9bD2W6uuaY9VnOord3aXVUFFRUUhMTDQqS0hIQFRUlI1aRERERPbG7gJPaWkpUlNTkZqaCqD6tvPU1FScO3cOQPXlqIkTJxrqP/PMMzh9+jReeuklHDt2DB9++CG+/fZbvPDCC7ZoPhEREdkhuws8+/btQ+fOndG5c2cAQFxcHDp37oy5c+cCAC5dumQIPwAQFhaGTZs2ISEhAZ06dcLixYvxySefICYmxibtJyIiIvtjd3N4+vfvjxstDWRqFeX+/fsjJSXFgq0iIiKiO5ndjfAQERERmRsDDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJHgMPERERSR4DDxEREUkeAw8RERFJnl0GnuXLlyM0NBROTk7o3r079u7de8P6S5cuRZs2beDs7Izg4GC88MILqKystFJriYiIyN7ZXeD55ptv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", "text/plain": [ "
" ] @@ -569,142 +390,37 @@ "source": [ "class FunkMFWithHack(reco.FunkMF):\n", "\n", - " def learn_one(self, user, item, reward, context):\n", - " user = f\"{user}@{context['time_of_day']}\"\n", - " return super().learn_one(user, item, reward, context)\n", + " def predict_one(self, user, items, x=None):\n", + " user = f\"{user}@{x['time_of_day']}\"\n", + " return super().predict_one(user, items)\n", "\n", - " def rank(self, user, items, context):\n", - " user = f\"{user}@{context['time_of_day']}\"\n", - " return super().rank(user, items, context)\n", + " def learn_one(self, user, item, y, x):\n", + " user = f\"{user}@{x['time_of_day']}\"\n", + " return super().learn_one(user, item, y, x)\n", "\n", - "model = FunkMFWithHack(seed=29)\n", - "simulate(5_000, get_reward, model, seed=42)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can verify that the model has learnt the correct preferences by looking at the expected preference for each `(user, item)` pair." + "model = FunkMFWithHack(seed=10)\n", + "simulate(1_000, get_reward, model, seed=42)" ] }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "execution": { - "iopub.execute_input": "2023-09-02T00:49:28.970266Z", - "iopub.status.busy": "2023-09-02T00:49:28.970152Z", - "iopub.status.idle": "2023-09-02T00:49:29.025413Z", - "shell.execute_reply": "2023-09-02T00:49:29.025061Z" - } - }, + "execution_count": 523, + "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 preference
itemcampingfinancefoodhealthmusicpoliticssports
user       
Anna@afternoon-0.059041-0.0181050.0692220.0328650.1683531.0000000.195960
Anna@morning-0.136399-0.1175770.0763000.0811310.1544830.2218901.000000
Tom@afternoon-0.2330710.057220-0.074671-0.0271151.0000000.1636070.141781
Tom@morning-0.050107-0.0285620.061163-0.0054280.0634831.0000000.125515
\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "User Time of day politics sports music food finance health camping\n", + " Tom morning 9.0 -0.4 -1.4 0.0 0.1 -0.5 0.4\n", + " Tom afternoon -1.4 0.5 299.5 0.4 4.9 0.6 -3.8\n", + " Anna morning 0.2 -0.2 -108.0 -0.2 -1.8 -0.1 1.4\n", + " Anna afternoon -0.3 -0.0 -0.8 0.0 -0.0 0.1 -0.0\n" + ] } ], "source": [ - "import pandas as pd\n", - "\n", - "(\n", - " pd.DataFrame(\n", - " {\n", - " 'user': user,\n", - " 'item': item,\n", - " 'preference': model.predict_one(user, item)\n", - " }\n", - " for user in model.u_latents\n", - " for item in model.i_latents\n", - " )\n", - " .pivot(index='user', columns='item')\n", - " .style.highlight_max(color='lightgreen', axis='columns')\n", - ")" + "print_preferences(model.predict_one)" ] } ], diff --git a/docs/releases/unreleased.md b/docs/releases/unreleased.md index 92377996dc..84f6c1d419 100644 --- a/docs/releases/unreleased.md +++ b/docs/releases/unreleased.md @@ -13,3 +13,8 @@ River's mini-batch methods now support pandas v2. In particular, River conforms ## forest - Simplify inner the structures of `forest.ARFClassifier` and `forest.ARFRegressor` by removing redundant class hierarchy. Simplify how concept drift logging can be accessed in individual trees and in the forest as a whole. + +## reco + +- Renamed `reco.base.Ranker` to `reco.base.Recommender`. +- Added a `sample(user, items)` method to `reco.base.Recommender`. diff --git a/river/bandit/lin_ucb.py b/river/bandit/lin_ucb.py index 5ba387c8e3..ce9c0f2156 100644 --- a/river/bandit/lin_ucb.py +++ b/river/bandit/lin_ucb.py @@ -36,7 +36,7 @@ class LinUCBDisjoint(bandit.base.ContextualPolicy): References ---------- [^1]: [A Contextual-Bandit Approach to Personalized News Article Recommendation](https://arxiv.org/abs/1003.0146) - [^2:] [Contextual Bandits Analysis of LinUCB Disjoint Algorithm with Dataset](https://kfoofw.github.io/contextual-bandits-linear-ucb-disjoint/) + [^2]: [Contextual Bandits Analysis of LinUCB Disjoint Algorithm with Dataset](https://kfoofw.github.io/contextual-bandits-linear-ucb-disjoint/) """ diff --git a/river/checks/__init__.py b/river/checks/__init__.py index 2f3176428a..36fa3abfe6 100644 --- a/river/checks/__init__.py +++ b/river/checks/__init__.py @@ -8,7 +8,7 @@ from river.base import Estimator from river.model_selection.base import ModelSelector -from river.reco.base import Ranker +from river.reco.base import Recommender from . import anomaly, clf, common, model_selection, reco @@ -54,7 +54,7 @@ def _yield_datasets(model: Estimator): # Recommendation models can be regressors or classifiers, but they have requirements as to the # structure of the data - if isinstance(utils.inspect.extract_relevant(model), Ranker): + if isinstance(utils.inspect.extract_relevant(model), Recommender): if utils.inspect.isregressor(model): yield _DummyDataset( ("Alice", "Superman", 8), @@ -164,7 +164,7 @@ def yield_checks(model: Estimator) -> typing.Iterator[typing.Callable]: if isinstance(utils.inspect.extract_relevant(model), ModelSelector): dataset_checks.append(model_selection.check_model_selection_order_does_not_matter) - if isinstance(utils.inspect.extract_relevant(model), Ranker): + if isinstance(utils.inspect.extract_relevant(model), Recommender): yield reco.check_reco_routine if utils.inspect.isanomalydetector(model): diff --git a/river/reco/base.py b/river/reco/base.py index de746e5d1a..938e488d37 100644 --- a/river/reco/base.py +++ b/river/reco/base.py @@ -6,15 +6,16 @@ import typing from river import base +from river import utils ID = typing.Union[str, int] # noqa: UP007 Reward = typing.Union[numbers.Number, bool] # noqa: UP007 -__all__ = ["Ranker"] +__all__ = ["Recommender"] -class Ranker(base.Estimator): +class Recommender(base.Estimator): """Base class for ranking models. Parameters @@ -68,8 +69,24 @@ def predict_one(self, user: ID, item: ID, x: dict | None = None) -> Reward: """ + def sample(self, user: ID, items: set[ID], x: dict | None = None): + """Sample an item at random, based on the preference of a given user. + + Parameters + ---------- + user + A user ID. + items + A set of items to rank. + x + Optional context to use. + + """ + preferences = [max(1e-10, self.predict_one(user, item, x)) for item in items] + return self._rng.choices(items, weights=preferences, k=1)[0] + def rank(self, user: ID, items: set[ID], x: dict | None = None) -> list[ID]: - """Rank models by decreasing order of preference for a given user. + """Rank items by decreasing order of preference for a given user. Parameters ---------- diff --git a/river/reco/baseline.py b/river/reco/baseline.py index fb8213fa59..52953ab305 100644 --- a/river/reco/baseline.py +++ b/river/reco/baseline.py @@ -8,7 +8,7 @@ __all__ = ["Baseline"] -class Baseline(reco.base.Ranker): +class Baseline(reco.base.Recommender): """Baseline for recommender systems. A first-order approximation of the bias involved in target. The model equation is defined as: diff --git a/river/reco/biased_mf.py b/river/reco/biased_mf.py index 4032b31daa..ced8c2d642 100644 --- a/river/reco/biased_mf.py +++ b/river/reco/biased_mf.py @@ -6,14 +6,12 @@ import numpy as np -from river import optim, stats, utils - -from .base import Ranker +from river import optim, reco, stats, utils __all__ = ["BiasedMF"] -class BiasedMF(Ranker): +class BiasedMF(reco.base.Recommender): """Biased Matrix Factorization for recommender systems. The model equation is defined as: diff --git a/river/reco/funk_mf.py b/river/reco/funk_mf.py index 163f7b42be..6ef737a343 100644 --- a/river/reco/funk_mf.py +++ b/river/reco/funk_mf.py @@ -11,7 +11,7 @@ __all__ = ["FunkMF"] -class FunkMF(reco.base.Ranker): +class FunkMF(reco.base.Recommender): """Funk Matrix Factorization for recommender systems. The model equation is defined as: @@ -131,7 +131,7 @@ def predict_one(self, user, item, x=None): def learn_one(self, user, item, y, x=None): # Calculate the gradient of the loss with respect to the prediction - g_loss = self.loss.gradient(y, self.predict_one(user, item)) + g_loss = self.loss.gradient(y, self.predict_one(user, item, x=x)) # Clamp the gradient to avoid numerical instability g_loss = utils.math.clamp(g_loss, minimum=-self.clip_gradient, maximum=self.clip_gradient) diff --git a/river/reco/normal.py b/river/reco/normal.py index b9acadc3ec..536838526a 100644 --- a/river/reco/normal.py +++ b/river/reco/normal.py @@ -5,7 +5,7 @@ __all__ = ["RandomNormal"] -class RandomNormal(reco.base.Ranker): +class RandomNormal(reco.base.Recommender): """Predicts random values sampled from a normal distribution. The parameters of the normal distribution are fitted with running statistics. They parameters From 99f5a545dfc06d7b49cdfc87cab42020e59e2aec Mon Sep 17 00:00:00 2001 From: Max Halford Date: Wed, 4 Oct 2023 15:26:27 +0200 Subject: [PATCH 3/3] Update base.py --- river/reco/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/river/reco/base.py b/river/reco/base.py index 938e488d37..f2f6289d53 100644 --- a/river/reco/base.py +++ b/river/reco/base.py @@ -6,7 +6,6 @@ import typing from river import base -from river import utils ID = typing.Union[str, int] # noqa: UP007 Reward = typing.Union[numbers.Number, bool] # noqa: UP007