{ "cells": [ { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.0511, "end_time": "2020-05-07T17:23:13.086091", "exception": false, "start_time": "2020-05-07T17:23:13.034991", "status": "completed" }, "tags": [] }, "source": [ "# Algorithm Performance" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.048675, "end_time": "2020-05-07T17:23:13.185206", "exception": false, "start_time": "2020-05-07T17:23:13.136531", "status": "completed" }, "tags": [] }, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "papermill": { "duration": 0.067338, "end_time": "2020-05-07T17:23:13.301469", "exception": false, "start_time": "2020-05-07T17:23:13.234131", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from importlib import import_module\n", "import json\n", "from pathlib import Path" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "papermill": { "duration": 2.060078, "end_time": "2020-05-07T17:23:15.410528", "exception": false, "start_time": "2020-05-07T17:23:13.350450", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "import plotnine as p" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "papermill": { "duration": 0.220341, "end_time": "2020-05-07T17:23:15.754860", "exception": false, "start_time": "2020-05-07T17:23:15.534519", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import bookgender.datatools as dt\n", "from bookgender.config import data_dir\n", "from bookgender.nbutils import *" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "papermill": { "duration": 0.069248, "end_time": "2020-05-07T17:23:15.873482", "exception": false, "start_time": "2020-05-07T17:23:15.804234", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "using figure dir figures/AlgoPerf\n" ] } ], "source": [ "init_figs('AlgoPerf')" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.049076, "end_time": "2020-05-07T17:23:15.972718", "exception": false, "start_time": "2020-05-07T17:23:15.923642", "status": "completed" }, "tags": [] }, "source": [ "## Load Performance Data\n", "\n", "We need to collect all of the accuracy output files." ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.049798, "end_time": "2020-05-07T17:23:16.073693", "exception": false, "start_time": "2020-05-07T17:23:16.023895", "status": "completed" }, "tags": [] }, "source": [ "### Algorithm Eval Performance" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "papermill": { "duration": 0.118191, "end_time": "2020-05-07T17:23:16.241678", "exception": false, "start_time": "2020-05-07T17:23:16.123487", "status": "completed" }, "tags": [] }, "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", "
MRRHRNDCGDataSetAlgorithm
00.0003010.00440.001089BX-Euser-user
10.0005560.00740.001804BX-Eitem-item
20.0039050.03540.010269BX-Eals
30.0292210.15680.056760BX-Iuser-user
40.0208280.08760.035883BX-Iitem-item
\n", "
" ], "text/plain": [ " MRR HR NDCG DataSet Algorithm\n", "0 0.000301 0.0044 0.001089 BX-E user-user\n", "1 0.000556 0.0074 0.001804 BX-E item-item\n", "2 0.003905 0.0354 0.010269 BX-E als\n", "3 0.029221 0.1568 0.056760 BX-I user-user\n", "4 0.020828 0.0876 0.035883 BX-I item-item" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perf_data = pd.read_csv('data/rec-perf.csv')\n", "perf_data.head()" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.050582, "end_time": "2020-05-07T17:23:16.343883", "exception": false, "start_time": "2020-05-07T17:23:16.293301", "status": "completed" }, "tags": [] }, "source": [ "We would also like to bootstrap confidence intervals - this requires per-user statistics." ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.050892, "end_time": "2020-05-07T17:23:16.446690", "exception": false, "start_time": "2020-05-07T17:23:16.395798", "status": "completed" }, "tags": [] }, "source": [ "### Algorithm Tune Performance" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "papermill": { "duration": 0.120038, "end_time": "2020-05-07T17:23:16.618174", "exception": false, "start_time": "2020-05-07T17:23:16.498136", "status": "completed" }, "tags": [] }, "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", "
paramsitersMRRDataSetAlgorithm
0[67, 0.069343245462767]200.000856BX-Euser-user
1[232, 0.084880046234972]200.000540BX-Eitem-item
2[297, 4.36979166769093, 4.927362178355647, 24....200.002965BX-Eals
3[303, 0.052267596581313004]200.026312BX-Iuser-user
4[61, 0.03579462837616]200.015321BX-Iitem-item
\n", "
" ], "text/plain": [ " params iters MRR DataSet \\\n", "0 [67, 0.069343245462767] 20 0.000856 BX-E \n", "1 [232, 0.084880046234972] 20 0.000540 BX-E \n", "2 [297, 4.36979166769093, 4.927362178355647, 24.... 20 0.002965 BX-E \n", "3 [303, 0.052267596581313004] 20 0.026312 BX-I \n", "4 [61, 0.03579462837616] 20 0.015321 BX-I \n", "\n", " Algorithm \n", "0 user-user \n", "1 item-item \n", "2 als \n", "3 user-user \n", "4 item-item " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tune_data = pd.read_json('data/rec-tune.json', orient='records', lines=True)\n", "tune_data.head()" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.051818, "end_time": "2020-05-07T17:23:16.722959", "exception": false, "start_time": "2020-05-07T17:23:16.671141", "status": "completed" }, "tags": [] }, "source": [ "### Rerank Performance" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "papermill": { "duration": 0.111648, "end_time": "2020-05-07T17:23:16.887428", "exception": false, "start_time": "2020-05-07T17:23:16.775780", "status": "completed" }, "tags": [] }, "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", "
StrategyMRRHRNDCGDataSetAlgorithm
0SingleEQ0.0003160.00460.001133BX-Euser-user
1GreedyEQ0.0002690.00440.001051BX-Euser-user
2GreedyReflect0.0003440.00500.001241BX-Euser-user
3SingleEQ0.0003590.00600.001286BX-Eitem-item
4GreedyEQ0.0004470.00760.001638BX-Eitem-item
\n", "
" ], "text/plain": [ " Strategy MRR HR NDCG DataSet Algorithm\n", "0 SingleEQ 0.000316 0.0046 0.001133 BX-E user-user\n", "1 GreedyEQ 0.000269 0.0044 0.001051 BX-E user-user\n", "2 GreedyReflect 0.000344 0.0050 0.001241 BX-E user-user\n", "3 SingleEQ 0.000359 0.0060 0.001286 BX-E item-item\n", "4 GreedyEQ 0.000447 0.0076 0.001638 BX-E item-item" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rerank_data = pd.read_csv('data/rerank-perf.csv')\n", "rerank_data.head()" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.053265, "end_time": "2020-05-07T17:23:16.994240", "exception": false, "start_time": "2020-05-07T17:23:16.940975", "status": "completed" }, "tags": [] }, "source": [ "## Organize Runs\n", "\n", "We have data sets, and we have implicit/explicit configurations. For some data sets, these are encoded in the data set; for others, in the algorithm.\n", "\n", "We need to split that out." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "papermill": { "duration": 0.077362, "end_time": "2020-05-07T17:23:17.125826", "exception": false, "start_time": "2020-05-07T17:23:17.048464", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "def normalize_runs(frame):\n", " frame = frame.assign(Implicit = frame['DataSet'].str.endswith('-I') | frame['Algorithm'].str.endswith('-imp'))\n", " frame['Algorithm'] = frame['Algorithm'].str.replace('-imp', '')\n", " frame['DataSet'] = frame['DataSet'].str.replace('-[IE]', '')\n", " frame['Algorithm'] = frame['Algorithm'].str.replace('wrls', 'als').str.upper()\n", " frame['Algorithm'] = frame['Algorithm'].str.replace(r'(\\w)\\w+-(\\w)\\w+', r'\\1\\2')\n", " return frame" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "papermill": { "duration": 0.080327, "end_time": "2020-05-07T17:23:17.260255", "exception": false, "start_time": "2020-05-07T17:23:17.179928", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "perf_data = normalize_runs(perf_data)" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.053182, "end_time": "2020-05-07T17:23:17.367057", "exception": false, "start_time": "2020-05-07T17:23:17.313875", "status": "completed" }, "tags": [] }, "source": [ "And look at that data:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "papermill": { "duration": 0.102138, "end_time": "2020-05-07T17:23:17.523352", "exception": false, "start_time": "2020-05-07T17:23:17.421214", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MRRHRNDCGDataSetAlgorithmImplicit
00.0003010.00440.001089BXUUFalse
10.0005560.00740.001804BXIIFalse
20.0039050.03540.010269BXALSFalse
30.0292210.15680.056760BXUUTrue
40.0208280.08760.035883BXIITrue
50.0300190.15220.057322BXALSTrue
60.0171380.10040.034448BXBPRTrue
70.0000430.00080.000183AZUUFalse
80.0033570.02460.007375AZIIFalse
90.0002210.00360.000879AZALSFalse
100.0544450.21060.093025AZUUTrue
110.0373340.12000.059690AZIITrue
120.0317260.15300.059956AZALSTrue
130.0038250.04560.011680AZBPRTrue
140.0000620.00160.000325GRUUFalse
150.0108180.14820.036822GRIIFalse
160.0965670.36640.159028GRUUTrue
170.0875410.34740.147663GRIITrue
180.0956400.39020.167903GRALSTrue
190.0441030.19900.080554GRBPRTrue
\n", "
" ], "text/plain": [ " MRR HR NDCG DataSet Algorithm Implicit\n", "0 0.000301 0.0044 0.001089 BX UU False\n", "1 0.000556 0.0074 0.001804 BX II False\n", "2 0.003905 0.0354 0.010269 BX ALS False\n", "3 0.029221 0.1568 0.056760 BX UU True\n", "4 0.020828 0.0876 0.035883 BX II True\n", "5 0.030019 0.1522 0.057322 BX ALS True\n", "6 0.017138 0.1004 0.034448 BX BPR True\n", "7 0.000043 0.0008 0.000183 AZ UU False\n", "8 0.003357 0.0246 0.007375 AZ II False\n", "9 0.000221 0.0036 0.000879 AZ ALS False\n", "10 0.054445 0.2106 0.093025 AZ UU True\n", "11 0.037334 0.1200 0.059690 AZ II True\n", "12 0.031726 0.1530 0.059956 AZ ALS True\n", "13 0.003825 0.0456 0.011680 AZ BPR True\n", "14 0.000062 0.0016 0.000325 GR UU False\n", "15 0.010818 0.1482 0.036822 GR II False\n", "16 0.096567 0.3664 0.159028 GR UU True\n", "17 0.087541 0.3474 0.147663 GR II True\n", "18 0.095640 0.3902 0.167903 GR ALS True\n", "19 0.044103 0.1990 0.080554 GR BPR True" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perf_data" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "papermill": { "duration": 0.129878, "end_time": "2020-05-07T17:23:17.708616", "exception": false, "start_time": "2020-05-07T17:23:17.578738", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
paramsitersMRRDataSetAlgorithmImplicit
0[67, 0.069343245462767]200.000856BXUUFalse
1[232, 0.084880046234972]200.000540BXIIFalse
2[297, 4.36979166769093, 4.927362178355647, 24....200.002965BXALSFalse
3[303, 0.052267596581313004]200.026312BXUUTrue
4[61, 0.03579462837616]200.015321BXIITrue
5[499, 0.151451427679924, 0.06685861681803601, ...200.026321BXALSTrue
6[249, 0.011980259542217, 0.09697898418796101]200.014692BXBPRTrue
7[68, 0.070821028781701]200.000306AZUUFalse
8[5, 0.1]200.002919AZIIFalse
9[299, 0.027209462059128, 0.09593544705902601, ...1000.000533AZALSFalse
10[7, 0.00087767799404]200.058791AZUUTrue
11[9, 2.9102495117394603e-05]200.034288AZIITrue
12[300, 1e-06, 1e-06, 50.0]200.031447AZALSTrue
13[6, 0.00428451465746, 0.00346828460276]200.005907AZBPRTrue
14[7, 0.09988270936531501]200.000073GRUUFalse
15[6, 0.099969938296841]200.013365GRIIFalse
16[32, 0.08878273357970401]200.099882GRUUTrue
17[6, 0.097933753442365]160.095913GRIITrue
18[487, 4.098540323995087, 0.36994560658956105, ...200.102185GRALSTrue
19[250, 0.0, 0.028168135291681003]200.042900GRBPRTrue
\n", "
" ], "text/plain": [ " params iters MRR \\\n", "0 [67, 0.069343245462767] 20 0.000856 \n", "1 [232, 0.084880046234972] 20 0.000540 \n", "2 [297, 4.36979166769093, 4.927362178355647, 24.... 20 0.002965 \n", "3 [303, 0.052267596581313004] 20 0.026312 \n", "4 [61, 0.03579462837616] 20 0.015321 \n", "5 [499, 0.151451427679924, 0.06685861681803601, ... 20 0.026321 \n", "6 [249, 0.011980259542217, 0.09697898418796101] 20 0.014692 \n", "7 [68, 0.070821028781701] 20 0.000306 \n", "8 [5, 0.1] 20 0.002919 \n", "9 [299, 0.027209462059128, 0.09593544705902601, ... 100 0.000533 \n", "10 [7, 0.00087767799404] 20 0.058791 \n", "11 [9, 2.9102495117394603e-05] 20 0.034288 \n", "12 [300, 1e-06, 1e-06, 50.0] 20 0.031447 \n", "13 [6, 0.00428451465746, 0.00346828460276] 20 0.005907 \n", "14 [7, 0.09988270936531501] 20 0.000073 \n", "15 [6, 0.099969938296841] 20 0.013365 \n", "16 [32, 0.08878273357970401] 20 0.099882 \n", "17 [6, 0.097933753442365] 16 0.095913 \n", "18 [487, 4.098540323995087, 0.36994560658956105, ... 20 0.102185 \n", "19 [250, 0.0, 0.028168135291681003] 20 0.042900 \n", "\n", " DataSet Algorithm Implicit \n", "0 BX UU False \n", "1 BX II False \n", "2 BX ALS False \n", "3 BX UU True \n", "4 BX II True \n", "5 BX ALS True \n", "6 BX BPR True \n", "7 AZ UU False \n", "8 AZ II False \n", "9 AZ ALS False \n", "10 AZ UU True \n", "11 AZ II True \n", "12 AZ ALS True \n", "13 AZ BPR True \n", "14 GR UU False \n", "15 GR II False \n", "16 GR UU True \n", "17 GR II True \n", "18 GR ALS True \n", "19 GR BPR True " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tune_data = normalize_runs(tune_data)\n", "tune_data" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.056519, "end_time": "2020-05-07T17:23:17.822798", "exception": false, "start_time": "2020-05-07T17:23:17.766279", "status": "completed" }, "tags": [] }, "source": [ "## Accuracy Plots" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.056201, "end_time": "2020-05-07T17:23:17.936711", "exception": false, "start_time": "2020-05-07T17:23:17.880510", "status": "completed" }, "tags": [] }, "source": [ "Plot the MRR for each data set!" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "papermill": { "duration": 0.12679, "end_time": "2020-05-07T17:23:18.125947", "exception": false, "start_time": "2020-05-07T17:23:17.999157", "status": "completed" }, "tags": [] }, "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", "
DataSetAlgorithmImplicitMRRStageMode
0BXUUFalse0.000856TuneExplicit
1BXIIFalse0.000540TuneExplicit
2BXALSFalse0.002965TuneExplicit
3BXUUTrue0.026312TuneImplicit
4BXIITrue0.015321TuneImplicit
\n", "
" ], "text/plain": [ " DataSet Algorithm Implicit MRR Stage Mode\n", "0 BX UU False 0.000856 Tune Explicit\n", "1 BX II False 0.000540 Tune Explicit\n", "2 BX ALS False 0.002965 Tune Explicit\n", "3 BX UU True 0.026312 Tune Implicit\n", "4 BX II True 0.015321 Tune Implicit" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_mrr = pd.concat([\n", " tune_data[['DataSet', 'Algorithm', 'Implicit', 'MRR']].assign(Stage='Tune'),\n", " perf_data[['DataSet', 'Algorithm', 'Implicit', 'MRR']].assign(Stage='Eval')\n", "], ignore_index=True)\n", "merged_mrr['Mode'] = 'Explicit'\n", "merged_mrr.loc[merged_mrr['Implicit'], 'Mode'] = 'Implicit'\n", "merged_mrr.head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "papermill": { "duration": 2.383296, "end_time": "2020-05-07T17:23:20.568158", "exception": false, "start_time": "2020-05-07T17:23:18.184862", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.catplot(x='Algorithm', y='MRR', row='Mode', col='DataSet', hue='Stage', data=merged_mrr, kind='bar',\n", " sharey=False, margin_titles=True, aspect=1.5, height=2.2)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "papermill": { "duration": 3.584488, "end_time": "2020-05-07T17:23:24.215263", "exception": false, "start_time": "2020-05-07T17:23:20.630775", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/MICHAELEKSTRAND/anaconda3/envs/bookfair/lib/python3.7/site-packages/plotnine/ggplot.py:729: PlotnineWarning: Saving 7 x 4 in image.\n", " from_inches(height, units), units), PlotnineWarning)\n", "/home/MICHAELEKSTRAND/anaconda3/envs/bookfair/lib/python3.7/site-packages/plotnine/ggplot.py:730: PlotnineWarning: Filename: figures/AlgoPerf/rec-perf.pdf\n", " warn('Filename: {}'.format(filename), PlotnineWarning)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAIRCAYAAAAGIrq3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dfZwkVX3v8c/RXVGX2WWNiTIF+JhVlIiIMWoSn17xRow5Ua8QQ1BZTIy5XBPEmBAi4BPRRCXGcFFRL0sCPsSHS443l0QJKhEfUMEHhIh6FaQGFGFZZrmIs1D3j+oxbTMz2w9Vc2qnP+/Xa18zffr0qW9Vn5n9zenq6lBVFZIkScrjbrkDSJIkTTOLMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjizFJkqSMLMYkSZIyshiTJEnKyGJMkiQpI4sxSZKkjCzGJEmSMrIYkyRJyshiTJIkKSOLMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjizFJkqSMLMYkSZIyshiTJEnKyGJMkiQpI4sxSZKkjCzGJEmSMrIYkyRJyshiTJIkKSOLMUmSpIzW5Q4gac+x31knVC0Me+61W994VAvjTuSqo+/exr6evWXbHUe3MK6kPZgrY5IkSRlZjEmSJGVkMSZJkpSRxZikqRFCODqE8LncOSSpn8WYpE4KIXwyhPCjEMLOvn9fyp2raQP7d8fAPp+YO5+k9vluSklddlxVVe/IHaJNVVXtvfh9b9XuHVVVbcuXSNJqc2VM0h4lhHB+COFPBto+FkJ4ee/7V4YQvhVCmA8hXBlC+K95kjYjhPD6EMI5fbf3DiFUIYT9erfPCSGcHkI4r7fPXw4h/EJf/9kQwgdDCN8PIXwvhHBSCMHf/VKH+AMpaU9zDvC7izdCCPcHngy8r9f0nd7tTcCrgXMWC5c17EjgjcA+wL8DfwvQK7r+N3AlcADwBOBw4EV5YkpaisWYpC47LYRwc9+/9wD/C3hoCOHAXp/nA5+squp6gKqqPlRVVVlV1Z1VVX0A+AbwS3nir5qPVFX1uaqq7gD+AXhMr/3xwM8Bp1RVdXtVVdcCfwP8TqackpbgOWOSuuz4pc4ZCyGcR7069qre17f13fdC4Hjggb2mvYH7tp40r+v7vv9/1PsM9TG4P7A9hLB4/92A765WMEm7ZzEmaU90DvD23rlUj6BeLSOE8ADg3cCvARdXVXVHCOEyICw7UvftBO7dd/v+Izz2GuC7VVU9tNlIkprky5SS9kQXAPeiXhE7r6qqnb32Db2vN8BPVskOWv14jboMeHII4UEhhA3AySM89nPALSGEE0MI9w4h3C2EsCWE8KR2okoah8WYpC5768B1uK4F6J0b9T7g6dSrZPTarwDeBFwMfB94NPCZ1Y/dqI9R7+ulwNd6t4dSVdUu4FnAI4FvATcB7wfu13xMSeMKVVXlziBpD7HfWSe08Qvj3Gu3vvGoFsadyFVH372NfT17y7Y7jm5hXEl7MFfGJEmSMrIYkyRJyshiTJIkKSOLMUmSpIwsxiRJkjKyGJMkScrIK/BLGsWnWxjzGy2M2YQ29vWqFsaUtIfzOmOSJEkZ+TKlJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRmtyx1AKorin4BnAPuWZXlTr23nEl3vAawry9I/ItSqoig+CTwe2AVUwDeAV5Rl+amiKN4IPBF4clmWVa//K4GjgMeWZbmQJ7WmSVEUzwOOBx4F3A5cDbwfeBvwfOA9wG3AnUAJvKEsy7/Pk1a7439qyqooip8DDgNuBY5cbC/Lcu/+f8B+wDXAa/Ik1RQ6rjf3NgHvBM4rimI9cApwX+BlAEVRPAw4GdhqIabVUBTFccDbqQuv2bIsf4b6j4EHAPv3un2hb/7+KfCe3lxVB1mMKbejgG8CfwNsXapDURQBOId6deK1qxdNgrIs7wTOBfahXr29HTgGeH1RFD8PnAX8bVmWl2aMqSlRFMUm4PXAfyvL8v1lWd4CUJblFWVZHluW5Tf7+5dlWZVl+VHgZupVNHWQxZhy20r9H905wGOKoljql8XJwIHAUYsvC0mrpSiKuwMvol6ZnQMoy/Jz1KtlnwE24h8JWj1PAO4JnDdM56Io7lYUxXOBnwG+1WYwjc9zxpRNURSPBR4JnFuW5dVFUVxMXZy9vK/PM4BXAr9cluX2PEk1pU7rnR92L+rzbl5UluWuvvsvAv4E+LuyLH+cI6Cm0n2BH/a/JF4UxfnURdo9gD/oNT+2KIqbgXtTL7wcV5blZasdVsNxZUw5bQU+XZbl1b3b/wAc1Tsvh6IoHkS9avbfyrL8SqaMml7Hl2W5D3Ux9nTgXUVRHApQFMVG4H9Qv7z+iqIoHpAvpqbMD4H7Lv6eBCjL8rDeXP0qcPde8xd7bRuBdwBPXfWkGprFmLIoimIv4HeAQ4uiuL4oiuuBU6n/6ntWURT3BD4MvN93ACmnsizvLMvy08BV/Od/aG8BLi3L8njgbODMXPk0dT5L/e7JZw/TuSzLHwGvoD4N5LfaDKbxWYwpl2dTv0x+EPDo3r+DgA9Qr5i9nfoXzsuXG0BaLUVRPB54BHB5URRPB/4r8Ie9u/8c2FIUxZJvQJGaVJblDurzaP9HURS/XRTFxqIoQu+dkj+7zGNuB04DXt17Q5Q6JlSV50Nr9RVF8S/At8uyPHag/ZeAz/Vu3k59nadBjyjL8pqWI2qKDVxnDOB66pcl3w1cDpxSluW2vv6/Bvwj8MiyLK9bzayaTkVRPB84DvgF6uuJXQ28l/olycOBl5Zl+fi+/ht6fX6vLMuhTv7X6rEYkyRJysiXKSVJkjKyGJMkScrIYkySJCkjizFJkqSMLMYkSZIyshiTJEnKyM+m3IPMzc3tRX2ByTfMzs7enjtPv65mM9fqmZub2wjsADbNzs7ekjvPoq7mgu5m62quSXR1n8w1ui5nG5crY3uWvYBTel+7pqvZzCVJ6jSLMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjizFJkqSMLMYkSZIy8jpjkiTpLnaeuD/AjqsmGGPLtjtCQ3HWNFfGJEmSMrIYkyRJyshiTJIkKSOLMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjizFJkqSMvOhrCxYWFvYF9m163M2bN2+Yn59nZmbm4IWFhVubHn8SXc02rbnWr19/6XL3LSwsPKbp7cH0HutJdDWb83P1dDnXzgbGaeP5bPOYrTQ32xSqqsqx3TVtYWHh1cApuXNoeq1fv37Zq14vLCz4Q6+snJ97hu/8/j0nHuNB7/pRA0lWz0pzs02ujLXjnUBqetBdu3ZtmJ+fv2hmZuZJ69at68xfUNDdbOZa0qFtDOqxHl1Xszk/V0+XcwEXNTBU489nV4/ZJFwZ24PMzc1tBHYAm2ZnZ2/JnadfV7OZa/V0dZ+6mgu6m62ruSbR1X3qcq6dJ+6/Y9Jx2vhsyq4es0l4Ar8kSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGa3LHUCSJDVrv7NOqCYd48ImgmgoroxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGXXiBP4Y4z7AmcBhwC3AqSmlM5bp+zzgr4H7ARcDW1NKZe++I4DjgEcDX00pPX7gsfsD7wF+GbgeeGVK6SOt7JQkSdIQurIydjp1YTgLPAt4XYzxqYOdYowPB84CXgLcF/gm8N6+LjcBbwVOXWY77wO+0XvsS4GzY4xbGtoHSZKkkWUvxmKMG4DDgVellOZTSpcB24Bjluj+AuD8lNIFKaXbgJOAJ8YYHwLQa/9HoFxiOz8PPA44KaV0W0rp48DHemNKkiRlkb0YA7YAIaV0RV/bl4GDluh7EPCVxRsppZuAa5bpu9Rjr04p3TzEdiRJklZFF84Z25v6PLF+NwMzy/TdMWTfJh87krm5ub2AvZoel//MOjM3N9fC8BPparapzDU7Ozv4M/UTc3NzGxvfYG0qj/WEuprN+bl6upqrES09n60ds5XmZpu6UIztBAafrE3A/IR9m3zsqP4cOKWFcRdd2+LYk+pqtmnLFVa4b/CPkqZN27FuQlezOT9XT1dzTarN57ONY7bS3GxNF4qxq4AqxnhgSunKXtujgcuX6Hs5cPDijRjjZuCAZfou9dgHxhg3pZQWJ8dy25nUG4DTWhh3hnry7Uc7ReQkuprNXHe1qaVxPdaj62o25+fqaStX20XtsNp4Prv6XI4tVNXEH181sRjjudQv620FHgz8G3BESunCgX4HAp8Hng18lvoSF49KKT25d//dgfXUJ+X/HvBk4M6U0o97918MfBE4AXgicB5waErpqrb3sQm95d4dwKZcS6nL6Wo2c62eru5TV3NBd7N1NdckurpPbeVq5LMpP/WmiXNs2XZH4ytNXX0uJ9GFE/gBjgUq4DrgfODklNKFMcYDYow7Y4wHAPRWzl4MvBu4EXgYcGTfOC8AbqO+Ztnjet9/rO/+5wOP6D32XcDRe0ohJkmS1qYuvExJ7x2Ohy/Rfg31iff9bR8EPrjMONuoL4ux3Ha+Bzx9gqiSJEmN6srKmCRJ0lSyGJMkScrIYkySJCkjizFJkqSMLMYkSZIyshiTJEnKyGJMkiQpI4sxSZKkjCzGJEmSMrIYkyRJyshiTJIkKSOLMUmSpIwsxiRJkjKyGJMkScrIYkySJCmjdbkDSJIk7SmKovjEbrqEsiyfMsqYFmOSJEnD+yXguL7bfwO8vPd9Bbxt1AEtxiRJkoa3qyzLMxdvFEXxxoHbbxl1QM8ZkyRJGl+YdACLMUmSpPFVA7dHLs4sxiRJkoZ388DtDw/c/o9RB7QYkyRJGt57i6L4yTn3ZVn+PkBRFM/p3f7FUQe0GJMkSRreocDniqJ4OEBRFPcuiuJM4PRxB7QYkyRJGlJZlk8HzgU+UxTFScBlwH2Ag8Yd00tbSJIkjeatwC8ArwYuB15UluWt4w5mMdaChYWFfYF9mx538+bNG+bn55mZmTl4YWFh7Ce9DV3NNq251q9ff+ly9y0sLDym6e3B9B7rSXQ1m/Nz9XQ1V1PaeD7bPGYrzc1FRVE8APh74F7ALwN/AlxWFMVRZVleMs52Q1UNviNTk1pYWHg1cEruHJpe69evX/at1QsLC/7QKyvnZ/sedM5JE49x4afeNHmOd/1o4jFW00pzc1FRFD8E3gGcUpblHb22rcBpZVluHme7roy1451AanrQXbt2bZifn79oZmbmSevWrevUX1BdzWauJR3axqAe69F1NZvzc/W0mOtLDY41icafzw48l7Esy8/0N5RleVZRFBeNO6ArY3uQubm5jcAOYNPs7OwtufP062o2c62eru5TV3NBd7N1NdckurpPbeXa76wTJv7PvYmVsS3b7pj46vSDuvpcTsKVMUmSpBUURfF/GeLK+mVZPmic8S3GJEmSVvbSvu8PAV4InAFcA+wPvAw4e9zBLcYkSZJWUJblxxa/L4rizcBvlGX53b62fwY+CrxxnPG96KskSdLw9gduHGj7Ya99LK6MSZIkDe/fgHN6V9+/GngAcCpwwbgDujImSZI0vN8DtgOX9L5+nnql7MXjDujKmCRJ0pDKsrwZOLp3odf7lmV5w6RjWoxJkiQNqfdxSMveXlSW5dXDjmkxJkmSNLzFa46tdGHdwAinglmMSZIkDe9eTQ9oMSZJkjSksix/3PSYFmOSJElDKoriQpb5aKSyLJ/a6/N/yrJ85rBjWoxJkiQN7/1D9PngKANajEmSJA2pLMszh+hz1ihjWoxJkiSNoCiK5wAvAQ6g/rDwd5Zled6443kFfkmSpCH1LvZ6OvBx4M97X88oiuKF447pypgkSdLwXgk8tyzLzy82FEVxMfBu4O/HGdCVMUmSpOHt31+IAfRuL3kl/mFYjEmSJA2vLIqi6G/o3b5+3AEtxiRJkob3MmDvgba9gf8+7oCeMyZJkjSksiw/vkTbN4BvjDumxZgkSdKQiqJY9hpiZVlu7fV5e1mWfzjsmBZjkiRJw7tuiD4jnT/WiWIsxrgPcCZwGHALcGpK6Yxl+j4P+GvgfsDFwNaUUtm77x7A3wG/DSwAb08pndz32O/2HndHr+nqlNIj29gnSZK09pRleeJS7UVR3Luvz2tGGbMTxRj1xdPWAbPAQ4ELYoxXppQ+0d8pxvhw4CzgOdSF2JuB9wJP7nU5GXhUb4y9gX+LMX4npdS/pPiclNK/tLkzkiRp7SqK4mHUizv9Hxh+flEUzwSqsiw/Ncp42YuxGOMG4HDgkJTSPHBZjHEbcAzwiYHuLwDOTyld0HvsScD3Y4wPSSl9G9gK/H5K6YfAD2OMb+2NM9JnREmSJC2lKIp3AUcB2wfuugf1AlEA9h1lzOzFGLAFCCmlK/ravgwcv0Tfg4BLFm+klG6KMV4DHBRjvIl6Ze0rA+O8dmCMs2OMdwO+DvxFSuniBvZBkiRNh+cA+5ZleXN/Y1EU82VZzo4zYBeKsb2pzxPrdzMws0zfHcv0Xbzmx44l7lt0FPCl3vdHA+fHGH8hpXT16LGXNzc3txewV5Nj9izuy8zc3FwLw0+kq9mmMtfs7Ozgz9RPzM3NbWx8g7WpPNYT6mo25+fq6WquRrT0fLZ2zFaam33uNliI9VTjbrcLxdhOYPDJ2gTMj9h3Z+/2xr7vf2qclNKn+x739hjj86nfNPCOsZIv78+BUxoes9+1LY49qa5mm7ZcYYX7Bv+gadq0HesmdDWb83P1dDXXpNp8Pts4ZivNzUVPWKb9F8fdaBeKsauAKsZ4YErpyl7bo4HLl+h7OXDw4o0Y42bgAODylNL2GONc7/7FUnm5cRbdyXAHflRvAE5rYdwZ6sm3H0sXqzl1NZu57mpTS+N6rEfX1WzOz9XTVq62i9phtfF8Zn0uexd4Hbp9GNmLsZTSrTHGDwGvizFuBR5M/RLiEUt0Pwf4fIzxacBnqc8H+2zv5H2AbcCrYoxfoH7Z8jjgVIAY4wHUH+K5+OGeL6KuYn+v6X2anZ29Hbi96XH7lmPnh1xKXTVdzWauu2prex7r0XU1m/Nz9XQ1V1Pa2Ke1eMy68tmUx1K/1nodcD5wckrpwhjjATHGnb1Cit7K2YuBdwM3Ag8Djuwb5zXUK2HfBr4IvK/vshZ7U1+D7Cbqi7G9CHhWXyEnSZK06rKvjAGklG6mvrzFYPs1DHwYZ0rpg8AHlxnnx8Af9P4N3ncF9cuWkiRJndGVlTFJkqSpZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRl14qKvkvLb76wTqknHuOTX/6iJKJI0VVwZkyRJyshiTJIkKSOLMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjL22hTvNyC5Kktc6VMUmSpIwsxiRJkjKyGJMkScrIYkySJCkjT+CX1JidJ+4PsOOqCcbYsu2O0FAcSdojWIxpzbNAkCR1mS9TSpIkZWQxJkmSlJHFmCRJUkaeM9aChYWFfYF9mx538+bNG+bn55mZmTl4YWHh1qbHn0SXszVhYWHhMU2O1/bxWr9+/aXL3df0vjRtTzvWk+hqtrU4P6f1WOfWxvPZ5jFbaW62yWKsHX8AnNL0oOvWrWPz5s0AFzU99qS6nK0hX2pysFU4Xiu94aDRfWnBnnasx9bVbGtxfk7xsc6t8eez5WOW5c1aFmPteCeQmh50165dG+bn5y+amZl50rp16zr1F1SL2bpSOBza5GCZn8vl9sVjvcq6mq2j83MiU3is1+TPM3T3uZyExVgL1q9ffx1wXdPj3nDDDRsBtm/f/pXZ2dlbmh5/El3O1oSml65zHq9cy/DDWkvHene6mm0tzk+PdR5tPJ9r8Zh5Ar8kSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRutyB5Akdc/OE/cH2HHVBGNs2XZHaCiOtKa5MiZJkpSRxZgkSVJGFmOSJEkZec7YHqaJ8zjAczmkSe131glVE+Nc+Kk3gedmSVOttWIshBCqqmrkl1WTYoz7AGcChwG3AKemlM7Im0qSJE2rxl+mDCHcI4TwEuAbTY/dkNOpi9BZ4FnA62KMT80bSZIkTauRV8ZCCA8CjgAOAL4FbKuqansI4Z7Ay4CXA/cHLm4yaBNijBuAw4FDUkrzwGUxxm3AMcAncmbT9PHSAWpLEy+hXthEEElDGakYCyE8Hvg4sKGv+dgQwvOAfwQeSl2EvbCqqgsaS9mcLUBIKV3R1/Zl4PjV2Li/ICVJ0qBRX6Z8DTAHPAG4N3Ag8F3g34GfBZ5bVdWvdrQQA9ib+jyxfjcDMxmySJIkjfwy5aOAl1dV9fne7W+EEP6Q+vywl1RVdV6j6Zq3E9g40LYJmG9yI3Nzc3sBezU5ZtPm5uYGj8OkFgvambm5uYaHzm/weD3uX9+2Y9Ixm1jlXO55nJ2dHfyjY7eP6Qrn5ui6+px2bH52dR50NVcj2vjdCc28C3nvv/zepsG2leZmm8Iob3gMIdwJPKGvGCOEsA74MfBLVVV9ofmIzemdM3YT8OiU0pW9tjcD90spvaCp7czNzb0aOKWp8aRRzc7OLnsu2dzcXOfe5azp4vxUV600N9s0zqUt7hy4vfiDs2vCLK1LKd0aY/wQ9TsotwIPBo6mfkNCk94AnNbwmFD/BXUtsB8Nr+Y1oKvZzHVXd/lrsCEe69F1NZvzc/WYa3RdzjaWcYqx94YQblui/QMhhB/13a6qqjp4zFxtOhZ4F3Ad9fljJ6eUGj0vfnZ29nbg9ibHBOhbwp7PtZS6nK5mM9ddtbU9j/XouprN+bl6zDW6Lmcb16jF2NnLtH9p0iCrJaV0M/XlLSRJkrIbqRirqmprW0EkSZKmUWsfFB5CeFJbY0uSJK0VbXwc0m+FED6DV7SXJEnarZGKsRDC3UIIfxpCuDKEcGsI4ashhOf07vsvIYSvAR+h/jikl7SQV5IkaU0Z9TpjfwS8FbgS+Br151M+Dvgr4ATqq/O/Gji7qqrOX+pCkiQpt1GLsa8Cl1VV9aK+tpcDbwEuAn6jqqpbG08pSZK0Ro16ztiDgHMG2rb1vr7RQkySJGk0oxZjG4DBz5VavODaDyaPI0mSNF3GuQL/w0II/eeD3b339eEh/PRHOlVVdem4wSRJkqbBOB8UvtQDFquwqu92VVXV3ZfoK0mSpJ5RV8ae2koKSZKkKTXSypjympub20h9zt6mrn04alezmWv1dHWfupoLuputq7km0dV9MtfoupxtXCOtjIUQ0gjdq6qqfmvEPJIkSVNl1JcpnwXMA56YL0mS1IBRi7F/AX4NeCDwfuC9VVV9relQkiRJ02Kk64xVVfVMYF/gr4FfAS4LIXwthPBnIYQD2ggoSZK0lo160Veqqrqxqqq3V1X1q8BDgPcCvwt8J4Tw7yGE5zYdUpIkaa0a56KvP1FV1dXAG0IIbwNOAv4EuAH4yCjjxBj3Ac4EDqO+ov+pKaUzlui3L/BO4LHUK3QHppT+Y6DP64GXUu/b+4A/Sikt9O7bH3gP8MvA9cArU0ojZZUkSWrSyCtji0II60IIvxlCeB/wfeBFwBnAa8YY7nTq4mmW+k0Cr4sxLnVNszupz1t79lKDxBh/D3g+dbH288BjgFf1dXkf8A3gvtQF29kxxi1j5JUkSWrEyCtjIYSnAEcCz6P+KKTzgOcCF1RVdeeo48UYNwCHA4eklOaBy2KM24BjgE/0900pfZ+64CPGuNRwW4HTUkrf7fV5fa//KTHGnwceBzwrpXQb8PEY48eAF1Cv6kmS1rCdJ+4PsOOqCcbYsu2OsPte0mhGvc7Y96hXlc4HXgJ8tKqq2yfMsAUIKaUr+tq+DBw/xlgHAV8ZGGe/GOOm3n1Xp5RuHrj/MWNsR5IkqRGjrowVwALwdOpLXDD44eB9qqqqNg0x5t7U54n1uxmYGTHb4lg7BsahN9bgfZNsR5IkqRGjFmPjnA+2OzuBjQNtm6gvLjvpWIvF4HzD21lR76Ma2rBYOM7Mzc21tImxdTXbVOZa6SNCpnB+djUXdDfbWp6fE2kh31TOgQm1li3XxyuNVIxVVdVGMXYVUMUYD0wpXdlrezRw+RhjXQ4cDHymb5xrU0o7YoyXAw+MMW5KKe3ou3+c7ezO4Apc065tefxJdDXbtOVa6byWaZ2fXc0F3c22FufnpNrKN21zYCK98/8myrb3X35vqeYs5wROdGmLJqSUbo0xfoj6HZRbgQcDRwNHLNU/xnjPvpv36N2+PaVUAduAV8YY/w9wK/U7Kf9nbzvfjDF+AXhtjPEE4InArwMntrBbw7w8O44Z6sm3Hy2s6E2oq9nMdVfTNj+7mgu6m20tz89JNZ3POTC6rj6XY8tejPUcC7wLuI76/LGTU0oXxhgPAK4AHpFSuqbX97a+xy2erP8g4LvAu4EHAF8C1lNfyuL1ff2fT12c3Uh9nbGjU0qTvLFmSW0tc/Ytx8537ZPqu5rNXHc1bfOzq7mgu9nW+PycSNP5nAOj6+pzOYlOFGO9dzgevkT7NdQn3ve3LbuE2FsdexU/fW2x/vu/R/3mA0mSpE4Y+6KvkiRJmlwnVsYkSdLat99ZJ1RNjHNhE4N0iMWYJEm6Cz+xYPVYjEmSOq+JFZW1tpqitcNzxiRJkjKyGJMkScrIYkySJCkjizFJkqSMLMYkSZIyshiTJEnKyGJMkiQpI4sxSZKkjE3fGqQAABy6SURBVCzGJEmSMrIYkyRJyshiTJIkKSM/m7IFCwsLj2lj3M2bN2+Yn59nZmbm4IWFhVvb2Ma4upptWnOtX7/+0uXum7b52dVc0N1sa3F+NqXpfF2eAzsbGKfLz+dS2Vaam22yGGvHl9oYdN26dWzevBngojbGn0RXs01xrrDCfVM1P7uaC7qbbS3OzwY1mq+tY/2gc06aeIyGPli9y8/nUtlWmputsRhrx6FtDLpr164N8/PzF83MzDxp3bp1nfkLCrqbzVxLmqr52dVc0N1sHZ2fXflPvdGfnxaPdVePV1dyQUu/C8dhMdaCtpY5b7jhho0A27dv/8rs7OwtbWxjXF3NZq67mrb52dVc0N1sa3F+NqXpfF2dA03p8vPZpWyewC9JkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGXUiQ8KjzHuA5wJHAbcApyaUjpjmb7PA/4auB9wMbA1pVT27vs68IC+7nsBV6aUHtW7/5PA44Fdix1SSns3vT+SJEnD6kQxBpxOnWUWeChwQYzxypTSJ/o7xRgfDpwFPIe6EHsz8F7gyQAppUcO9P888NGBbR2XUnpHGzshSZI0quwvU8YYNwCHA69KKc2nlC4DtgHHLNH9BcD5KaULUkq3AScBT4wxPmSJcR8JPBY4u7XwkiRJE8pejAFbgJBSuqKv7cvAQUv0PQj4yuKNlNJNwDXL9N0KXJBS+t5A++tijDfGGC+JMf7mZNElSZIm04WXKfemPk+s383AzDJ9d+yub4xxHXAU8McDff8MuBL4EfAs4P0xxqemlC4ZL/rS5ubmNjY5Xp/F/ZyZm5traRNj62q2qcw1Ozs7+DP1E1M4P7uaC7qbbS3Oz0a0kK+rc6ARXX4+l8q20txsUxeKsZ3A4AHZBMxP0Pc3gHsA5/U3ppQ+33fzIzHG3wKeCzRajHHXgrFp17Y8/iS6mm3acoUV7pvW+dnVXNDdbGtxfk6qrXxdnQOT6vLzuVS2leZma7pQjF0FVDHGA1NKV/baHg1cvkTfy4GDF2/EGDcDByzR9xjgvSml23ez7Ttp58BvamFMqP+CuhbYj6WL1Zy6ms1cdzVt87OruaC72bo4P7vyn3rTPz9tHeuuHq+u5IL2fheOLHsxllK6Ncb4IepzubYCDwaOBo5Yovs5wOdjjE8DPgu8FvhsSunbix1ijD8HPBP4pf4H9i6f8QTgk8CPqVfPjgD+S8O71NoyZ98S9nyupdTldDWbue5q2uZnV3NBd7OtxfnZlKbzdXUONKXL+9SlbF04gR/gWKACrgPOB05OKV0YYzwgxrgzxngAQG/l7MXAu4EbgYcBRw6M9QLg6ymlSwfa1wOvAX4A3AScArwwpXRxS/skSZK0W9lXxgBSSjdTX95isP0a6pP2+9s+CHxwhbHeArxlifYbgMdNHFaSJKlBXVkZkyRJmkoWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlFEnPihckiRpT1AUxYVAWKlPWZZPHWVMizFJkqThvb/pAS3GWrCwsPCYNsbdvHnzhvn5eWZmZg5eWFi4tY1tjKur2aY11/r16y9d7r5pm59dzQXdzbYW52dTms7X1TnQlC4/n0tlW2lu9vnGcneUZfmpcbJYjLXjS20Mum7dOjZv3gxwURvjT6Kr2aY410pL6FM1P7uaC7qbbS3OzwY1mq+rc6BBXX4+l8q24suPPe8buH0f4O7AD4F9xwliMdaOQ9sYdNeuXRvm5+cvmpmZedK6des69RdUV7OZa0lTNT+7mgu6m62j87Mr/6k3+vPT4rHu6vHqSi4Y87ksy3K2/3ZRFHcHTgZuHDeIxVgLhlzmHNkNN9ywEWD79u1fmZ2dvaWNbYyrq9nMdVfTNj+7mgu6m20tzs+mNJ2vq3OgKV1+PpvKVpblHUVRvBb4HvC2ccbw0haSJEmTeQpwj3Ef7MqYJEnSkIqi+L/89Lll9wb2Af543DEtxiRJkob30oHb9wOeC/z7uANajEmZ7Dxxf4AdV00wxpZtdwzzzh9JUkPKsvzYYFtRFB8HPgr84jhjes6YJEnSZG4Ffn7cB7syJkmSNKSiKE4ZaLo38EzgLitmw7IYkyRJGt7DBm7vBP4HcNa4A1qMSZIkDaksyyObHtNiTJIkaQVFUTxgmH5lWV49zvgWY5IkSStbvLZYxU9fY2zw9lhvjLQYk8aw31knVJOOcWETQSRJq+Fefd8fBTwDeA1wDbB/7/t/GXdwizFJkqQVlGX548Xvi6J4NfCIsix39pquKIriRcB/AO8ZZ/xOFGMxxn2AM4HDgFuAU1NKZyzT93nAX1Nf8fZiYGtKqezd92rgL4Db+x5yWErp30fdjiRJ0hL2An6O+l2Ui+7HGvhsytOps8wCDwUuiDFemVL6RH+nGOPDqd86+hzqQuzNwHuBJ/d1+3BK6fmTbEeSJGkZ7wY+VhTF31K/TPkA6s+lHGtVDDpwBf4Y4wbgcOBVKaX5lNJlwDbgmCW6vwA4P6V0QUrpNuAk4Ikxxoc0vB1JkqS7KMvyL4DXA78J/CXwLOC1vfaxdGFlbAsQUkpX9LV9GTh+ib4HAZcs3kgp3RRjvKbX/u1e82ExxhuBH1AXW29KKd054nYkSZKWVJblNuoaoxFdKMb2pj5/q9/NwMwyfXes0PeDwLuA64BDgA8Au4C3jLidiczNzW1sesyexawzc3NzLW1ibF3N1tVcjVhurs3Ozg7O9d0+pgFdPdZdzQXdzdZqrkzzsxEt5OvqHGhEl5/PpbKtNDcX9U7W362yLM8eNksXirGdwOAB2QTMj9o3pfT1vvYvxRhPBf6AuhgbZTuTGiwYm3Zty+NPoqvZupprUsvNtbBM+0qPaUpXj3VXc0F3s7WVK+f8nFRb+bo6BybV5edzqWwrzc1FfzBEnwDsUcXYVUAVYzwwpXRlr+3RwOVL9L0cOHjxRoxxM3DAMn0B7uQ/D+wo25nUphbGhPovqGuB/WiniJxEV7O1lasrv2DGmWvTNj+7mgu6my1nruXm5578M7eSafsd1ZVcMOZzWZblE5sOkr0YSyndGmP8EPC6GONW4MHA0cARS3Q/B/h8jPFpwGeB1wKfTSl9GyDG+Gzgot65ZI+ivszF/xxjOxMZZplzHH1L2PNtbWNcXc3W1VxNGWefpm1+djUXdDdbzlxdOg5LaTpfV+dAU7q8T13Klr0Y6zmW/zzX6xbg5JTShTHGA4ArgEeklK5JKV0ZY3wx9dtK7w98Guj/wM4jgHfHGO8JXE99GYw37W477e6aJElaK4qiuIO7vpxZAaEsy7v1+syXZTn0OemdKMZSSjdTX3ZisP0a6hPv+9s+SH2i/lLjrPhJ6sttR5IkaUgHDtHnkFEG7EQxJkmStCcoy/IqgKIoAnDfsixvWKLPt0YZM/tFXyVJkvYURVHs1bv6/jxwfVEUtxZF8daiKMb+OCSLMUmSpOG9jvpqDE8CNgO/AhwKvGbcAX2ZUpIkaXjPB365LMvv9W5fVhTF7wAXAX8+zoCujEmSJA1vY18hBkBZltcC9xl3QFfGJEka035nnVBNOsYlv/5HTUTR6vmPoigeVZblVxcbiqL4BeqLy4/FYkySJGl4zwVuG2i7FnjOuANajEmSlNHOE/cH2DH2sgqwZdsdw3ymohpQluVdPtG9LMvtwPZxx7QYkyRJGlJRFP+XZT5QvCzLB/X6XF6W5UHDjmkxJkmSNLyXDtFnpBMBLcYkSZKGVJblx5ZqL4ri1/v6jPS51xZjkiRJQyqK4j7Un3N9P3765coTi6L4S4CyLEe6AKzFmCRJ0vD+F7Ae+O4S9z1snAEtxiRJkob3C8DPlGX5U9eYK4pivizLI8cZ0GKsBQsLC49pY9zNmzdvmJ+fZ2Zm5uCFhYVb29jGuLqarau5mrLcXFu/fv2loz5mUl091l3NBd3N1nauHPOzKV3NZ67RLZVtpbnZ58bBQqznhnGzWIy140ttDLpu3To2b94M9edfdUpXs3U1V4OWm2srXXNoquZnV3NBd7OtQq5Vn58N6mo+c41uqWy7vV5bWZY/v0z7g8cNYjHWjkPbGHTXrl0b5ufnL5qZmXnSunXrOvNXNLSX7UHnnDTxD/Klv3E8LRyzrvyCGWeuTdX87Gou6G62zLmWm59d/Zkz18q6mgta+l04DouxFgy5zDmyG264YSPA9u3bvzI7O3tLG9sYV5ez7dq1q5O5mjDOXJu2+dnVXNDdbDlztTU/m9LVfOYaXZey3S13AEmSpGlmMSZJkpSRxZgkSVJGnjOmNW/nifsD7LhqgjG2bLtjt++wkSRpHK6MSZIkZWQxJkmSlJHFmCRJUkaeM7aK9jvrhKU+PmEkF37qTTDh+U/gOVCSJHWFK2OSJEkZWYxJkiRl5MuUkoBmXka/5Nf/qIkokjRVLMYkaY2xsJb2LJ0oxmKM+wBnAocBtwCnppTOWKbv84C/Bu4HXAxsTSmVvfveBERgFvgBcHpK6W/6HvtJ4PHArsW2lNLeLeySJEnSULpyztjp1IXhLPAs4HUxxqcOdooxPhw4C3gJcF/gm8B7+7r8CHgusIm6KHtFjPG3B4Y5LqW09+K/xvdEkiRpBNlXxmKMG4DDgUNSSvPAZTHGbcAxwCcGur8AOD+ldEHvsScB348xPiSl9O2U0kl9fb8eY0zArwAfaHs/JEmSxpG9GAO2ACGldEVf25eB45foexBwyeKNlNJNMcZreu3f7u8YY7wb8KvUq279XhdjPLXX/3UppY9OvguSwM8BXUt8LqXV04WXKfemPk+s383AzDJ9dwzZ903AArCtr+3PgIcA+wJvBN4fY3zc6JElSZKa0YWVsZ3AxoG2TcD8uH1jjCdSn3v2pJTS7YvtKaXP93X7SIzxt6jPMbuEBs3NzQ1m7JwWMi4WxDNzc3MND51fV5/T5XLNzs4O/oGz28d0xZTNzS5nm5jzc/WYa3RLZVtpbrapC8XYVUAVYzwwpXRlr+3RwOVL9L0cOHjxRoxxM3BAf98Y4wnU55s9OaX0/d1s+06gjWX0wdW7Lmor47UtjZtbV5/T5XKtNK+7ui+LpnFudjnbJJyfq8dco1sqW5aX1rMXYymlW2OMH6I+l2sr8GDgaOCIJbqfA3w+xvg04LPAa4HPppS+DRBj/FPgpdSFWNn/wN7lM54AfBL4MfAbvW38lxZ2a9My7V2alMtlHNcM9X8o+7H0qua4unLMBo9XV3NN8pg9eZ9W0tbcbMK0/dxM8piu7pO5VtbVXND875qxZS/Geo4F3gVcR33+2MkppQtjjAcAVwCPSCldk1K6Msb4YuDdwP2BTwNH9o3zV9SF1tdjjItt56SUXgqsB14DHEi9IvYt4IUppYub3plcy5yjaDpj30ss83vC/o+qq/s0Tq6u7suiaZqbXc7WBOfn6jHX6LqUrRPFWErpZurLWwy2X0N90n5/2weBDy4zzrLLiymlGwBP1pckSZ3ShXdTSpIkTS2LMUmSpIw68TKlJO1pmvgwbvADuSW5MiZJkpSVxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUke+mlNRpTbxr0XcsSuoyV8YkSZIyshiTJEnKyJcpJSmjnSfuD7DjqgnG2LLtjmU/l1dS91mMSVrzmih4wKJHUjt8mVKSJCkjizFJkqSMfJmyBQsLC4/JnWF3ms64efPmDfPz88zMzBy8sLBwa5Njd0FXn9Plcq1fv/7SUR/TFV3O19Vse1ou52fzzDW6pbKtNDfbZDHWji/lDjCERjOuW7eOzZs3A1zU5Lgd0tXndLlcK53b1NV9WdTlfF3Ntqflcn42z1yjWypblvNCLcbacegy7V2alMtlHMuuXbs2zM/PXzQzM/OkdevWNbky1pVjNni8upprksd0dZ+6kgt+OltXc0F3sjk/V4+5Rtfo/4OTsBhrQa5lzlE0nfGGG27YCLB9+/avzM7O3tLk2F3Q1ed0nFxd3ZdFXc7X1WxrKVdX92VRV/OZa3RdyuYJ/JIkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkdcZU2N2nrg/wI6rJhhjy7Y7slz9WJKkXFwZkyRJyshiTJIkKSOLMUmSpIw8Z0zsd9YJVRPjXNjEIJIkTZmpK8ZijPsAZwKHAbcAp6aUzsibSpIkTatpfJnydOoidBZ4FvC6GONT80aSJEnTaqpWxmKMG4DDgUNSSvPAZTHGbcAxwCdyZpMkSdNp2lbGtgAhpXRFX9uXgYMy5ZEkSVNuqlbGgL2pzxPrdzMw0+RG5ubmNjY5Xhu6mtFco1ku1+zs7OA83+1juqLL+bqabU/L5fxsnrlGt1S2leZmm0JVNfJGuj1CjPEQ4PMppXv0tR0FvCKldEhT25mbm5ueg6pOmp2dXfaTDJyfys35qa5aaW62adpWxq4CqhjjgSmlK3ttjwYub3g7mxoeb9EMcC2wHzDf0jbG1dVs5rqraZufXc0F3c3m/Fw95hpdl7ONZapWxgBijOcCewFbgQcD/wYckVLq/GWyekuqO4BNuZZSl9PVbOZaPV3dp67mgu5m62quSXR1n8w1ui5nG9e0ncAPcCxQAdcB5wMn7wmFmCRJWpum7WVKUko3U1/eQpIkKbtpXBmTJEnqDIsxSZKkjCzGJEmSMpq6d1NKkiR1iStjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkYWY5IkSRlZjEmSJGVkMSZJkpSRxZgkSVJG63IH0E+LMf4T8Axg35TSTb22o4GXppQev0T/A4HTgMdRP5/XAG9JKW1rKM8ngccDu4AK+AbwipTSp3q53gPc1rvvGuANKaVzeo+tgP/Xu28e+Gfgj1NKtzaRbcjs7wf+BfgOcK+U0o9WY9u97VfAgSml/+hrO5recxljfOBSuWKMrwYenlJ6/mplHVaX5qdzc+IMa2p+dmlu9sb/JM7PSTKsqfm5O66MdUiM8eeAw4BbgSOHfNj/Bj4NFMDPAi8GftBwtONSSnsDm4B3AufFGNf37vtC776NwMnAthjjw/see2jv/sdS/9L784azaZV0dH46N9XVuQnOTw3JlbFuOQr4JvVfJFuB01fqHGO8L/Bg4My+vwwuaStcSunOGOO5wJnAvgP3VcCHY4zbgUcC/zFwfxlj/FfgkLbyqXWdnZ/OzanX2bkJzk/tnitj3bIVOBc4B3hMjPFRu+l/I/UvoL+PMf7XGGPRZrgY492BF1Evqc8N3hdjPBzYB/jaEo89AHgm8K02M6pVnZ2fzs2p19m5Cc5P7Z7FWEfEGB9L/VfRuSml7wAXU/+CWVbvL6qnUf+QvgH4XozxizHGQxuOd1qM8WbqcxhOA16ZUtrVu++xvft+QL2MfmRK6aq+x14SY9wJXA2UwCkNZ9Mq6PD8dG5OuQ7PTXB+aki+TNkdW4FPp5Su7t3+B+D1McY/XelBKaVrgZcBxBjvB7wZ+KcY4/69XzhNOD6l9I4Y492AJwL/HGP8du++Ly51cmyfx1GfuPprwDbgPsDNDeXqul3A+oG29cBC7/uFvrYfLdOnK7o6P52b41sr87OrcxOcn5NYK/NzKK6MdUCMcS/gd4BDY4zXxxivB04F7gs8a9hxUkrfB/6K+oTU+zSdM6V0Z0rp08BVwFNHeFyVUvo49UsIb2k6V4ddAzxooO3B1H/pAlwP/Hg3fbLbE+anc3Mse/z83BPmZm985+fo9vj5OQpXxrrh2dTPxUHUb3Ve9Fbqv/o+AoQY4z0HHncv4HjqvwS/DewN/HfgmymlG9sIGmN8PPAI4HLg/iM+/DTgOzHGQ1JKlzUernvOBV4VY/wq9S+HX6R+x9bRACmlO2KMHwD+MsZ4DPV5LL8G/Cb1X9FdsUfMT+fmyNbC/Nwj5iY4P8ewFubn0CzGumEr8A+98x1+Isb4N9Rvvb6Yesn6toHHHQTsD/wr9Vuz/x/wWerJ2KS3xhjf3Pv+euBVKaV/6V3zZWgppe/HGP+e+tyHZzecsYtOBe4OXEj9l/o1wJ+llP5PX5+XAW8Evkj99vdvAb+TUvrqKmddSZfnp3NzfGthfnZ5boLzcxJrYX4OLVRVUy+NS5IkaVSeMyZJkpSRxZgkSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJqkzQgiXhhCqEMJTlrivCiH8ySrneWBvu8/razsuhPDMJfp+N4Rw+mrmk7Q2WIxJ6oQQwsOBQ3o3fzdnlj7XAU+g/kiWRccBdynGJGlcFmOSuuJ3gTuAfwOeF0K4R64gobZXVVW3V1X1uaqqbsqVRdLaZzEmqSuOpF6BOg3Yh92sPvUKppNDCNeHEHaGED4SQnjm4MucIYR7hhDeEkIoQwi3hxC+FkI4cmCsbSGEy3uP/wpwOxAHX6YMIXwXeABwbK+9CiEcPTDWfw8hXB1C2BFCOC+E8LN99z2l95hnhBA+3Mv9vRDCUb37/yiEcE0IYXsI4d0hhL3GPpqS9hgWY5KyCyE8Hngw8D7gY8AP2f1LlS8DXg1sA54LfBN4xxL9zgX+G3WRF4EvAueGEF4w0G8W+Ntev2cAX15irOcA1wMfon758gnAP/fdH4HfBI4F/hh4CvB3S4xzBnBZb7zPAmeHEP4K+HXgpcBJwAuBVyy555LWlHW5A0gSdeF1O/CRqqp2hRD+ETgmhLCxqqpbBjuHEO4OnACcVVXVCb3mj4UQ7ge8qK/fo6gLtWOrqjqj1/yvIYRZ4HXAP/QNuxl4RlVVl/Q9/oH9262q6rIQwu3A96uq+twS+xGAWFXV7b3HPxT40xDC3aqqurOv3z9WVfX6Xp9Lehl/B3hoVVU/7rU/BTgc+Mslj5ikNcOVMUlZ9QqrI4B/rqpqR6/5XOCe1EXKUvYD9gXSQPs/Ddz+1d7XDwy0vw94QAhh/762H/YXYmP61GIh1nMFsB74uYF+Fyx+09vnHwAXLRZiPVcB+yNpzbMYk5Tb06mLlY+GEPYJIexDXcRcy/IvVe7b+3rDQPsPBm5vBnZVVXXjQPv1va/3WeGx47h54PZicXXPIfot1Tb4OElrkMWYpNwWC66zgO19//YDnhZCuP8Sj7mu9/VnB9oHV6BuAtaFEO4z0H7/vvsXVaOElqSmWIxJyiaEcG/g2cB5wFMH/h1B/Tvq+Us89Frq1a3fGmh/9sDtT/e+HjHQ/tvA1VVVfW+M2K5YSWqUJ/BLyikCewNvq6rqk4N3hhC+QL1y9tb+9qqq7gghvAF4awjh+8AngKdRF3EAd/b6fTWE8GHgtF7h93XqwuwZ1O9WHMeV1Ct2T6dewfvOEi+DStLQXBmTlNPvAtcAn1zm/rOBx4YQtixx398BrwGOAf4XcCDwZ737dvT1Owp4O/AnwEeBXwKOqqqq/52UoziRemXuw8AXqC9lIUljC1XlaRKS1oYQwuuB44Gfqarqttx5JGkYvkwpaY8UQjiQetXrM9TncT2FevXr7RZikvYkroxJ2iOFEB4A/E/g0cBGoATOAV5dVdWunNkkaRQWY5IkSRl5Ar8kSVJGFmOSJEkZWYxJkiRlZDEmSZKUkcWYJElSRhZjkiRJGVmMSZIkZWQxJkmSlJHFmCRJUkb/H/hRNkCBbdAvAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "make_plot(merged_mrr, p.aes(x='Algorithm', y='MRR', fill='Stage'),\n", " p.geom_bar(stat='identity', position='dodge'),\n", " p.facet_grid('Mode ~ DataSet', scales='free_y'),\n", " p.scale_fill_brewer('qual', 'Dark2'),\n", " file='rec-perf.pdf', width=7, height=4, legend_position='top', legend_title=p.element_blank())" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "papermill": { "duration": 0.132664, "end_time": "2020-05-07T17:23:24.414660", "exception": false, "start_time": "2020-05-07T17:23:24.281996", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\\begin{tabular}{llrrrr}\n", "\\toprule\n", " & {} & \\multicolumn{4}{l}{MRR} \\\\\n", " & Algorithm & ALS & BPR & II & UU \\\\\n", "DataSet & Implicit & & & & \\\\\n", "\\midrule\n", "AZ & False & 0.000221 & NaN & 0.003357 & 0.000043 \\\\\n", " & True & 0.031726 & 0.003825 & 0.037334 & 0.054445 \\\\\n", "BX & False & 0.003905 & NaN & 0.000556 & 0.000301 \\\\\n", " & True & 0.030019 & 0.017138 & 0.020828 & 0.029221 \\\\\n", "GR & False & NaN & NaN & 0.010818 & 0.000062 \\\\\n", " & True & 0.095640 & 0.044103 & 0.087541 & 0.096567 \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\n" ] } ], "source": [ "print(perf_data[['DataSet', 'Algorithm', 'Implicit', 'MRR']].set_index(['DataSet', 'Implicit', 'Algorithm']).unstack().to_latex())" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.066541, "end_time": "2020-05-07T17:23:24.547926", "exception": false, "start_time": "2020-05-07T17:23:24.481385", "status": "completed" }, "tags": [] }, "source": [ "And hit rate:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "papermill": { "duration": 1.932548, "end_time": "2020-05-07T17:23:26.547058", "exception": false, "start_time": "2020-05-07T17:23:24.614510", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.catplot(x='Algorithm', y='HR', row='Implicit', col='DataSet', data=perf_data, kind='bar', \n", " sharey=False, margin_titles=True)" ] }, { "cell_type": "markdown", "metadata": { "papermill": { "duration": 0.070332, "end_time": "2020-05-07T17:23:26.689056", "exception": false, "start_time": "2020-05-07T17:23:26.618724", "status": "completed" }, "tags": [] }, "source": [ "## Rerank Loss" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "papermill": { "duration": 0.123979, "end_time": "2020-05-07T17:23:26.883838", "exception": false, "start_time": "2020-05-07T17:23:26.759859", "status": "completed" }, "tags": [] }, "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", "
StrategyMRRHRNDCGDataSetAlgorithmImplicit
0SingleEQ0.0003160.00460.001133BXUUFalse
1GreedyEQ0.0002690.00440.001051BXUUFalse
2GreedyReflect0.0003440.00500.001241BXUUFalse
3SingleEQ0.0003590.00600.001286BXIIFalse
4GreedyEQ0.0004470.00760.001638BXIIFalse
\n", "
" ], "text/plain": [ " Strategy MRR HR NDCG DataSet Algorithm Implicit\n", "0 SingleEQ 0.000316 0.0046 0.001133 BX UU False\n", "1 GreedyEQ 0.000269 0.0044 0.001051 BX UU False\n", "2 GreedyReflect 0.000344 0.0050 0.001241 BX UU False\n", "3 SingleEQ 0.000359 0.0060 0.001286 BX II False\n", "4 GreedyEQ 0.000447 0.0076 0.001638 BX II False" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rerank_data = normalize_runs(rerank_data)\n", "rerank_data.head()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "papermill": { "duration": 0.147417, "end_time": "2020-05-07T17:23:27.103161", "exception": false, "start_time": "2020-05-07T17:23:26.955744", "status": "completed" }, "tags": [] }, "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", "
DataSetAlgorithmImplicitMRRHRStrategyMode
0BXUUFalse0.0003010.0044RawExplicit
1BXIIFalse0.0005560.0074RawExplicit
2BXALSFalse0.0039050.0354RawExplicit
3BXUUTrue0.0292210.1568RawImplicit
4BXIITrue0.0208280.0876RawImplicit
\n", "
" ], "text/plain": [ " DataSet Algorithm Implicit MRR HR Strategy Mode\n", "0 BX UU False 0.000301 0.0044 Raw Explicit\n", "1 BX II False 0.000556 0.0074 Raw Explicit\n", "2 BX ALS False 0.003905 0.0354 Raw Explicit\n", "3 BX UU True 0.029221 0.1568 Raw Implicit\n", "4 BX II True 0.020828 0.0876 Raw Implicit" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rr_mrr = pd.concat([\n", " perf_data[['DataSet', 'Algorithm', 'Implicit', 'MRR', 'HR']].assign(Strategy='Raw'),\n", " rerank_data[['DataSet', 'Algorithm', 'Implicit', 'MRR', 'HR', 'Strategy']]\n", "], ignore_index=True)\n", "rr_mrr.head()\n", "rr_mrr['Mode'] = 'Explicit'\n", "rr_mrr.loc[rr_mrr['Implicit'], 'Mode'] = 'Implicit'\n", "rr_mrr['Strategy'] = rr_mrr['Strategy'].astype('category').cat.reorder_categories(['Raw', 'SingleEQ', 'GreedyEQ', 'GreedyReflect'])\n", "rr_mrr.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "papermill": { "duration": 2.872667, "end_time": "2020-05-07T17:23:30.050115", "exception": false, "start_time": "2020-05-07T17:23:27.177448", "status": "completed" }, "scrolled": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.catplot(x='Algorithm', y='MRR', row='Mode', col='DataSet', hue='Strategy', data=rr_mrr, kind='bar',\n", " sharey=False, margin_titles=True, aspect=1.5, height=1.8)\n", "# plt.savefig(fig_dir / 'rerank-perf.pdf')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "papermill": { "duration": 3.747158, "end_time": "2020-05-07T17:23:33.875007", "exception": false, "start_time": "2020-05-07T17:23:30.127849", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/MICHAELEKSTRAND/anaconda3/envs/bookfair/lib/python3.7/site-packages/plotnine/ggplot.py:729: PlotnineWarning: Saving 7 x 4 in image.\n", " from_inches(height, units), units), PlotnineWarning)\n", "/home/MICHAELEKSTRAND/anaconda3/envs/bookfair/lib/python3.7/site-packages/plotnine/ggplot.py:730: PlotnineWarning: Filename: figures/AlgoPerf/rerank-perf.pdf\n", " warn('Filename: {}'.format(filename), PlotnineWarning)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "make_plot(rr_mrr, p.aes(x='Algorithm', y='MRR', fill='Strategy'),\n", " p.geom_bar(stat='identity', position='dodge'),\n", " p.facet_grid('Mode ~ DataSet', scales='free_y'),\n", " p.scale_fill_brewer('qual', 'Dark2'),\n", " file='rerank-perf.pdf', width=7, height=4, legend_position='top', legend_title=p.element_blank())" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "papermill": { "duration": 0.14971, "end_time": "2020-05-07T17:23:34.104223", "exception": false, "start_time": "2020-05-07T17:23:33.954513", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "penalty = (perf_data.set_index(['DataSet', 'Implicit', 'Algorithm']).MRR - \\\n", " rerank_data.set_index(['DataSet', 'Implicit', 'Algorithm', 'Strategy']).MRR) / perf_data.set_index(['DataSet', 'Implicit', 'Algorithm']).MRR" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "papermill": { "duration": 0.105604, "end_time": "2020-05-07T17:23:34.289225", "exception": false, "start_time": "2020-05-07T17:23:34.183621", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\\begin{tabular}{lllrrr}\n", "\\toprule\n", " & & Strategy & GreedyEQ & GreedyReflect & SingleEQ \\\\\n", "DataSet & Implicit & Algorithm & & & \\\\\n", "\\midrule\n", "AZ & False & ALS & 3.23\\% & -0.57\\% & -5.60\\% \\\\\n", " & & II & 3.65\\% & -0.01\\% & 3.72\\% \\\\\n", " & & UU & -10.23\\% & 0.85\\% & -10.23\\% \\\\\n", " & True & ALS & 8.11\\% & 2.63\\% & 13.09\\% \\\\\n", " & & BPR & 6.18\\% & -0.98\\% & 10.32\\% \\\\\n", " & & II & 5.08\\% & 1.34\\% & 7.60\\% \\\\\n", " & & UU & 4.65\\% & 1.08\\% & 8.69\\% \\\\\n", "BX & False & ALS & 0.82\\% & -2.24\\% & 1.72\\% \\\\\n", " & & II & 19.48\\% & -10.85\\% & 35.42\\% \\\\\n", " & & UU & 10.70\\% & -14.50\\% & -5.12\\% \\\\\n", " & True & ALS & 6.89\\% & 3.59\\% & 15.99\\% \\\\\n", " & & BPR & 8.09\\% & 3.08\\% & 16.76\\% \\\\\n", " & & II & 5.56\\% & 2.46\\% & 12.03\\% \\\\\n", " & & UU & 4.24\\% & 1.48\\% & 9.66\\% \\\\\n", "GR & False & II & 7.40\\% & -0.50\\% & 10.13\\% \\\\\n", " & & UU & 25.01\\% & 17.91\\% & 33.56\\% \\\\\n", " & True & ALS & 4.75\\% & 3.08\\% & 11.36\\% \\\\\n", " & & BPR & 7.08\\% & 4.21\\% & 13.52\\% \\\\\n", " & & II & 3.23\\% & 1.42\\% & 6.65\\% \\\\\n", " & & UU & 3.77\\% & 2.17\\% & 7.58\\% \\\\\n", "\\bottomrule\n", "\\end{tabular}\n", "\n" ] } ], "source": [ "print(penalty.unstack().to_latex(float_format=lambda f: '{:.2f}%'.format(f*100)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "papermill": { "duration": 0.050159, "end_time": "2020-05-07T17:23:34.385794", "exception": false, "start_time": "2020-05-07T17:23:34.335635", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" }, "papermill": { "duration": 23.165471, "end_time": "2020-05-07T17:23:35.180362", "environment_variables": {}, "exception": null, "input_path": "AlgoPerf.ipynb", "output_path": "AlgoPerf.temp.ipynb", "parameters": {}, "start_time": "2020-05-07T17:23:12.014891", "version": "1.0.1" } }, "nbformat": 4, "nbformat_minor": 4 }