118
правок
Изменения
Нет описания правки
== Обзор и постановка задачи ==
Основная задача рекомендательных систем <ref>[https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 Рекомендательные системы]</ref> {{---}} проинформировать пользователя о товарах или услугах, которые будут для него наиболее интересными и актуальными. Разнообразие таких систем можно проиллюстрировать основными характеристиками:
* Предмет предмет рекомендации;* Цель цель рекомендации;* Контекст контекст рекомендации;* Источник источник рекомендации;* Степень степень персонализации;* Прозрачностьформат рекомендации;* Формат прозрачность рекомендации;* Алгоритмы.
В центре таких систем лежит матрица предпочтений. В этой матрице одна из осей отвечает за пользователей, вторая за объекты рекомендации. Заполнена же эта матрица значениями по заданной шкале (например от <tex>1</tex> до <tex>5</tex>). Каждый клиент с малой долей вероятностью оценивал все объекты рекомендацииТак как каждый пользователь обычно может оценить только небольшую часть объектов, поэтому задача то данная матрица очень разрежена. Задача системы {{---}} это обобщение информации и предсказание: какое отношение отношения пользователя к рекомендуемому объекту будет у пользователя(заполнение пропущенных значений матрицы).
* явно (англ. ''explicit feedback'', ''explicit ratings'');* неявно (англ. ''implicit feedback'', ''implicit ratings'').
Формализуем задачу. Имеется множество пользователей <tex> u \in U </tex>, множество объектов <tex> i \in I </tex> и множество событий <tex> (r_{ui}, u, i,\dots) \in D </tex> (действия, которые совершают пользователи с объектами). Каждое событие задается пользователем <tex> u </tex>, объектом <tex> i </tex>, своим результатом <tex> r_{ui} </tex> и, возможно, но не обязательно, другими характеристиками. По итогу от рекомендательной системы требуется:
* предсказать предсказывать предпочтениепользователя <tex> u </tex> к объекту <tex> i </tex>: <tex> \hat{r}_{ui} = Predict(u, i,\dots) \approx r_{ui}; </tex>* выдавать персональные рекомендациидля пользователя <tex> u </tex>: <tex> Recommend_k(u \mapsto (i_1,\dots, i_k) = Recommend_k(ui_1,\dots, i_k); </tex>* определять объекты, похожие объектына объект <tex>i</tex>: <tex> u \mapsto Similar_M(i) = (i_1,\dots, i_M) = Similar_M(i). </tex>
==Кластеризация пользователей==
Алгоритм можно разбить на следующие шаги:
Проблемы алгоритма:
* Нечего нечего рекомендовать новым пользователям, так как их невозможно определить отнести к какому-нибудь либо кластеру, а значит и рекомендовать им нечего;* Не не учитывается контекст и специфика пользователя;* Если если в кластере нет оценки объекта, то предсказание невозможно.
== Холодный старт ==
'''Холодный старт''' (англ. ''cold start'') {{---}} ситуация, когда ещё не накоплено достаточное количество данных для корректной работы рекомендательной системы.
}}
Данная проблема актуальна для новых объектов или объектов, которые с которыми пользователи редко покупаютсовершают действия. Если средний рейтинг посчитан по оценкам всего трёх пользователей, такая оценка явно не будет достоверной, и пользователи это понимают. Часто в таких ситуациях рейтинги искусственно корректируют.
'''Первый способ – .''' Предлагается показывать не среднее значение, а сглаженное среднее (англ. ''Damped Meandamped mean''). Смысл таков: при малом количестве оценок отображаемый рейтинг больше тяготеет к некому безопасному «среднему» показателю, а как только набирается достаточное количество новых оценок, «усредняющая» корректировка перестает действовать.
== User-based и item-based алгоритмы ==
=== User-based алгоритм ===Заменим жесткую кластеризацию на предположение, что фильм объект понравится пользователю, если он понравился его друзьямпохожим пользователям.Тогда предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> можно записать следующим образом:
<tex> \hat{r}_{ui} = \bar{r}_u + \dfrac{\sum_{v \in U_i}{}{sim(u, v)(r_{vi} - \bar{r}_v)}}{\sum_{v \in {U_i}}{}{sim(u, v)}} </tex>, где <tex>\bar{r}_u</tex> {{---}} средняя оценка, проставленная пользователем <tex> u </tex>, а <tex> sim(u,v) </tex> {{---}} мера схожести пользователей <tex>u</tex> и <tex>v</tex>.
Однако у этого алгоритма есть недостатки:
* Холодный холодный старт.— новые объекты никому не рекомендуются;* Нечего нечего рекомендовать новым/нетипичным пользователям.
<tex> \hat{r}_{ui} = \bar{r}_i + \dfrac{\sum_{j \in I_u}{}{sim(i, j)(r_{uj} - \bar{r}_j)}}{\sum_{j \in {I_u}}{}{sim(i, j)}} </tex>, где <tex>\bar{r}_i</tex> {{---}} средняя оценка, проставленная объекту <tex> i </tex>, а <tex> sim(i, j) </tex> {{---}} мера схожести объектов <tex>i</tex> и <tex>j</tex>.
У такого подхода остается недостаток в виде холодного старта и при этом рекомендации становятся тривиальными.
==Алгоритм SVD==
Помимо предсказания оценок, алгоритм позволяет выявлять скрытые признаки объектов и интересы пользователей.
Например, может так получиться, что на первой координате вектора у каждого пользователя будет стоять число, показывающее, похож ли пользователь больше на мальчика или на девочку, на второй координате — число, отражающее примерный возраст пользователя. У фильма же первая координата будет показывать, интересен ли он больше мальчикам или девочкам, а вторая — какой возрастной группе пользователей он интересен.
Однако есть и свои проблемыданный алгоритм имеет ряд проблем: *матрица оценок <tex> R </tex> матрица оценок полностью не известна, поэтому просто взять SVD разложение не получитсяпредставляется возможным;*SVD Сингулярное разложение не единственное, поэтому даже если какое-то разложение будет найдено, нет гарантии, что первая координата в нем будет соответствовать некоторым выбранным характеристикам пользователя.
==Решение проблемы матрицы оценок==
Для решения проблем, связанных с матрицей оценок <tex> \hat{r}_{ui}(\Theta) = p^T_uq_i R</tex>,построим модель.
Модель будет зависеть от следующих параметров: вектор пользователей и вектор объектов. Для заданных параметров <tex> u </tex> и <tex>i</tex> возьмем вектор пользователя <tex> p_u </tex> и вектор объекта <tex>q_i</tex>, затем для предсказания оценки получим их скалярное произведение, как и в алгоритме SVD:<tex> \hat{r}_{ui}(\Theta) = p^T_uq_i </tex>, где <tex> \Theta = \{p_u,q_i | \mid u \in U, i \in I\} </tex>.
Но вектора пока не известны, их нужно получить. Имеются оценки пользователей, при помощи которых можно можно найти оптимальные параметры, при которых модель предскажет оценки наилучших наилучшим образом:<tex> E_{(u,i)}(\hat{r}_{ui}(\Theta) - r_{ui})^2 \to min_{\Theta} </tex>.
==Численная оптимизация==
<tex> \nabla J(\Theta) = (\dfracsum_{(u,i) \partial Jin D}{\partial \theta_1}, \dfrac(p^T_uq_i - r_{\partial Jui}{\partial \theta_2)^2},+ \dots,lambda (\dfracsum_u{||p_u||^2} + \partial J}sum_i{\partial \theta_n||q_i||^2})^T </tex>.
<tex> \Theta_nabla J(\Theta) = (\dfrac{t+1\partial J}{\partial \theta_1} = , \dfrac{\partial J}{\partial \theta_2},\Theta_t - dots,\eta dfrac{\nabla partial J(}{\partial \Thetatheta_n}) ^T </tex>.
==Измерение качества рекомендаций==
Данный способ, хоть и является стандартным для измерением качества, имеет ряд недостатков:* Пользователи пользователи с большим разбросом оценок будут влиять на значение метрики больше, чем остальные;* Ошибка ошибка в предсказании высокой оценки имеет такой же вес, что и ошибка в предсказании низкой оценки;* Есть есть риск плохого ранжирования при почти идельаной идеальной RMSE и наоборот.
Существуют при этом и другие метрики {{---}} метрики ранжирования, на основе полноты и точности. Однако они не так популярны и используются значительно реже.
==См. также==
* [[Линейная регрессияКластеризация]]* [[Логистическая регрессияРегуляризация]]* [[Стохастический градиентный спускОценка качества в задаче кластеризации]]* [[Метод опорных векторов (SVM)Оценка качества в задачах классификации и регрессии]]== Примечания == <references/>
== Источники информации==
* [https://habr.com/ru/company/yandex/blog/241455/ Как работают рекомендательные системы.]
* [https://neurohive.io/ru/osnovy-data-science/rekomendatelnye-sistemy-modeli-i-ocenka/ Анатомия рекомендательных систем.]
* [http://www.mathnet.ru/links/4d5ff6f460c0d9409ce16b558725408d/ista26.pdf Рекомендательные системы: обзор основных постановок и результатов.]
[[Категория: Машинное обучение]]
[[Категория: Рекомендательные системы]]