{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4b88f7aa-fe8c-4615-9a2d-50805791cacf",
   "metadata": {},
   "source": [
    "# Рекомендательные системы\n",
    "\n",
    "Существуют различные подходы к построению рекомендательных систем: коллаборативный (User/Item Based kNN, Matrix factorization (ALS, SVD, FM, WR-MF, BPRMF), Neural collaborative filtering (NCF)), Learning to Rank (LTR: Pointwise, Pairwise(RankNet), Listwise(LambdaRank)), Sequential Recommendation (RNN, SASRec, FISSA), Collaborative Memory Networks (CMN), Collaborative Variational Autoencoder (CVAE), Reinforcement Learning (DDPG), Co-training recommendation, ... Многие описаны в хорошей обзорной статье на хабре ([часть 1](https://habr.com/ru/companies/prequel/articles/567648/), [часть 2](https://habr.com/ru/companies/prequel/articles/573880/)).\n",
    "\n",
    "1. Выполните все задания в файле example.ipynb (см. example.zip) для данных example_data.csv. Добейтесь успешной проверки в конце файла.\n",
    "2. Возьмите датасет вашего варианта (список см. ниже), сконвертируйте его в требуемую форму (см. example.zip) и запустите для него код файла example.ipynb. \n",
    "3. Запрограммируйте случайные рекомендации, а затем одинаковые для всех пользователей самые популярные. Составьте таблицу с двумя строчками: cold start, hot start, и четырьмя столбцами: random, popular, kNN, SVD. Заполните ее значениями метрики качества MAP@k для k=5 (или больше, если много нулевых значений).\n",
    "4. Для метода kNN, cold_start=True и False для каждого пользователя из test выведите процент товаров, для которых предсказание рейтинга совпадает с kNN.default_prediction(). Что означают полученные результаты?\n",
    "4. Возьмите одного пользователя из test для cold_start=True и выясните, отличаются ли первые k рекомендаций для него по методу kNN от самых популярных. Если да, то объясните почему.\n",
    "5. Найдите пользователя из test для cold_start=False у которого значение details['actual_k'], возвращаемое функцией predict отлично от нуля. Найдите в списке его рекомендаций позиции товаров, которые покупали его соседи.\n",
    "\n",
    "## [Варианты датасетов](https://cseweb.ucsd.edu/~jmcauley/datasets.html):\n",
    "1. Twitch. [Описание](https://github.com/JRappaz/liverec). [Данные](https://drive.google.com/drive/folders/1BD8m7a8m7onaifZay05yYjaLxyVV40si)\n",
    "2. [Food.com Recipe & Review Data](https://www.kaggle.com/datasets/shuyangli94/food-com-recipes-and-user-interactions)\n",
    "3. [Amazon Product Reviews](https://cseweb.ucsd.edu/~jmcauley/datasets/amazon_v2/). Нужно выбрать только одну категорию из таблицы \"Per-category data\"\n",
    "4. [Marketing Bias data](https://github.com/MengtingWan/marketBias). Выберите один из двух датасетов: ModCloth и Electronics\n",
    "5. [Google Local Reviews (2021)](https://jiachengli1995.github.io/google/index.html). \n",
    "6. [Google Restaurants](https://www.kaggle.com/datasets/hwwang98/google-restaurants)\n",
    "7. [Steam Video Game and Bundle Data](https://cseweb.ucsd.edu/~jmcauley/datasets.html#steam_data)\n",
    "8. [Goodreads Book Reviews](https://sites.google.com/eng.ucsd.edu/ucsdbookgraph/home)\n",
    "9. [Clothing Fit Data](https://cseweb.ucsd.edu/~jmcauley/datasets.html#clothing_fit)\n",
    "10. [Product Exchange/Bartering Data](http://swapit.github.io/)\n",
    "11. [Behance Community Art Data](https://drive.google.com/drive/folders/0B9Ck8jw-TZUEc3NlMjVXdDlPU1k?resourcekey=0-6_8ykn0o4fLc5fuTEm91xA)\n",
    "12. [Social Recommendation Data](https://cseweb.ucsd.edu/~jmcauley/datasets.html#social_data)\n",
    "13. [Social circles data](https://cseweb.ucsd.edu/~jmcauley/datasets.html#socialcircles). Нужно взять Google Plus\n",
    "14. [MovieLens](https://grouplens.org/datasets/movielens/)\n",
    "15. [WikiLens](https://grouplens.org/datasets/wikilens/)\n",
    "16. [Book-Crossing](https://grouplens.org/datasets/book-crossing/)\n",
    "17. [Book Genome Dataset](https://grouplens.org/datasets/book-genome/)\n",
    "18. [Jester](https://goldberg.berkeley.edu/jester-data/)\n",
    "19. [Rating Disposition](https://grouplens.org/datasets/rating-disposition-2023/)\n",
    "20. [Learning from Sets of Items in Recommender Systems](https://grouplens.org/datasets/learning-from-sets-of-items-2019/)\n",
    "21. [User personality and user satisfaction](https://grouplens.org/datasets/personality-2018/)\n",
    "22. [Investigating Serendipity](https://grouplens.org/datasets/serendipity-2018/)\n",
    "23. [Delicious Bookmarks](https://grouplens.org/datasets/hetrec-2011/)\n",
    "24. [Last.FM](https://grouplens.org/datasets/hetrec-2011/)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "36093137-9fa9-4b90-be30-66719bc2dfca",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
