{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "env: MKL_NUM_THREADS=12\n",
      "env: OMP_NUM_THREADS=12\n"
     ]
    }
   ],
   "source": [
    "%env MKL_NUM_THREADS=12\n",
    "%env OMP_NUM_THREADS=12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n",
    "\n",
    "import numpy as np\n",
    "import scipy as sp\n",
    "import pandas as pd\n",
    "from ipypb import track\n",
    "\n",
    "from polara.evaluation import evaluation_engine as ee\n",
    "from polara.evaluation.pipelines import random_grid, find_optimal_config\n",
    "from polara.recommender.external.turi.turiwrapper import TuriFactorizationRecommender\n",
    "\n",
    "from data_preprocessing import (get_amazon_data,\n",
    "                                get_similarity_data,\n",
    "                                prepare_data_model)\n",
    "from utils import (report_results, save_results,\n",
    "                   apply_config, print_data_stats,\n",
    "                   save_training_time, save_cv_training_time)\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 42"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "experiment_name = 'sgd'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Experiment setup"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_labels = ['AMZe', 'AMZvg']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# according to https://apple.github.io/turicreate/docs/api/generated/turicreate.recommender.ranking_factorization_recommender.RankingFactorizationRecommender.html\n",
    "init_config = dict(with_data_feedback = False, # implicit case\n",
    "                   ranking_optimization = True,\n",
    "                   solver = 'adagrad',\n",
    "                   sgd_step_size = 0, # let Turi autotune it\n",
    "                   seed = seed,\n",
    "                   max_iterations = 25,\n",
    "                   other_tc_params = {}\n",
    "                   )\n",
    "mf_init_config = dict.fromkeys(data_labels, {'SGD': init_config}) # standard scenario"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = {\n",
    "          'regularization': [1e-10, 3e-10, 1e-9, 3e-9, 1e-8, 3e-8, 1e-7, 3e-7, 1e-6, 3e-6],\n",
    "          'linear_regularization': [1e-10, 3e-10, 1e-9, 3e-9, 1e-8, 3e-8, 1e-7, 3e-7, 1e-6, 3e-6],\n",
    "          'rank': [40] # for initial tuning (exploration)\n",
    "         }\n",
    "\n",
    "if init_config['solver'] == 'adagrad':\n",
    "    params.update({\n",
    "                   'adagrad_momentum_weighting': [0.9, 0.95, 0.99]\n",
    "                  })      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "ranks_grid = [1, 5, 15, 30, 50, 75, 100, 150, 200, 250, 300, 400,\n",
    "              500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "mf_ranks = {'AMZe': ranks_grid,\n",
    "            'AMZvg': ranks_grid\n",
    "           }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "topk_values = [1, 3, 10, 20, 30]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_metric = 'mrr'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dict = dict.fromkeys(data_labels)\n",
    "meta_dict = dict.fromkeys(data_labels)\n",
    "similarities = dict.fromkeys(data_labels)\n",
    "sim_indices = dict.fromkeys(data_labels)\n",
    "feature_idx = dict.fromkeys(data_labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_data = [data_dict, similarities, sim_indices, meta_dict]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Amazon Electronics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "lbl = 'AMZe'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dict[lbl], meta_dict[lbl] = get_amazon_data('/data/recsys/amazon/ratings_Electronics.csv',\n",
    "                                                 meta_path='/data/recsys/amazon/meta/meta_Electronics.json.gz',\n",
    "                                                 implicit=True,\n",
    "                                                 pcore=5,\n",
    "                                                 filter_no_meta=True,\n",
    "                                                 flat_categories=True) # take only bottom level categories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "similarities[lbl], sim_indices[lbl], feature_idx[lbl] = get_similarity_data(meta_dict[lbl])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(meta_dict[lbl].applymap(len).sum(axis=1)==0).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Amazon Video Games"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "lbl = 'AMZvg'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dict[lbl], meta_dict[lbl] = get_amazon_data('/data/recsys/amazon/ratings_Video_Games.csv',\n",
    "                                                 meta_path='/data/recsys/amazon/meta/meta_Video_Games.json.gz',\n",
    "                                                 implicit=True,\n",
    "                                                 pcore=5,\n",
    "                                                 filter_data={'categories': ['Games']}, # filter uniformative category\n",
    "                                                 filter_no_meta=True,\n",
    "                                                 flat_categories=True) # take only bottom level categories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "similarities[lbl], sim_indices[lbl], feature_idx[lbl] = get_similarity_data(meta_dict[lbl])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(meta_dict[lbl].applymap(len).sum(axis=1)==0).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AMZe\n",
      "{'userid': 124895, 'asin': 44843}\n",
      "density 0.019153791836615672\n",
      "similarity matrix density 1.1054998336712965\n",
      "AMZvg\n",
      "{'userid': 14251, 'asin': 6858}\n",
      "density 0.13281340440589384\n",
      "similarity matrix density 9.081814734274188\n"
     ]
    }
   ],
   "source": [
    "print_data_stats(data_labels, all_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Standard experiment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def prepare_recommender_models(data_label, data_models, config):\n",
    "    data_model = data_models[data_label]\n",
    "    mf = TuriFactorizationRecommender(data_model, item_side_info=None)\n",
    "    mf.method = 'SGD'\n",
    "    models = [mf]\n",
    "    apply_config(models, config, data_label)\n",
    "    return models\n",
    "\n",
    "def fine_tune_mf(model, params, label, ntrials=60, record_time_as=None):\n",
    "    param_grid, param_names = random_grid(params, n=ntrials)\n",
    "    best_mf_config, mf_scores = find_optimal_config(model, param_grid, param_names,\n",
    "                                                    target_metric,\n",
    "                                                    return_scores=True,\n",
    "                                                    force_build=True,\n",
    "                                                    iterator=lambda x: track(x, label=label))\n",
    "    model_config = {model.method: dict(zip(param_names, best_mf_config))}\n",
    "    model_scores = {model.method: mf_scores}\n",
    "    try:\n",
    "        if record_time_as:\n",
    "            save_training_time(f'{experiment_name}_{record_time_as}', model, mf_scores.index, label)\n",
    "    finally:\n",
    "        return model_config, model_scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## tuning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "config = {}\n",
    "scores = {}\n",
    "times = {}\n",
    "data_models = {}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'with_data_feedback': False,\n",
       " 'ranking_optimization': True,\n",
       " 'solver': 'adagrad',\n",
       " 'sgd_step_size': 0,\n",
       " 'seed': 42,\n",
       " 'max_iterations': 25,\n",
       " 'other_tc_params': {}}"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mf_init_config['AMZe']['SGD']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:0; max-width:15ex; vertical-align:middle; text-align:right\"></span>\n",
       "<progress style=\"width:60ex\" max=\"2\" value=\"2\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">2/2</span>\n",
       "<span class=\"Time-label\">[44:09<03:39, 1324.27s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[A\u001b[2K\r",
       " [████████████████████████████████████████████████████████████] 2/2 [44:09<03:39, 1324.27s/it]\u001b[B"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZe</span>\n",
       "<progress style=\"width:45ex\" max=\"60\" value=\"60\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">60/60</span>\n",
       "<span class=\"Time-label\">[40:15<00:36, 40.25s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "           AMZe [█████████████████████████████████████████████] 60/60 [40:15<00:36, 40.25s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZvg</span>\n",
       "<progress style=\"width:45ex\" max=\"60\" value=\"60\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">60/60</span>\n",
       "<span class=\"Time-label\">[03:38<00:03, 3.63s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "          AMZvg [█████████████████████████████████████████████] 60/60 [03:38<00:03, 3.63s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for label in track(data_labels):\n",
    "    data_models[label] = prepare_data_model(label, *all_data, seed)\n",
    "    model, = prepare_recommender_models(label, data_models, mf_init_config)\n",
    "    config[label], scores[label] = fine_tune_mf(model, params, label, ntrials=60, record_time_as='param')\n",
    "del model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/envs/py36/lib/python3.6/site-packages/pandas/plotting/_core.py:1001: UserWarning: Attempted to set non-positive left xlim on a log-scaled axis.\n",
      "Invalid limit will be ignored.\n",
      "  ax.set_xlim(left, right)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# no meta\n",
    "report_results('tuning', scores);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'AMZe': {'SGD': {'regularization': 1e-06,\n",
       "   'linear_regularization': 1e-08,\n",
       "   'rank': 40,\n",
       "   'adagrad_momentum_weighting': 0.9}},\n",
       " 'AMZvg': {'SGD': {'regularization': 3e-06,\n",
       "   'linear_regularization': 1e-07,\n",
       "   'rank': 40,\n",
       "   'adagrad_momentum_weighting': 0.99}}}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "config"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### saving data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_results(f'{experiment_name}_param', config=config, tuning=scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## rank estimation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "rank_config = {}\n",
    "rank_scores = {}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:0; max-width:15ex; vertical-align:middle; text-align:right\"></span>\n",
       "<progress style=\"width:60ex\" max=\"2\" value=\"2\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">2/2</span>\n",
       "<span class=\"Time-label\">[01:30:50<07:52, 2725.15s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[A\u001b[2K\r",
       " [████████████████████████████████████████████████████████████] 2/2 [01:30:50<07:52, 2725.15s/it]\u001b[B"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZe</span>\n",
       "<progress style=\"width:45ex\" max=\"21\" value=\"21\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">21/21</span>\n",
       "<span class=\"Time-label\">[01:22:58<01:49, 237.07s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "           AMZe [█████████████████████████████████████████████] 21/21 [01:22:58<01:49, 237.07s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZvg</span>\n",
       "<progress style=\"width:45ex\" max=\"21\" value=\"21\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">21/21</span>\n",
       "<span class=\"Time-label\">[07:52<00:10, 22.46s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "          AMZvg [█████████████████████████████████████████████] 21/21 [07:52<00:10, 22.46s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for label in track(data_labels):\n",
    "    model, = prepare_recommender_models(label, data_models,\n",
    "                                        [mf_init_config, config]) # initiate with optimal config\n",
    "    rank_config[label], rank_scores[label] = fine_tune_mf(model, {'rank': mf_ranks[label]},\n",
    "                                                          label, ntrials=0, record_time_as='rank')\n",
    "del model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xt8lOWd///XhxyBBBJCOAYMSFROGiWiVtt6qEpPYlstaFfRWtFWetzd32q37qqtW+y3Xduq7YqKgluL1rbbWCvUY1sUlQRRCYhG5BACcgrhmPPn98fcwSFM7gwhYUjyfj4e82Du677ua64bmHnPfd333Je5OyIiIq3plegOiIjIsU1BISIioRQUIiISSkEhIiKhFBQiIhJKQSEiIqEUFCIiEkpBIRInM3vJzKrMLC2q7BEzczO7pEXdnwfl1wTLZWa2p8Wj1syajvJuiBw2BYVIHMwsH/g44MAlLVa/C8yIqpsMXA6831zm7uPdPaP5AQwB1gA/7Nyeixw5BYVIfK4GXgUeISoUAk8BZ5tZdrA8BXgL2BzS3oPABuD25gIz+5yZLTeznWb2ipmd3FGdFzkSCgqR+FwN/CZ4XGxmg6PW1QDFwPSouvNba8jMvgWcDVzp7k1B2WnAXOAGIAe4HyiOHuYSSRQFhUgbzOwc4DjgCXcvJTKkdGWLavOBq82sP/BJ4P9aaetM4L+Ay919W9Sq64H73f01d29093lALXBmx+6NyOFTUIi0bQbw16gP9sdoMfzk7ouBXOAHwJ/dfX/LRsxsIPA74BZ3f7XF6uOAfw6GnXaa2U5gBDCsY3dF5PAlJ7oDIscyM+sNfBlIMrPmcw5pQJaZndKi+v8C/wGcF6OdXkQC5mV3vyfGS20A7nT3Ozus8yIdREEhEu5SoBGYCNRFlT9B5FxEtF8C/wD+HqOd24gcIXyxldd5APijmT0HvA70Ac4F/u7uu9vZd5EOoaAQCTcDeNjd10cXmtm9RILhueYyd98BPN9KOz8A6oHNZtZy3Th3LzGz64F7gQJgP7CY2KEjclSZJi4SEZEwOpktIiKhFBQiIhJKQSEiIqEUFCIiEqpbXPU0cOBAz8/PT3Q3RES6lNLS0m3unttWvW4RFPn5+ZSUlCS6GyIiXYqZrYunnoaeREQklIJCRERCKShERCRUtzhHEUt9fT0VFRXU1NQkuiudJj09nby8PFJSUhLdFRHpYHtqG9hX18CgzPREd6X7BkVFRQWZmZnk5+cT4946XZ67s337dioqKhg1alSiuyMiHah03Q5u+s0bNDQ18dK/nkdGWmI/qrvt0FNNTQ05OTndMiQAzIycnJxufcQk0tO4Ow/+Yw3T7o9MV7JtTx3zXlmb2E7RjYMC6LYh0ay7759IT7Krpp5v/GYZP3p6FeefNIhF3/0E5580iDl/X8OumvqE9q1bB4WISFewsnIXl9yzmL+u/JB//8xY7r9qEv17p/DdT51A9f56Hl68NqH9U1B0sjvvvJPx48dz8sknU1hYyGuvvUZDQwPf//73KSgooLCwkMLCQu6886OJzZKSkigsLGT8+PGccsop/Pd//zdNTU0J3AsR6SxPLN3AF371MvvrG1kw80yu/8ToA6MFE/P6c9G4wTy4eA3V+xJ3VNFtT2YfC5YsWcKf//xnli1bRlpaGtu2baOuro4f/OAHbN68mbfffpv09HR2797Nz372swPb9e7dm+XLlwOwZcsWrrzySqqrq7n99tsTtSsi0sEam5zbnypj/pJ1nD0mh19MP5WBGWmH1PvuhSfw11/8gwcXr+GfLzoxAT3VEUWn2rRpEwMHDiQtLfKPP3DgQLKysnjggQe45557SE+PXPaWmZnJbbfdFrONQYMGMWfOHO699140yZRI91BT38hNv1nG/CXruP7jo5j/1TNihgTA2KH9+OzEocxd/AFVe+ti1ulsPeKI4vanylhZuatD2xw3rB//+fnxoXUuuugi7rjjDk444QQ+9alPMW3aNLKzsxk5ciSZmZlxv9bo0aNpampiy5YtDB48+Ei7LiIJtHNfHdfPL6FkXRX/8blxfPWcti9v/86nCvjLik3c//c13Pzpk45CLw+mI4pOlJGRQWlpKXPmzCE3N5dp06bx0ksvHVTn4YcfprCwkBEjRrBhw4ZW29LRhEjXt3Hnfi77nyW8uaGae644Na6QACgYnMklpwxj3itr2bantpN7eagecUTR1jf/zpSUlMS5557Lueeey8SJE7n//vtZv349u3fvJjMzk2uvvZZrr72WCRMm0NjYGLONNWvWkJSUxKBBg45y70Wko7yzeRcz5r7OvrpG5n11Mmcdn3NY23/7ggKeerOS/3npfX7wuXGd1MvYdETRiVavXs177713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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# no meta\n",
    "report_results('rank', {lbl: v.sort_index() for lbl, scr in rank_scores.items() for k, v in scr.items()});"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'AMZe': {'SGD': {'rank': 1500}}, 'AMZvg': {'SGD': {'rank': 1500}}}"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rank_config"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### saving data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_results(f'{experiment_name}_rank', config=rank_config, tuning=rank_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## cross-validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:0; max-width:15ex; vertical-align:middle; text-align:right\"></span>\n",
       "<progress style=\"width:60ex\" max=\"2\" value=\"2\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">2/2</span>\n",
       "<span class=\"Time-label\">[39:47<03:38, 1193.26s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[A\u001b[2K\r",
       " [████████████████████████████████████████████████████████████] 2/2 [39:47<03:38, 1193.26s/it]\u001b[B"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZe</span>\n",
       "<progress style=\"width:45ex\" max=\"5\" value=\"5\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">5/5</span>\n",
       "<span class=\"Time-label\">[36:08<07:19, 433.66s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "           AMZe [█████████████████████████████████████████████] 5/5 [36:08<07:19, 433.66s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div><span class=\"Text-label\" style=\"display:inline-block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:15ex; max-width:15ex; vertical-align:middle; text-align:right\">AMZvg</span>\n",
       "<progress style=\"width:45ex\" max=\"5\" value=\"5\" class=\"Progress-main\"/></progress>\n",
       "<span class=\"Progress-label\"><strong>100%</strong></span>\n",
       "<span class=\"Iteration-label\">5/5</span>\n",
       "<span class=\"Time-label\">[03:38<00:44, 43.61s/it]</span></div>"
      ],
      "text/plain": [
       "\u001b[A\u001b[2K\r",
       "          AMZvg [█████████████████████████████████████████████] 5/5 [03:38<00:44, 43.61s/it]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "result = {}\n",
    "for label in track(data_labels):\n",
    "    models = prepare_recommender_models(label, data_models, [mf_init_config, config, rank_config])\n",
    "    result[label] = ee.run_cv_experiment(models,\n",
    "                                         fold_experiment=ee.topk_test,\n",
    "                                         topk_list=topk_values,\n",
    "                                         ignore_feedback=True,\n",
    "                                         iterator=lambda x: track(x, label=label))\n",
    "    save_cv_training_time(experiment_name, models, label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# no meta\n",
    "report_results('topn', result, target_metric);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>AMZe</th>\n",
       "      <th>AMZvg</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>type</th>\n",
       "      <th>metric</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>relevance</th>\n",
       "      <th>hr</th>\n",
       "      <td>0.050090</td>\n",
       "      <td>0.143850</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ranking</th>\n",
       "      <th>mrr</th>\n",
       "      <td>0.021451</td>\n",
       "      <td>0.062757</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      AMZe     AMZvg\n",
       "type      metric                    \n",
       "relevance hr      0.050090  0.143850\n",
       "ranking   mrr     0.021451  0.062757"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat({lbl: res.mean(level='top-n').loc[10, :'ranking'] for lbl, res in result.items()}, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### saving data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_results(experiment_name, cv=result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}