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 dots) = (i_1, ...\dots, i_k) = Recommend_k(u, ...) ; </tex>* определять объекты, похожие объектына объект <tex>i</tex>: <tex> u \mapsto Similar_M(i) = (i_1, ...\dots, i_M) = Similar_M(i) . </tex>
==Кластеризация пользователей==
{{Определение
|definition=
'''Коллаборативная фильтрация''' (англ. ''collaborative filtering'') {{---}} это один из методов построения прогнозов (рекомендаций) в рекомендательных системах, использующий известные предпочтения (оценки) группы пользователей для прогнозирования неизвестных предпочтений другого пользователя.
}}
Основная идея метода {{- --}} похожим пользователям нравятся похожие объекты.
Алгоритм можно разбить на следующие шаги:
Проблемы алгоритма:
* Нечего нечего рекомендовать новым пользователям, так как их невозможно определить отнести к какому-нибудь либо кластеру,а значит и рекомендовать им нечего.;* Не не учитывается контекст и специфика пользователя.;* Если если в кластере нет оценки объекта, то предсказание невозможно.
== Холодный старт ==
{{Определение
|definition=
'''Холодный старт''' (англ. ''cold start'') {{---}} ситуация, когда ещё не накоплено достаточное количество данных для корректной работы рекомендательной системы.
}}
Данная проблема актуальна для новых объектов или объектов, которые с которыми пользователи редко покупаютсовершают действия. Если средний рейтинг посчитан по оценкам всего трёх пользователей, такая оценка явно не будет достоверной, и пользователи это понимают. Часто в таких ситуациях рейтинги искусственно корректируют.
'''Первый способ – .''' Предлагается показывать не среднее значение, а сглаженное среднее (англ. ''Damped Meandamped mean''). Смысл таков: при малом количестве оценок отображаемый рейтинг больше тяготеет к некому безопасному «среднему» показателю, а как только набирается достаточное количество новых оценок, «усредняющая» корректировка перестает действовать.
== User-based и item-based алгоритмы ==
=== User-based алгоритм ===Заменим жесткую кластеризацию на предположение, что фильм объект понравится пользователю, если он понравился его друзьямпохожим пользователям.Тогда предпочтение пользователя <tex>u</tex> к объекту <tex>i</tex> можно записать следующим образом:
<tex> \hat{r}_{ui} = \bar{r}_u + \fracdfrac{\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 + \fracdfrac{\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> UUR </tex> с использованием сингулярного разложения: <tex> R_{n \times m} = U_{n \times n} \times \Sigma_{n \times m} \times V^T T_{m \times m} </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} = I_nU'_{n \times d} \times \Sigma '_{d \times d} </tex>, а матрицу <tex>VVV'^T T_{d \times m} </tex> обозначим как <tex> \tilde{V}_{d \times m} </tex>. Получим формулу <tex> R'_{n \times m} = I_m \tilde{U}_{n \times d} \times \tilde{V}_{d \times m} </tex>. Интерпретировать полученную формулу стоит следующим образом: приближенная матрица оценок может быть вычислена как произведение усеченных матриц пользователей и оценок.
Помимо предсказания оценок, алгоритм позволяет выявлять скрытые признаки объектов и интересы пользователей.
Например, может так получиться, что на первой координате вектора у каждого пользователя будет стоять число, показывающее, похож ли пользователь больше на мальчика или на девочку, на второй координате — число, отражающее примерный возраст пользователя. У фильма же первая координата будет показывать, интересен ли он больше мальчикам или девочкам, а вторая — какой возрастной группе пользователей он интересен.
==Решение проблемы матрицы оценок==
Для решения проблем, связанных с матрицей оценок <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> RMSE = \sqrt{\fracdfrac{1}{|D|} \sum_{(u,i) \in D}{(\hat{r}_{ui} - r_{ui})^2}} </tex>.
==См. также==
* [[Кластеризация]]
* [[Регуляризация]]
* [[Оценка качества в задаче кластеризации]]
* [[Оценка качества в задачах классификации и регрессии]]
== Примечания ==
<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 Рекомендательные системы: обзор основных постановок и результатов.]
[[Категория: Машинное обучение]]
[[Категория: Рекомендательные системы]]