Изменения

Перейти к: навигация, поиск

Рекомендательные системы

1776 байт добавлено, 11:00, 8 января 2021
Нет описания правки
== Обзор и постановка задачи ==
Основная задача рекомендательных систем <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> {{---}} проинформировать пользователя о товарах или услугах, которые будут для него наиболее интересными и актуальными. Разнообразие таких систем можно проиллюстрировать основными характеристиками:
* предмет рекомендации;
=== 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>.
Однако у этого алгоритма есть недостатки:
=== Item-based алгоритм ===
Также имеется абсолютно симметричный алгоритм. Теперь будем считать, что объект понравится пользователю, если ему понравились похожие объекты.Предпочтение пользователя <tex>u</tex> к объекту <tex>i</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>.
У такого подхода остается недостаток в виде холодного старта и при этом рекомендации становятся тривиальными.
Применяя усеченное разложение, получим следующее:
<tex> R'_{n \times m} = U'_{n \times d} \times \Sigma '_{d \times d} \times V'^T_{d \times m} </tex>.
Из свойств сингулярного разложения мы знаем, что матрица <tex> R'_{n \times m} </tex> является наилучшим низкоранговым приближением с точки зрения средне-квадратичного отклонения. Несколько упростим запись выражения: запишем произведение первых двух матриц <tex> \tilde{U}_{n \times d} = U'_{n \times d} \times \Sigma '_{d \times d} </tex>, а матрицу <tex> V'^T_{d \times m} </tex> обозначим как <tex> \tilde{V}_{d \times m} </tex>. Получим формулу <tex> R'_{n \times m} = \tilde{U}_{n \times d} \times \tilde{V}_{d \times m} </tex>. Интерпретировать полученную формулу стоит следующим образом: приближенная матрица оценок может быть вычислена как произведение усеченных матриц пользователей и оценок.
Благодаря использованию такого усечения можно решить одну из главных проблем всех ранее упомянутых алгоритмов: ресурсоемкость вычислений.
[[Файл:3RecommendSVD.png|400px450px|thumb|right|SVD для рекомендательных систем.]]
Чтобы предсказать оценку пользователя <tex> u </tex> для объекта <tex> i </tex>, берём некоторый вектор <tex> p_u </tex> для данного пользователя и вектор данного объекта <tex> q_i </tex>. Получаем необходимое предсказание: <tex> \hat{r}_{ui} = \langle p_u,q_i \rangle </tex>.
==Численная оптимизация==
[[Файл:2.png|300px|thumb|right|Визуализация градиентного спуска.]]
Чтобы найти оптимальные параметры построенной модели необходимо оптимизировать следующий функционал:
<tex> \nabla J(\Theta) = (\dfrac{\partial J}{\partial \theta_1}, \dfrac{\partial J}{\partial \theta_2},\dots,\dfrac{\partial J}{\partial \theta_n})^T </tex>.
Шаг градиентного спуска можно записать следующим образом: <tex> \Theta_{t+1} = \Theta_t - \eta \nabla J(\Theta) </tex>, где <tex> \eta </tex> {{---}} коэффициент скорости обучения.
==Измерение качества рекомендаций==
* [[Оценка качества в задаче кластеризации]]
* [[Оценка качества в задачах классификации и регрессии]]
== Примечания ==<references/>
== Источники информации==
* [https://habr.com/ru/company/yandex/blog/241455/ Как работают рекомендательные системы.]
[[Категория: Машинное обучение]]
[[Категория: Рекомендательные системы]]
118
правок

Навигация