{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Майнор по Анализу Данных, Группа ИАД-2\n", "## 24/05/2017 Рекомендательные системы" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.figsize'] = (12,5)\n", "\n", "# Для кириллицы на графиках\n", "font = {'family': 'Verdana',\n", " 'weight': 'normal'}\n", "plt.rc('font', **font)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Коллаборативная фильтрация" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Метод коллаборативной фильтрации работает по принципу похожести пользователей (**User-based collaborative filtering**) или похожести товаров (**Item-based collaborative filtering**). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Введем обозначения:\n", "* $R_{ui}$ - оценка, которую дал пользователь $u$ товару $i$\n", "* $\\hat{R}_{ui}$ - прогноз оценки\n", "* $s_{uv}$ - похожесть между пользователями $u$ и $v$\n", "* $s_{ij}$ - похожесть между товарами $i$ и $j$\n", "* $N(u)$ - Множество пользователей, наиболее похожих на $u$\n", "* $N(i)$ - Множество товаров, наиболее похожих на $i$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Прогноз **user-based collaborative filtering** вычисляется по следующей формуле\n", "$$ \\hat{R}_{ui} = \\frac{\\sum_{v \\in N(u)} s_{uv} R_{vi}}{\\sum_{v \\in N(u)} s_{uv}} $$\n", "\n", "Походесть между пользователями можно вычислить разными способами, например с помощью корреляции или косинусной меры\n", "$$ s_{uv} = \\frac{R_u^T R_v}{\\lVert R_u \\rVert_2 \\lVert R_v \\rVert_2}$$\n", "Стоит отметить, что при подсчете похожести должны учитываться только те товары, для которых и у $u$ и у $v$ есть какая-то оценка" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "